diff --git a/build.zig b/build.zig index 4c175cc..3b00561 100644 --- a/build.zig +++ b/build.zig @@ -13,12 +13,12 @@ const engineDepList = [_][]const u8{ "assets", "audio", "core", - "graphics", "papyrus", "platform", "physics", - "ui", - "vkImgui", + // "graphics", + // "ui", + // "vkImgui", }; const BuildSystem = @This(); @@ -110,20 +110,64 @@ pub fn addProgram(self: *BuildSystem, opts: AddProgramOptions) *std.Build.Step.C mod.addImport("Backlog", self.nw_mod); exe.root_module.addOptions("BacklogOptions", self.options); - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/triangle_mesh.vert"), "triangle_mesh_vert"); - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/default_lit.frag"), "default_lit"); + // I want to generate definitions from the spirv-reflect-tool during pre-build. + // + // shaders will now be part of content, not code. However. .zig code definitions will be generated + // from content via the build.zig script. + // + // heres some thoughts: + // + // -Dupdate_shaders=true + // + // -Dupdate_shaders basically adds a run step to the build process 'python', 'tools/scripts/cook-shaders.py' + // + // 1. ensure spirv-reflect is compiled. + // 2. shadercross cooker generates all shader outputs - specifically spv files. they are output to content/_shaders/ + // - search paths for shaders: + // - content/shaders/** + // - engine//shaders/** + // - shaders must have a unique name across the entire project, naming scheme should be .shadername..hlsl + // 3. spirv-cross --reflect is called on each shader, updating the content/_shaders/defs/shader-name.json folder with up to date .json files + // + // final tree + // + // engine/ + // - ui/ + // - shaders/ + // - papyrus.rect.vert.hlsl + // content/ + // - _shaders/ + // - def/ + // papyrus.rect.vert.json + // - msl/ + // papyrus.rect.vert.msl + // - spv/ + // papyrus.rect.vert.spv + // - dxil/ + // papyrus.rect.vert.dxil + // + // + // During build: + // 1. spirv-reflect is called on each json in each folder and .zig shader interfaces added to the executable as a global import. + // 2. if -Dupdate_shaders is not + // + // At any time: + // asset-cooker will cook shaders and place them under content/_shaders//. - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/debug.vert"), "debug_vert"); - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/debug.frag"), "debug_frag"); + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/triangle_mesh.vert"), "triangle_mesh_vert"); + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/default_lit.frag"), "default_lit"); - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/skybox/skybox.vert"), "skybox_vert"); - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/skybox/skybox.frag"), "skybox_frag"); + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/debug.vert"), "debug_vert"); + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/debug.frag"), "debug_frag"); - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/ui/shaders/PapyrusRect.vert"), "papyrus_vk_vert"); - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/ui/shaders/PapyrusRect.frag"), "papyrus_vk_frag"); + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/skybox/skybox.vert"), "skybox_vert"); + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/graphics/shaders/skybox/skybox.frag"), "skybox_frag"); - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/ui/shaders/FontSDF.vert"), "FontSDF_vert"); - self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/ui/shaders/FontSDF.frag"), "FontSDF_frag"); + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/ui/shaders/PapyrusRect.vert"), "papyrus_vk_vert"); + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/ui/shaders/PapyrusRect.frag"), "papyrus_vk_frag"); + + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/ui/shaders/FontSDF.vert"), "FontSDF_vert"); + // self.spirvReflect.addShaderInstallRef(exe, self.nw_builder.path("engine/ui/shaders/FontSDF.frag"), "FontSDF_frag"); b.getInstallStep().dependOn(self.nw_builder.getInstallStep()); diff --git a/build.zig.zon b/build.zig.zon index c185ec1..f118c3b 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,16 +1,17 @@ .{ - .name = "Backlog", + .name = .Backlog, .version = "0.0.0", .dependencies = .{ .assets = .{ .path = "engine/assets" }, .audio = .{ .path = "engine/audio" }, .core = .{ .path = "engine/core" }, - .graphics = .{ .path = "engine/graphics" }, .papyrus = .{ .path = "engine/papyrus" }, .physics = .{ .path = "engine/physics" }, .platform = .{ .path = "engine/platform" }, - .ui = .{ .path = "engine/ui" }, - .vkImgui = .{ .path = "engine/vkImgui" }, + + // .graphics = .{ .path = "engine/graphics" }, + // .ui = .{ .path = "engine/ui" }, + // .vkImgui = .{ .path = "engine/vkImgui" }, .SpirvReflect = .{ .path = "lib/spirv-reflect-zig" }, .ozz = .{ .path = "lib/ozz" }, @@ -18,4 +19,5 @@ .paths = .{ "", }, + .fingerprint = 0xcf9bab998abe37e3 } diff --git a/engine/graphics/build.zig b/engine/_archive/graphics/build.zig similarity index 100% rename from engine/graphics/build.zig rename to engine/_archive/graphics/build.zig diff --git a/engine/graphics/build.zig.zon b/engine/_archive/graphics/build.zig.zon similarity index 96% rename from engine/graphics/build.zig.zon rename to engine/_archive/graphics/build.zig.zon index 11932f3..49c2be4 100644 --- a/engine/graphics/build.zig.zon +++ b/engine/_archive/graphics/build.zig.zon @@ -1,21 +1,21 @@ -.{ - .name = "graphics", - .version = "0.0.0", - .dependencies = .{ - // - .vulkan = .{ .path = "../../lib/vulkan" }, - .vma = .{ .path = "../../lib/vma" }, - .glfw3 = .{ .path = "../../lib/glfw3" }, - .cgltf = .{ .path = "../../lib/cgltf" }, - .objLoader = .{ .path = "../../lib/objLoader" }, - .SpirvReflect = .{ .path = "../../lib/spirv-reflect-zig" }, - .ozz = .{ .path = "../../lib/ozz" }, - // core - .core = .{ .path = "../core" }, - .assets = .{ .path = "../assets" }, - .platform = .{ .path = "../platform" }, - }, - .paths = .{ - "", - }, -} +.{ + .name = "graphics", + .version = "0.0.0", + .dependencies = .{ + // + .vulkan = .{ .path = "../../lib/vulkan" }, + .vma = .{ .path = "../../lib/vma" }, + .glfw3 = .{ .path = "../../lib/glfw3" }, + .cgltf = .{ .path = "../../lib/cgltf" }, + .objLoader = .{ .path = "../../lib/objLoader" }, + .SpirvReflect = .{ .path = "../../lib/spirv-reflect-zig" }, + .ozz = .{ .path = "../../lib/ozz" }, + // core + .core = .{ .path = "../core" }, + .assets = .{ .path = "../assets" }, + .platform = .{ .path = "../platform" }, + }, + .paths = .{ + "", + }, +} diff --git a/engine/graphics/defaults/texture_sample.png b/engine/_archive/graphics/defaults/texture_sample.png similarity index 100% rename from engine/graphics/defaults/texture_sample.png rename to engine/_archive/graphics/defaults/texture_sample.png diff --git a/engine/graphics/shaders/debug.frag b/engine/_archive/graphics/shaders/debug.frag similarity index 96% rename from engine/graphics/shaders/debug.frag rename to engine/_archive/graphics/shaders/debug.frag index dc16fba..dd7e859 100644 --- a/engine/graphics/shaders/debug.frag +++ b/engine/_archive/graphics/shaders/debug.frag @@ -1,32 +1,32 @@ -//glsl version 4.5 -#version 450 - -layout (location = 0) in vec3 in_color; -layout (location = 1) in vec2 texCoord; -layout (location = 2) in vec3 worldPosition; - -layout (location = 0) out vec4 outFragColor; - -layout (set = 0, binding = 0) uniform CameraBuffer{ - mat4 view; - mat4 proj; - mat4 viewproj; - vec4 position; -} cameraData; - -layout(set = 0, binding = 1) uniform SceneData{ - vec4 fogColor; // w is for exponent - vec4 fogDistances; //x for min, y for max, zw unused. - vec4 ambientColor; - vec4 sunlightDirection; //w for sun power - vec4 sunlightColor; -} sceneData; - - -void main() -{ - vec3 color = in_color.rgb; - float cameraDist = length(cameraData.position.xyz - worldPosition); - float opacity = (1.0) - (cameraDist / 300); - outFragColor = vec4(color, opacity * 1.0); -} +//glsl version 4.5 +#version 450 + +layout (location = 0) in vec3 in_color; +layout (location = 1) in vec2 texCoord; +layout (location = 2) in vec3 worldPosition; + +layout (location = 0) out vec4 outFragColor; + +layout (set = 0, binding = 0) uniform CameraBuffer{ + mat4 view; + mat4 proj; + mat4 viewproj; + vec4 position; +} cameraData; + +layout(set = 0, binding = 1) uniform SceneData{ + vec4 fogColor; // w is for exponent + vec4 fogDistances; //x for min, y for max, zw unused. + vec4 ambientColor; + vec4 sunlightDirection; //w for sun power + vec4 sunlightColor; +} sceneData; + + +void main() +{ + vec3 color = in_color.rgb; + float cameraDist = length(cameraData.position.xyz - worldPosition); + float opacity = (1.0) - (cameraDist / 300); + outFragColor = vec4(color, opacity * 1.0); +} diff --git a/engine/graphics/shaders/debug.vert b/engine/_archive/graphics/shaders/debug.vert similarity index 96% rename from engine/graphics/shaders/debug.vert rename to engine/_archive/graphics/shaders/debug.vert index 8b04c83..4bdcc9f 100644 --- a/engine/graphics/shaders/debug.vert +++ b/engine/_archive/graphics/shaders/debug.vert @@ -1,40 +1,40 @@ -#version 460 - -layout (location = 0) in vec3 vPosition; -layout (location = 1) in vec3 vNormal; -layout (location = 2) in vec4 vColor; -layout (location = 3) in vec2 vTexCoord; - -layout (location = 0) out vec3 outColor; -layout (location = 1) out vec2 texCoord; -layout (location = 2) out vec3 worldPosition; - -layout (set = 0, binding = 0) uniform CameraBuffer{ - mat4 view; - mat4 proj; - mat4 viewproj; - vec4 position; -} cameraData; - -// size: 16 x 4 + 3 x 4 = 76 => 128 bytes per object per alignment -struct ObjectData { - mat4 model; - vec4 color; -}; - -layout(std140, set = 1, binding = 0) readonly buffer ObjectBuffer{ - ObjectData objects[]; -} objectBuffer; - -void main() -{ - ObjectData object = objectBuffer.objects[gl_BaseInstance]; - mat4 modelMatrix = object.model; - mat4 final = (cameraData.viewproj * modelMatrix); - vec4 position = final * vec4(vPosition, 1.0f); - gl_Position = position; - outColor = object.color.xyz; - texCoord = vTexCoord; - vec4 modelPos = modelMatrix * vec4(vPosition, 1.0f); - worldPosition = modelPos.xyz; -} +#version 460 + +layout (location = 0) in vec3 vPosition; +layout (location = 1) in vec3 vNormal; +layout (location = 2) in vec4 vColor; +layout (location = 3) in vec2 vTexCoord; + +layout (location = 0) out vec3 outColor; +layout (location = 1) out vec2 texCoord; +layout (location = 2) out vec3 worldPosition; + +layout (set = 0, binding = 0) uniform CameraBuffer{ + mat4 view; + mat4 proj; + mat4 viewproj; + vec4 position; +} cameraData; + +// size: 16 x 4 + 3 x 4 = 76 => 128 bytes per object per alignment +struct ObjectData { + mat4 model; + vec4 color; +}; + +layout(std140, set = 1, binding = 0) readonly buffer ObjectBuffer{ + ObjectData objects[]; +} objectBuffer; + +void main() +{ + ObjectData object = objectBuffer.objects[gl_BaseInstance]; + mat4 modelMatrix = object.model; + mat4 final = (cameraData.viewproj * modelMatrix); + vec4 position = final * vec4(vPosition, 1.0f); + gl_Position = position; + outColor = object.color.xyz; + texCoord = vTexCoord; + vec4 modelPos = modelMatrix * vec4(vPosition, 1.0f); + worldPosition = modelPos.xyz; +} diff --git a/engine/graphics/shaders/default_lit.frag b/engine/_archive/graphics/shaders/default_lit.frag similarity index 96% rename from engine/graphics/shaders/default_lit.frag rename to engine/_archive/graphics/shaders/default_lit.frag index 4acfa13..7002516 100644 --- a/engine/graphics/shaders/default_lit.frag +++ b/engine/_archive/graphics/shaders/default_lit.frag @@ -1,47 +1,47 @@ -//glsl version 4.5 -#version 450 - -#extension GL_EXT_nonuniform_qualifier : require - -layout (location = 0) in vec3 in_color; -layout (location = 1) in vec2 texCoord; -layout (location = 2) in vec3 worldPosition; -layout (location = 3) flat in uint textureId; -layout (location = 4) flat in uint baseInstance; - -layout (location = 0) out vec4 outFragColor; - - -#include "globalSet.glsl" - -#include "sharedSsbo.glsl" - -void main() -{ - // outFragColor = vec4(in_color + 0.25 * sceneData.ambientColor.xyz,1.0f); - // outFragColor = vec4(texCoord.x, texCoord.y, 0.5f, 1.0f); - - // vec4 color = texture(tex1, texCoord).xyzw; - vec4 color = texture(gTex[textureId], texCoord).xyzw; - - if(color.w < 0.05f) - { - discard; - } - - float cameraDist = length(cameraData.position.xyz - worldPosition); - float opacity = clamp((1.f) - (clamp(cameraDist - 300, 0, 300) / 300.f), 0.f, 1.f); - - //float opacity = 1.0; - if(opacity < 0.05f) - { - discard; - } - - // outFragColor = vec4(mix(sceneData.fogColor.xyz, color.xyz, opacity), color.w); - outFragColor = vec4(color.xyz, opacity); - - //vec3 mixed = mix(normalize(vec3(0.5, 0.3, 0.2)) * 3, vec3(0.2, 0.2, 1) * 3, texCoord.y * 2); - //outFragColor = vec4(color.xyz, 1.0f); - //outFragColor = vec4(0.0, 1.0, 0.0, 1.0f); -} +//glsl version 4.5 +#version 450 + +#extension GL_EXT_nonuniform_qualifier : require + +layout (location = 0) in vec3 in_color; +layout (location = 1) in vec2 texCoord; +layout (location = 2) in vec3 worldPosition; +layout (location = 3) flat in uint textureId; +layout (location = 4) flat in uint baseInstance; + +layout (location = 0) out vec4 outFragColor; + + +#include "globalSet.glsl" + +#include "sharedSsbo.glsl" + +void main() +{ + // outFragColor = vec4(in_color + 0.25 * sceneData.ambientColor.xyz,1.0f); + // outFragColor = vec4(texCoord.x, texCoord.y, 0.5f, 1.0f); + + // vec4 color = texture(tex1, texCoord).xyzw; + vec4 color = texture(gTex[textureId], texCoord).xyzw; + + if(color.w < 0.05f) + { + discard; + } + + float cameraDist = length(cameraData.position.xyz - worldPosition); + float opacity = clamp((1.f) - (clamp(cameraDist - 300, 0, 300) / 300.f), 0.f, 1.f); + + //float opacity = 1.0; + if(opacity < 0.05f) + { + discard; + } + + // outFragColor = vec4(mix(sceneData.fogColor.xyz, color.xyz, opacity), color.w); + outFragColor = vec4(color.xyz, opacity); + + //vec3 mixed = mix(normalize(vec3(0.5, 0.3, 0.2)) * 3, vec3(0.2, 0.2, 1) * 3, texCoord.y * 2); + //outFragColor = vec4(color.xyz, 1.0f); + //outFragColor = vec4(0.0, 1.0, 0.0, 1.0f); +} diff --git a/engine/graphics/shaders/globalSet.glsl b/engine/_archive/graphics/shaders/globalSet.glsl similarity index 96% rename from engine/graphics/shaders/globalSet.glsl rename to engine/_archive/graphics/shaders/globalSet.glsl index a9ccdae..9176bc2 100644 --- a/engine/graphics/shaders/globalSet.glsl +++ b/engine/_archive/graphics/shaders/globalSet.glsl @@ -1,18 +1,18 @@ -layout (set = 0, binding = 0) uniform CameraBuffer{ - mat4 view; - mat4 proj; - mat4 viewproj; - mat4 viewprojAlt; - vec4 position; -} cameraData; - - -layout(set = 0, binding = 1) uniform SceneData{ - vec4 fogColor; // w is for exponent - vec4 fogDistances; //x for min, y for max, zw unused. - vec4 ambientColor; - vec4 sunlightDirection; //w for sun power - vec4 sunlightColor; -} sceneData; - -layout(set = 0, binding = 2) uniform sampler2D[] gTex; +layout (set = 0, binding = 0) uniform CameraBuffer{ + mat4 view; + mat4 proj; + mat4 viewproj; + mat4 viewprojAlt; + vec4 position; +} cameraData; + + +layout(set = 0, binding = 1) uniform SceneData{ + vec4 fogColor; // w is for exponent + vec4 fogDistances; //x for min, y for max, zw unused. + vec4 ambientColor; + vec4 sunlightDirection; //w for sun power + vec4 sunlightColor; +} sceneData; + +layout(set = 0, binding = 2) uniform sampler2D[] gTex; diff --git a/engine/graphics/shaders/sharedSsbo.glsl b/engine/_archive/graphics/shaders/sharedSsbo.glsl similarity index 95% rename from engine/graphics/shaders/sharedSsbo.glsl rename to engine/_archive/graphics/shaders/sharedSsbo.glsl index ff58de6..a2ac87a 100644 --- a/engine/graphics/shaders/sharedSsbo.glsl +++ b/engine/_archive/graphics/shaders/sharedSsbo.glsl @@ -1,25 +1,25 @@ -struct ObjectData { - mat4 model; - uint textureId; - int animation; // this is the index offset of the first matrix in the animation finals buffer. - uint flags0; - // packed flags0 flags; - // [0,0]: alwaysInFront - // [1,1]: useAltCamera - uint pad1; -}; - -layout(std140, set = 1, binding = 0) readonly buffer ObjectBuffer{ - ObjectData objects[]; -} objectBuffer; - - -uint flag0_AlwaysInFront(uint flags) -{ - return flags & 0x1; -} - -uint flag0_useAltFov(uint flags) -{ - return (flags >> 1) & 0x1; -} +struct ObjectData { + mat4 model; + uint textureId; + int animation; // this is the index offset of the first matrix in the animation finals buffer. + uint flags0; + // packed flags0 flags; + // [0,0]: alwaysInFront + // [1,1]: useAltCamera + uint pad1; +}; + +layout(std140, set = 1, binding = 0) readonly buffer ObjectBuffer{ + ObjectData objects[]; +} objectBuffer; + + +uint flag0_AlwaysInFront(uint flags) +{ + return flags & 0x1; +} + +uint flag0_useAltFov(uint flags) +{ + return (flags >> 1) & 0x1; +} diff --git a/engine/graphics/shaders/skeletalBuffers.glsl b/engine/_archive/graphics/shaders/skeletalBuffers.glsl similarity index 97% rename from engine/graphics/shaders/skeletalBuffers.glsl rename to engine/_archive/graphics/shaders/skeletalBuffers.glsl index 3256a86..30a3a05 100644 --- a/engine/graphics/shaders/skeletalBuffers.glsl +++ b/engine/_archive/graphics/shaders/skeletalBuffers.glsl @@ -1,3 +1,3 @@ -layout(std140, set = 1, binding = 1) readonly buffer BoneBuffer{ - mat4 finals[]; -} animationBuffer; +layout(std140, set = 1, binding = 1) readonly buffer BoneBuffer{ + mat4 finals[]; +} animationBuffer; diff --git a/engine/graphics/shaders/skybox/skybox.frag b/engine/_archive/graphics/shaders/skybox/skybox.frag similarity index 94% rename from engine/graphics/shaders/skybox/skybox.frag rename to engine/_archive/graphics/shaders/skybox/skybox.frag index 2d9e75d..95a29f7 100644 --- a/engine/graphics/shaders/skybox/skybox.frag +++ b/engine/_archive/graphics/shaders/skybox/skybox.frag @@ -1,15 +1,15 @@ -#version 450 - -#include "../globalSet.glsl" - - -layout(set = 1, binding = 0) uniform samplerCube cubemap; - -layout (location = 0) in vec3 inUVW; - -layout (location = 0) out vec4 outFragColor; - -void main() -{ - outFragColor = texture(cubemap, inUVW); -} +#version 450 + +#include "../globalSet.glsl" + + +layout(set = 1, binding = 0) uniform samplerCube cubemap; + +layout (location = 0) in vec3 inUVW; + +layout (location = 0) out vec4 outFragColor; + +void main() +{ + outFragColor = texture(cubemap, inUVW); +} diff --git a/engine/graphics/shaders/skybox/skybox.vert b/engine/_archive/graphics/shaders/skybox/skybox.vert similarity index 95% rename from engine/graphics/shaders/skybox/skybox.vert rename to engine/_archive/graphics/shaders/skybox/skybox.vert index f375f80..1ea2147 100644 --- a/engine/graphics/shaders/skybox/skybox.vert +++ b/engine/_archive/graphics/shaders/skybox/skybox.vert @@ -1,17 +1,17 @@ -#version 450 - -#include "../vertexInput.glsl" -#include "../globalSet.glsl" - - -layout (location = 0) out vec3 outUVW; - -void main() -{ - outUVW = vPosition; - // Convert cubemap coordinates into Vulkan coordinate space - - // Remove translation from view matrix - mat4 viewMat = mat4(mat3(cameraData.view)); - gl_Position = cameraData.proj * viewMat * vec4(vPosition.xyz, 1.0); -} +#version 450 + +#include "../vertexInput.glsl" +#include "../globalSet.glsl" + + +layout (location = 0) out vec3 outUVW; + +void main() +{ + outUVW = vPosition; + // Convert cubemap coordinates into Vulkan coordinate space + + // Remove translation from view matrix + mat4 viewMat = mat4(mat3(cameraData.view)); + gl_Position = cameraData.proj * viewMat * vec4(vPosition.xyz, 1.0); +} diff --git a/engine/graphics/shaders/triangle_mesh.vert b/engine/_archive/graphics/shaders/triangle_mesh.vert similarity index 96% rename from engine/graphics/shaders/triangle_mesh.vert rename to engine/_archive/graphics/shaders/triangle_mesh.vert index 6152a5d..7738d71 100644 --- a/engine/graphics/shaders/triangle_mesh.vert +++ b/engine/_archive/graphics/shaders/triangle_mesh.vert @@ -1,66 +1,66 @@ -#version 460 - - -#include "vertexInput.glsl" - -layout (location = 0) out vec3 outColor; -layout (location = 1) out vec2 texCoord; -layout (location = 2) out vec3 worldPosition; -layout (location = 3) flat out uint textureId; -layout (location = 4) flat out uint baseInstance; - -#include "globalSet.glsl" -#include "sharedSsbo.glsl" -#include "skeletalBuffers.glsl" - -void main() -{ - vec3 vertexPos = vec3(0.0); - int animation = objectBuffer.objects[gl_BaseInstance].animation; - - if(animation == -1) - { - vertexPos = vPosition; - } - else - { - uint animation = objectBuffer.objects[gl_BaseInstance].animation; - - for(int i = 0; i < 4; i += 1) - { - uint boneIndex = bones[i]; - float weight = float(weights[i]) / 255; - - // this will depend on ozz's finals format - mat4 boneTransform = animationBuffer.finals[animation + boneIndex]; - vertexPos += weight * ( boneTransform * vec4(vPosition, 1.0) ).xyz; - } - } - - mat4 modelMatrix = objectBuffer.objects[gl_BaseInstance].model; - - mat4 final; - - if(flag0_useAltFov(objectBuffer.objects[gl_BaseInstance].flags0) == 1) - { - final = (cameraData.viewprojAlt * modelMatrix); - } - else - { - final = (cameraData.viewproj * modelMatrix); - } - - vec4 position = final * vec4(vertexPos, 1.0f); - - if( flag0_AlwaysInFront(objectBuffer.objects[gl_BaseInstance].flags0) == 1) - { - position.z *= 0.0001; - } - - baseInstance = gl_BaseInstance; - gl_Position = position; - textureId = objectBuffer.objects[gl_BaseInstance].textureId; - outColor = vec3(vColor.x, vColor.y, vColor.z); - texCoord = vTexCoord; - worldPosition = (modelMatrix * vec4(0,0,0,1)).xyz; -} +#version 460 + + +#include "vertexInput.glsl" + +layout (location = 0) out vec3 outColor; +layout (location = 1) out vec2 texCoord; +layout (location = 2) out vec3 worldPosition; +layout (location = 3) flat out uint textureId; +layout (location = 4) flat out uint baseInstance; + +#include "globalSet.glsl" +#include "sharedSsbo.glsl" +#include "skeletalBuffers.glsl" + +void main() +{ + vec3 vertexPos = vec3(0.0); + int animation = objectBuffer.objects[gl_BaseInstance].animation; + + if(animation == -1) + { + vertexPos = vPosition; + } + else + { + uint animation = objectBuffer.objects[gl_BaseInstance].animation; + + for(int i = 0; i < 4; i += 1) + { + uint boneIndex = bones[i]; + float weight = float(weights[i]) / 255; + + // this will depend on ozz's finals format + mat4 boneTransform = animationBuffer.finals[animation + boneIndex]; + vertexPos += weight * ( boneTransform * vec4(vPosition, 1.0) ).xyz; + } + } + + mat4 modelMatrix = objectBuffer.objects[gl_BaseInstance].model; + + mat4 final; + + if(flag0_useAltFov(objectBuffer.objects[gl_BaseInstance].flags0) == 1) + { + final = (cameraData.viewprojAlt * modelMatrix); + } + else + { + final = (cameraData.viewproj * modelMatrix); + } + + vec4 position = final * vec4(vertexPos, 1.0f); + + if( flag0_AlwaysInFront(objectBuffer.objects[gl_BaseInstance].flags0) == 1) + { + position.z *= 0.0001; + } + + baseInstance = gl_BaseInstance; + gl_Position = position; + textureId = objectBuffer.objects[gl_BaseInstance].textureId; + outColor = vec3(vColor.x, vColor.y, vColor.z); + texCoord = vTexCoord; + worldPosition = (modelMatrix * vec4(0,0,0,1)).xyz; +} diff --git a/engine/graphics/shaders/vertexInput.glsl b/engine/_archive/graphics/shaders/vertexInput.glsl similarity index 97% rename from engine/graphics/shaders/vertexInput.glsl rename to engine/_archive/graphics/shaders/vertexInput.glsl index 6e260d7..9eaba7d 100644 --- a/engine/graphics/shaders/vertexInput.glsl +++ b/engine/_archive/graphics/shaders/vertexInput.glsl @@ -1,7 +1,7 @@ -#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable -layout (location = 0) in vec3 vPosition; -layout (location = 1) in vec3 vNormal; -layout (location = 2) in vec4 vColor; -layout (location = 3) in vec2 vTexCoord; -layout (location = 4) in u8vec4 bones; -layout (location = 5) in u8vec4 weights; +#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable +layout (location = 0) in vec3 vPosition; +layout (location = 1) in vec3 vNormal; +layout (location = 2) in vec4 vColor; +layout (location = 3) in vec2 vTexCoord; +layout (location = 4) in u8vec4 bones; +layout (location = 5) in u8vec4 weights; diff --git a/engine/graphics/src/PixelBufferRGBA8.zig b/engine/_archive/graphics/src/PixelBufferRGBA8.zig similarity index 96% rename from engine/graphics/src/PixelBufferRGBA8.zig rename to engine/_archive/graphics/src/PixelBufferRGBA8.zig index fa8c55b..ea660df 100644 --- a/engine/graphics/src/PixelBufferRGBA8.zig +++ b/engine/_archive/graphics/src/PixelBufferRGBA8.zig @@ -1,32 +1,32 @@ -pixels: []u8, -extent: core.Vector2i, - -const std = @import("std"); -const core = @import("core"); -const colors = core.colors; - -pub fn init(allocator: std.mem.Allocator, extent: core.Vector2i) !@This() { - return .{ - .pixels = try allocator.alignedAlloc(u8, 8, @intCast(extent.x * extent.y * 4)), - .extent = extent, - }; -} - -pub fn clear(self: *@This(), clearColor: colors.ColorRGBA8) void { - var as32: []u32 = undefined; - as32.len = self.pixels.len / 4; - as32.ptr = @alignCast(@ptrCast(self.pixels.ptr)); - - @memset(as32, @as(u32, @bitCast(clearColor))); -} - -pub fn deinit(self: *@This(), allocator: std.mem.Allocator) void { - allocator.free(self.pixels); -} - -pub inline fn getPixel(self: *@This(), position: core.Vector2i) *colors.ColorRGBA8 { - const offset = position.x * position.y * 4; - const r: *u8 = &self.pixels[@intCast(offset)]; - - return @as(*colors.ColorRGBA8, @alignCast(@ptrCast(r))); -} +pixels: []u8, +extent: core.Vector2i, + +const std = @import("std"); +const core = @import("core"); +const colors = core.colors; + +pub fn init(allocator: std.mem.Allocator, extent: core.Vector2i) !@This() { + return .{ + .pixels = try allocator.alignedAlloc(u8, 8, @intCast(extent.x * extent.y * 4)), + .extent = extent, + }; +} + +pub fn clear(self: *@This(), clearColor: colors.ColorRGBA8) void { + var as32: []u32 = undefined; + as32.len = self.pixels.len / 4; + as32.ptr = @alignCast(@ptrCast(self.pixels.ptr)); + + @memset(as32, @as(u32, @bitCast(clearColor))); +} + +pub fn deinit(self: *@This(), allocator: std.mem.Allocator) void { + allocator.free(self.pixels); +} + +pub inline fn getPixel(self: *@This(), position: core.Vector2i) *colors.ColorRGBA8 { + const offset = position.x * position.y * 4; + const r: *u8 = &self.pixels[@intCast(offset)]; + + return @as(*colors.ColorRGBA8, @alignCast(@ptrCast(r))); +} diff --git a/engine/graphics/src/animation/animResolver.zig b/engine/_archive/graphics/src/animation/animResolver.zig similarity index 97% rename from engine/graphics/src/animation/animResolver.zig rename to engine/_archive/graphics/src/animation/animResolver.zig index 4b5f6ce..d7b051d 100644 --- a/engine/graphics/src/animation/animResolver.zig +++ b/engine/_archive/graphics/src/animation/animResolver.zig @@ -1,232 +1,232 @@ -pub const AnimResolverRef = core.Reference(AnimResolverInterface); -pub const AnimResolverInterface = core.MakeInterface("AnimResolverVTable", struct { - // this tick function should evaluate the current state of the resolver - // and then update the animator's finals[] matrix list. - resolve: *const fn (*anyopaque, f64, *Animator) void, - onSkeletonSet: ?*const fn (*anyopaque, *Animator) void = null, - - create: *const fn (std.mem.Allocator) core.EngineDataEventError!*anyopaque, - destroy: *const fn (*anyopaque) void, - - pub fn Implement(comptime TargetType: type) @This() { - const Wrap = struct { - pub fn create(allocator: std.mem.Allocator) core.EngineDataEventError!*anyopaque { - const new = TargetType.create(allocator) catch return core.EngineDataEventError.BadInit; - return @ptrCast(new); - } - - pub fn destroy(p: *anyopaque) void { - const ptr: *TargetType = @ptrCast(@alignCast(p)); - ptr.destroy(); - } - - pub fn onSkeletonSet(p: *anyopaque, a: *Animator) void { - const ptr: *TargetType = @ptrCast(@alignCast(p)); - ptr.onSkeletonSet(a) catch unreachable; - } - - pub fn resolve(p: *anyopaque, dt: f64, a: *Animator) void { - const ptr: *TargetType = @ptrCast(@alignCast(p)); - ptr.resolve(dt, a) catch unreachable; - } - }; - return .{ - .destroy = Wrap.destroy, - .create = Wrap.create, - .resolve = Wrap.resolve, - }; - } -}); - -pub const AnimSampler = struct { - name: ?core.Name = null, - track: ?*AnimationTrack = null, - playbackRate: f32 = 1.0, - time: f32 = 0.0, - outputLocals: std.ArrayListUnmanaged(ozz.SoaTransform) = .{}, - - // other features - // paused: bool = false, - pub fn deinit(self: *@This(), allocator: std.mem.Allocator) void { - self.outputLocals.deinit(allocator); - } - - pub fn getOutput(self: *@This()) []ozz.SoaTransform { - return self.outputLocals.items; - } - - pub fn sampleAndAdvance(self: *@This(), allocator: std.mem.Allocator, dt: f64, animator: *Animator) void { - self.sample(allocator, animator); - self.advance(dt); - } - - pub fn advance(self: *@This(), dt: f64) void { - if (self.track == null) { - return; - } - - FloatHelpers.updateTrackTime(&self.time, dt, self.playbackRate, self.track.?.endTime); - } - - pub fn setName(self: *@This(), name: core.Name) void { - self.name = name; - self.track = null; - } - - pub fn sample(self: *@This(), allocator: std.mem.Allocator, animator: *Animator) void { - if (self.name == null) { - return; - } - - if (self.track == null) { - self.track = animation_system.gAnimationSys.animTracks.get(self.name.?.handle()); - } - - self.outputLocals.resize(allocator, animator.jointLength) catch return; - - if (self.track) |track| { - if (track.endTime < 0.01) { - return; - } - - animator.sampleAnimation(self.time, track, self.outputLocals.items); - } - } -}; - -pub const BlenderList = struct { - backing: std.mem.Allocator, - arena: std.heap.ArenaAllocator, - - jobLayers: std.ArrayListUnmanaged(ozz.Layer) = .{}, - jobLayersAdditive: std.ArrayListUnmanaged(ozz.Layer) = .{}, - useAdditive: bool = false, - - threshold: f32 = 0.01, - jointLength: usize = 0, - blendingJob: ozz.BlendingJob = .{}, - - pub fn create(backingAllocator: std.mem.Allocator) !*@This() { - const self = try backingAllocator.create(@This()); - self.* = .{ - .backing = backingAllocator, - .arena = std.heap.ArenaAllocator.init(backingAllocator), - }; - - return self; - } - - pub fn destroy(self: *@This()) void { - self.arena.deinit(); - self.backing.destroy(self); - } - - pub fn updateRestPose(self: *@This(), animator: *Animator) !void { - if (animator.skeleton) |skeleton| { - self.jointLength = skeleton.sk.numJoints(); - self.blendingJob.rest_pose = skeleton.sk.getRestPoseModel(); - } - } - - pub fn clearLayers(self: *@This()) void { - self.jobLayersAdditive.clearRetainingCapacity(); - self.jobLayers.clearRetainingCapacity(); - } - - pub fn addLayer(self: *@This(), transform: []ozz.SoaTransform, weight: f32, settings: anytype) void { - const layer = self.jobLayers.addOne(self.arena.allocator()) catch unreachable; - layer.* = .{ - .weight = weight, - .transform = ozz.makeSpan(transform), - }; - _ = settings; - } - - pub fn updateAndRun(self: *@This(), output: []ozz.SoaTransform) void { - self.updateBlendingJob(); - self.runBlendingJob(output) catch return; - } - - pub fn updateBlendingJob(self: *@This()) void { - self.blendingJob.threshold = self.threshold; - self.blendingJob.layers = ozz.makeSpan(self.jobLayers.items); - //self.blendingJob.additive_layers = if (self.useAdditive) ozz.makeSpan(self.jobLayersAdditive.items) else .{}; - self.blendingJob.additive_layers = .{}; - } - - pub fn runBlendingJob(self: *@This(), output: []ozz.SoaTransform) !void { - self.blendingJob.output = ozz.makeSpan(output); - if (!self.blendingJob.run()) { - core.engine_logs("blending job failed"); - return; - } - } -}; - -// resolver helpers -pub const FloatHelpers = struct { - pub inline fn updateTrackTime(target: *f32, dt: f64, rate: f32, endTime: f32) void { - target.* += @as(f32, @floatCast(dt)) * rate; - while (target.* > endTime) { - target.* -= endTime; - } - } -}; - -// samples a single animation, same as the default behaviour. -// used as a test for the resolver system -pub const SingleAnimationResolver = struct { - allocator: std.mem.Allocator, - locals: std.ArrayListUnmanaged(ozz.SoaTransform) = .{}, - - track: ?*AnimationTrack = null, - playback: f32 = 0.0, - playbackRate: f32 = 1.0, - - pub const AnimResolverVTable = AnimResolverInterface.Implement(@This()); - - pub fn create(allocator: std.mem.Allocator) !*@This() { - const self = try allocator.create(@This()); - self.* = .{ - .allocator = allocator, - }; - - return self; - } - - pub fn onSkeletonSet(self: *@This(), animator: *Animator) !void { - if (animator.skeleton) |skeleton| { - try self.locals.resize(self.allocator, skeleton.sk.numSoaJoints()); - } - } - - pub fn resolve(self: *@This(), dt: f64, animator: *Animator) !void { - self.track = animator.track; - if (self.track == null) { - return; - } - - const track = self.track.?; - if (track.endTime < 0.01) { - return; - } - - FloatHelpers.updateTrackTime(&self.playback, dt, self.playbackRate, track.endTime); - animator.sampleAnimation(self.playback, track, self.locals.items); - animator.commitLocalToModel(self.locals.items); - animator.modelToFinal(); - } - - pub fn destroy(self: *@This()) void { - self.locals.deinit(self.allocator); - self.allocator.destroy(self); - } -}; - -const animation_system = @import("animationSystem.zig"); -const Animator = animation_system.Animator; -const AnimationTrack = animation_system.AnimationTrack; - -const core = @import("core"); -const std = @import("std"); -const ozz = @import("ozz"); +pub const AnimResolverRef = core.Reference(AnimResolverInterface); +pub const AnimResolverInterface = core.MakeInterface("AnimResolverVTable", struct { + // this tick function should evaluate the current state of the resolver + // and then update the animator's finals[] matrix list. + resolve: *const fn (*anyopaque, f64, *Animator) void, + onSkeletonSet: ?*const fn (*anyopaque, *Animator) void = null, + + create: *const fn (std.mem.Allocator) core.EngineDataEventError!*anyopaque, + destroy: *const fn (*anyopaque) void, + + pub fn Implement(comptime TargetType: type) @This() { + const Wrap = struct { + pub fn create(allocator: std.mem.Allocator) core.EngineDataEventError!*anyopaque { + const new = TargetType.create(allocator) catch return core.EngineDataEventError.BadInit; + return @ptrCast(new); + } + + pub fn destroy(p: *anyopaque) void { + const ptr: *TargetType = @ptrCast(@alignCast(p)); + ptr.destroy(); + } + + pub fn onSkeletonSet(p: *anyopaque, a: *Animator) void { + const ptr: *TargetType = @ptrCast(@alignCast(p)); + ptr.onSkeletonSet(a) catch unreachable; + } + + pub fn resolve(p: *anyopaque, dt: f64, a: *Animator) void { + const ptr: *TargetType = @ptrCast(@alignCast(p)); + ptr.resolve(dt, a) catch unreachable; + } + }; + return .{ + .destroy = Wrap.destroy, + .create = Wrap.create, + .resolve = Wrap.resolve, + }; + } +}); + +pub const AnimSampler = struct { + name: ?core.Name = null, + track: ?*AnimationTrack = null, + playbackRate: f32 = 1.0, + time: f32 = 0.0, + outputLocals: std.ArrayListUnmanaged(ozz.SoaTransform) = .{}, + + // other features + // paused: bool = false, + pub fn deinit(self: *@This(), allocator: std.mem.Allocator) void { + self.outputLocals.deinit(allocator); + } + + pub fn getOutput(self: *@This()) []ozz.SoaTransform { + return self.outputLocals.items; + } + + pub fn sampleAndAdvance(self: *@This(), allocator: std.mem.Allocator, dt: f64, animator: *Animator) void { + self.sample(allocator, animator); + self.advance(dt); + } + + pub fn advance(self: *@This(), dt: f64) void { + if (self.track == null) { + return; + } + + FloatHelpers.updateTrackTime(&self.time, dt, self.playbackRate, self.track.?.endTime); + } + + pub fn setName(self: *@This(), name: core.Name) void { + self.name = name; + self.track = null; + } + + pub fn sample(self: *@This(), allocator: std.mem.Allocator, animator: *Animator) void { + if (self.name == null) { + return; + } + + if (self.track == null) { + self.track = animation_system.gAnimationSys.animTracks.get(self.name.?.handle()); + } + + self.outputLocals.resize(allocator, animator.jointLength) catch return; + + if (self.track) |track| { + if (track.endTime < 0.01) { + return; + } + + animator.sampleAnimation(self.time, track, self.outputLocals.items); + } + } +}; + +pub const BlenderList = struct { + backing: std.mem.Allocator, + arena: std.heap.ArenaAllocator, + + jobLayers: std.ArrayListUnmanaged(ozz.Layer) = .{}, + jobLayersAdditive: std.ArrayListUnmanaged(ozz.Layer) = .{}, + useAdditive: bool = false, + + threshold: f32 = 0.01, + jointLength: usize = 0, + blendingJob: ozz.BlendingJob = .{}, + + pub fn create(backingAllocator: std.mem.Allocator) !*@This() { + const self = try backingAllocator.create(@This()); + self.* = .{ + .backing = backingAllocator, + .arena = std.heap.ArenaAllocator.init(backingAllocator), + }; + + return self; + } + + pub fn destroy(self: *@This()) void { + self.arena.deinit(); + self.backing.destroy(self); + } + + pub fn updateRestPose(self: *@This(), animator: *Animator) !void { + if (animator.skeleton) |skeleton| { + self.jointLength = skeleton.sk.numJoints(); + self.blendingJob.rest_pose = skeleton.sk.getRestPoseModel(); + } + } + + pub fn clearLayers(self: *@This()) void { + self.jobLayersAdditive.clearRetainingCapacity(); + self.jobLayers.clearRetainingCapacity(); + } + + pub fn addLayer(self: *@This(), transform: []ozz.SoaTransform, weight: f32, settings: anytype) void { + const layer = self.jobLayers.addOne(self.arena.allocator()) catch unreachable; + layer.* = .{ + .weight = weight, + .transform = ozz.makeSpan(transform), + }; + _ = settings; + } + + pub fn updateAndRun(self: *@This(), output: []ozz.SoaTransform) void { + self.updateBlendingJob(); + self.runBlendingJob(output) catch return; + } + + pub fn updateBlendingJob(self: *@This()) void { + self.blendingJob.threshold = self.threshold; + self.blendingJob.layers = ozz.makeSpan(self.jobLayers.items); + //self.blendingJob.additive_layers = if (self.useAdditive) ozz.makeSpan(self.jobLayersAdditive.items) else .{}; + self.blendingJob.additive_layers = .{}; + } + + pub fn runBlendingJob(self: *@This(), output: []ozz.SoaTransform) !void { + self.blendingJob.output = ozz.makeSpan(output); + if (!self.blendingJob.run()) { + core.engine_logs("blending job failed"); + return; + } + } +}; + +// resolver helpers +pub const FloatHelpers = struct { + pub inline fn updateTrackTime(target: *f32, dt: f64, rate: f32, endTime: f32) void { + target.* += @as(f32, @floatCast(dt)) * rate; + while (target.* > endTime) { + target.* -= endTime; + } + } +}; + +// samples a single animation, same as the default behaviour. +// used as a test for the resolver system +pub const SingleAnimationResolver = struct { + allocator: std.mem.Allocator, + locals: std.ArrayListUnmanaged(ozz.SoaTransform) = .{}, + + track: ?*AnimationTrack = null, + playback: f32 = 0.0, + playbackRate: f32 = 1.0, + + pub const AnimResolverVTable = AnimResolverInterface.Implement(@This()); + + pub fn create(allocator: std.mem.Allocator) !*@This() { + const self = try allocator.create(@This()); + self.* = .{ + .allocator = allocator, + }; + + return self; + } + + pub fn onSkeletonSet(self: *@This(), animator: *Animator) !void { + if (animator.skeleton) |skeleton| { + try self.locals.resize(self.allocator, skeleton.sk.numSoaJoints()); + } + } + + pub fn resolve(self: *@This(), dt: f64, animator: *Animator) !void { + self.track = animator.track; + if (self.track == null) { + return; + } + + const track = self.track.?; + if (track.endTime < 0.01) { + return; + } + + FloatHelpers.updateTrackTime(&self.playback, dt, self.playbackRate, track.endTime); + animator.sampleAnimation(self.playback, track, self.locals.items); + animator.commitLocalToModel(self.locals.items); + animator.modelToFinal(); + } + + pub fn destroy(self: *@This()) void { + self.locals.deinit(self.allocator); + self.allocator.destroy(self); + } +}; + +const animation_system = @import("animationSystem.zig"); +const Animator = animation_system.Animator; +const AnimationTrack = animation_system.AnimationTrack; + +const core = @import("core"); +const std = @import("std"); +const ozz = @import("ozz"); diff --git a/engine/graphics/src/animation/animationSystem.zig b/engine/_archive/graphics/src/animation/animationSystem.zig similarity index 97% rename from engine/graphics/src/animation/animationSystem.zig rename to engine/_archive/graphics/src/animation/animationSystem.zig index 2cefb8e..e7adce2 100644 --- a/engine/graphics/src/animation/animationSystem.zig +++ b/engine/_archive/graphics/src/animation/animationSystem.zig @@ -1,480 +1,480 @@ -// big main sy.itemsstem for animation - -const ozz = @import("ozz"); -const core = @import("core"); -const std = @import("std"); - -pub const BoneHandle = enum(u8) { _ }; - -pub const Skeleton = struct { - sk: *ozz.Skeleton, - inverseBinds: std.ArrayListUnmanaged(core.Mat) = .{}, - jointMapping: std.StringHashMapUnmanaged(u8) = .{}, - - pub fn buildJointMap(self: *@This(), allocator: std.mem.Allocator) !void { - for (self.sk.getJointsList(), 0..) |jointName, i| { - // std.debug.print("jointName {d} {s}\n", .{ i, jointName }); - const str = std.mem.span(jointName); - try self.jointMapping.put(allocator, str, @intCast(i)); - } - } - - pub fn getBoneHandleByName(self: @This(), string: []const u8) ?BoneHandle { - if (self.jointMapping.get(string)) |x| { - return @enumFromInt(x); - } else { - return null; - } - } - - pub fn deinit(self: *@This()) void { - self.sk.destroy(); - } -}; - -pub const AnimationTrack = struct { - animation: *ozz.Animation, - endTime: f32 = 1.0, - - pub fn deinit(self: *@This()) void { - self.animation.destroy(); - } -}; - -pub const PlaybackTrack = struct { - track: ?*AnimationTrack = null, - playback: f32 = 0.0, - playbackRate: f32 = 1.0, -}; - -pub const Animator = struct { - jointRemap: ?[]u8 = null, - animationName: ?core.Name = null, - skeleton: ?*Skeleton = null, - skeletonName: ?core.Name = null, - sjc: *ozz.SamplingJobContext = undefined, - - track: ?*AnimationTrack = null, - playback: f32 = 0.0, - playbackRate: f32 = 1.0, - - // todo.. implement blending - // animations: [4]*ozz.Animation = undefined, - // timelines: [4]f32 = .{ 0, 0, 0, 0 }, - animationCount: u32 = 0, - - locals: std.ArrayListUnmanaged(ozz.SoaTransform) = .{}, - models: std.ArrayListUnmanaged(ozz.Float4x4) = .{}, - finals: std.ArrayListUnmanaged(core.Mat) = .{}, - finalsSpan: core.Span = undefined, - - entity: core.Entity = undefined, - jointLength: usize = 0, - - resolverRef: ?AnimResolverRef = null, - - pub var allocator: std.mem.Allocator = undefined; - // oh god if I want to support multiple animation blending... - // maybe the kernel should contain a fixed amount of animations? - - pub fn initECS(self: *@This(), handle: core.SetHandle) void { - // get the mesh component - self.entity = core.Entity{ .handle = handle }; - - if (self.entity.get(graphics.StaticMesh)) |mesh| { - mesh.animated = true; //todo - mesh.animator = self; - self.sjc = ozz.SamplingJobContext.createMaxTracks(256); - } else { - @panic("animator added to an entity that does not have a mesh component"); - } - } - - pub fn getBoneTransform(self: *@This(), handle: BoneHandle) core.Mat { - return @bitCast(self.models.items[@intFromEnum(handle)]); - } - - pub fn setSkeletonByName(self: *@This(), skName: core.Name) !void { - if (self.skeleton != null) { - // return the previous span and allocate a new one. - gAnimationSys.slots.removeSpan(self.finalsSpan); - } - - self.skeletonName = skName; - self.skeleton = gAnimationSys.skeletons.get(self.skeletonName.?.handle()).?; - const numJoints = self.skeleton.?.sk.numJoints(); - self.jointLength = numJoints; - - self.sjc.resize(@intCast(numJoints)); - try self.locals.resize(allocator, self.skeleton.?.sk.numSoaJoints()); - try self.models.resize(allocator, numJoints); - try self.finals.resize(allocator, numJoints); - self.finalsSpan = try gAnimationSys.slots.allocate(@intCast(numJoints)); - - if (self.resolverRef) |ref| { - if (ref.vtable.onSkeletonSet) |f| { - f(ref.ptr, self); - } - } - - self.jointRemap = null; - } - - pub fn setSkeleton(self: *@This(), skeleton: []const u8) void { - self.setSkeletonByName(core.MakeName(skeleton)) catch unreachable; - } - - pub fn addResolver(self: *@This(), comptime Resolver: type) !*Resolver { - const resolver = try Resolver.create(allocator); - try resolver.onSkeletonSet(self); - - self.resolverRef = core.refFromPtr(AnimResolverInterface, resolver); - - return resolver; - } - - pub fn removeResolver(self: *@This()) void { - if (self.resolverRef) |ref| { - ref.vtable.destroy(ref.ptr); - self.resolverRef = null; - } - } - - pub fn update(self: *@This(), dt: f64) void { - if (self.skeleton == null) { - return; - } - - // if a resolver is present, use that to update my the finals instead of the default function below - if (self.resolverRef) |ref| { - ref.vtable.resolve(ref.ptr, dt, self); - return; - } - - if (!self.defaultSample(dt)) { - return; - } - - self.modelToFinal(); - } - - fn defaultSample(self: *@This(), dt: f64) bool { - if (self.track == null) - return false; - - const track = self.track.?; - if (track.endTime < 0.01) - return false; - - const skeleton = self.skeleton.?; - self.playback += @as(f32, @floatCast(dt)) * self.playbackRate; - - while (self.playback > track.endTime) { - self.playback -= track.endTime; - } - - var samplingJob: ozz.SamplingJob = .{ - .ratio = self.playback / track.endTime, - .animation = track.animation, - .context = self.sjc, - .output = ozz.makeSpan(self.locals.items), - }; - - if (!samplingJob.run()) { - core.engine_errs("sampling job failed"); - return false; - } - - var ltmJob: ozz.LocalToModelJob = .{ - .skeleton = skeleton.sk, - .input = ozz.makeSpan(self.locals.items), - .output = ozz.makeSpan(self.models.items), - }; - - if (!ltmJob.run()) { - core.engine_errs("local to model job failed"); - return false; - } - - return true; - } - - pub fn commitLocalToModel(self: *@This(), input: []ozz.SoaTransform) void { - self.localToModel(input, self.models.items); - } - - pub fn localToModel(self: *@This(), input: []ozz.SoaTransform, output: []ozz.Float4x4) void { - var ltmJob: ozz.LocalToModelJob = .{ - .skeleton = self.skeleton.?.sk, - .input = ozz.makeSpan(input), - .output = ozz.makeSpan(output), - }; - - if (!ltmJob.run()) { - core.engine_errs("local to model job failed"); - return; - } - } - - pub fn sampleAnimation(self: *@This(), time: f32, track: *AnimationTrack, output: []ozz.SoaTransform) void { - var samplingJob: ozz.SamplingJob = .{ - .ratio = time / track.endTime, - .animation = track.animation, - .context = self.sjc, - .output = ozz.makeSpan(output), - }; - - if (!samplingJob.run()) { - core.engine_errs("sampling job failed"); - return; - } - } - - pub fn modelToFinal(self: *@This()) void { - if (self.jointRemap == null) { - if (self.entity.get(graphics.StaticMesh)) |meshComponent| { - if (meshComponent.mesh) |mesh| { - self.jointRemap = mesh.jointRemap; - } - } - } - - const skeleton = self.skeleton.?; - for (self.models.items, 0..) |model, i| { - const transform: core.Mat = @bitCast(model); - - // const p: core.zm.Vec = .{ 0, 0, 0, 1 }; - // graphics.debugSphere(core.Vectorf.fromZm(core.zm.mul(p, transform)), 0.03, .{ - // .color = if (i == 15) .{ .x = 1 } else .{ .y = 1 }, - // }); - - const final = core.zm.mul(skeleton.inverseBinds.items[i], transform); - // joint remap ozz -> gltf - if (self.jointRemap) |jr| { - // core.engine_log("{d} xx {d}", .{ i, jr[i] }); - self.finals.items[@intCast(jr[i])] = final; - } else { - self.finals.items[i] = final; - } - // core.engine_log( - // "[{d}] {d} {d} {d} {d}, {d} {d} {d} {d}", - // .{ i, transform[0][0], transform[0][1], transform[0][2], transform[0][3], transform[1][0], transform[1][1], transform[1][2], transform[1][3] }, - // ); - } - } - - pub fn setAnimationByName(self: *@This(), _name: core.Name) !void { - var name = _name; - self.track = gAnimationSys.animTracks.get(name.handle()); - } - - pub fn setAnimation(self: *@This(), path: []const u8) void { - const name = core.MakeName(path); - self.setAnimationByName(name) catch unreachable; - } - - pub fn deinit(self: *@This()) void { - self.sjc.destroy(); - self.removeResolver(); - self.finals.deinit(allocator); - self.locals.deinit(allocator); - self.models.deinit(allocator); - } - - pub var BaseContainer: *core.SparseMap(@This()) = undefined; - pub const ComponentName = "Animator"; - pub const ScriptExports: []const []const u8 = &.{}; -}; - -pub const AnimationSystem = struct { - backingAllocator: std.mem.Allocator, - - arena: std.heap.ArenaAllocator, - slots: MergedSpans, - - // Only AnimationTrack and Skeletons are made using the ArenaAllocator - animTracks: std.AutoHashMapUnmanaged(u32, *AnimationTrack) = .{}, - skeletons: std.AutoHashMapUnmanaged(u32, *Skeleton) = .{}, - - sharedArena: [2]std.heap.ArenaAllocator, // could be a good usecase for a fat bump arena - shared: [2]std.ArrayListUnmanaged(MatrixUploads) = .{ .{}, .{} }, - sharedLocks: [2]std.Thread.Mutex = .{ .{}, .{} }, // could be a good usecase for a fat bump arena - - pub const MatrixUploads = struct { - offset: u32, - matrices: std.ArrayListUnmanaged(core.Mat) = .{}, - }; - - pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); - pub const RendererInterfaceVTable = graphics.RendererInterface.from(@This()); - - pub fn preTick(self: *@This(), dt: f64) !void { - _ = self; - var z1 = core.tracy.ZoneN(@src(), "animation system tick"); - defer z1.End(); - - for (Animator.BaseContainer.list.items) |animator| { - animator.update(dt); - } - } - - pub fn newAnimTrack(self: *@This(), _name: core.Name, anim: *ozz.Animation) !void { - var name = _name; - const new = try self.arenaAllocator().create(AnimationTrack); - new.* = .{ - .animation = anim, - .endTime = anim.getDuration(), - }; - try self.animTracks.put(self.backingAllocator, name.handle(), new); - } - - pub fn newSkeleton(self: *@This(), _name: core.Name, sk: *ozz.Skeleton) !void { - const new = try self.arenaAllocator().create(Skeleton); - new.* = .{ - .sk = sk, - }; - var name = _name; - - try new.buildJointMap(self.arenaAllocator()); - - try new.inverseBinds.resize(self.arenaAllocator(), new.sk.numJoints()); - - if (new.inverseBinds.items.len > 256) { - @panic("too many bones in skeleton, not supported"); - } - - var bindModels = std.ArrayList(ozz.Float4x4).init(self.backingAllocator); - defer bindModels.deinit(); - - try bindModels.resize(new.sk.numJoints()); - - var ltmJob: ozz.LocalToModelJob = .{ - .skeleton = new.sk, - .input = new.sk.getRestPoseModel(), - .output = ozz.makeSpan(bindModels.items), - }; - - core.engine_log("creating bind pose {d} joints", .{new.inverseBinds.items.len}); - - if (!ltmJob.run()) { - core.engine_logs("unable to get bind pose"); - return error.UnableToLoad; - } - - for (bindModels.items, 0..) |bind, i| { - // const p: core.zm.Vec = .{ 0, 0, 0, 1 }; - // graphics.debugSphere(core.Vectorf.fromZm(core.zm.mul(p, @as(core.Mat, @bitCast(bind)))), 0.1, .{ .duration = 100 }); - - new.inverseBinds.items[i] = core.zm.inverse(@as(core.Mat, @bitCast(bind))); - } - - try self.skeletons.put(self.backingAllocator, name.handle(), new); - } - - pub fn arenaAllocator(self: *@This()) std.mem.Allocator { - return self.arena.allocator(); - } - - pub fn getShared(self: @This(), fi: u32) []const MatrixUploads { - return self.shared[fi].items; - } - - pub fn sendShared(self: *@This(), frameIndex: u32) void { - const fi: usize = @intCast(frameIndex); - - self.sharedLocks[fi].lock(); - defer self.sharedLocks[fi].unlock(); - - _ = self.sharedArena[fi].reset(.retain_capacity); - - const allocator = self.sharedArena[fi].allocator(); - const shared = &self.shared[fi]; - shared.* = .{}; - - for (Animator.BaseContainer.list.items) |animator| { - var upload: MatrixUploads = .{ .offset = animator.finalsSpan.start }; - // core.engine_log( - // "finalsSpan size offset{d} {d} animator finals {d}\n", - // .{ - // animator.finalsSpan.start, - // animator.finalsSpan.size, - // animator.finals.items.len - // }); - - upload.matrices.resize(allocator, animator.finalsSpan.size) catch unreachable; - - for (animator.finals.items, 0..) |final, i| { - upload.matrices.items[i] = final; - } - - shared.append(allocator, upload) catch unreachable; - } - } - - pub fn init(alloc: std.mem.Allocator) !*@This() { - const self = try alloc.create(@This()); - self.* = .{ - .backingAllocator = alloc, - .arena = std.heap.ArenaAllocator.init(alloc), - .sharedArena = .{ - std.heap.ArenaAllocator.init(alloc), - std.heap.ArenaAllocator.init(alloc), - }, - .slots = try MergedSpans.init(alloc, vk_constants.MAX_SKIN_SLOTS), - }; - - gAnimationSys = self; - Animator.allocator = alloc; - - try core.defineComponent(Animator, alloc); - return self; - } - - pub fn deinit(self: *@This()) void { - core.engine_logs("deinitializing animation system"); - { - core.engine_log("skeleton count {d}", .{self.skeletons.count()}); - var iter = self.skeletons.iterator(); - while (iter.next()) |i| { - i.value_ptr.*.deinit(); - } - } - - { - core.engine_log("animTracks count {d}", .{self.animTracks.count()}); - var iter = self.animTracks.iterator(); - while (iter.next()) |i| { - i.value_ptr.*.deinit(); - } - } - - for (self.sharedArena) |arena| { - arena.deinit(); - } - - for (Animator.BaseContainer.list.items) |animator| { - animator.deinit(); - } - self.slots.deinit(); - core.undefineComponent(Animator); - self.arena.deinit(); - self.skeletons.deinit(self.backingAllocator); - self.animTracks.deinit(self.backingAllocator); - self.backingAllocator.destroy(self); - } -}; - -pub var gAnimationSys: *AnimationSystem = undefined; - -pub fn getSkeletonByName(_name: core.Name) ?*Skeleton { - var name = _name; - return gAnimationSys.skeletons.get(name.handle()); -} - -const graphics = @import("../graphics.zig"); -const MergedSpans = core.MergedSpans; -const vk_constants = @import("../vk_constants.zig"); - -const anim_resolver = @import("animResolver.zig"); -const AnimResolverRef = anim_resolver.AnimResolverRef; -const AnimResolverInterface = anim_resolver.AnimResolverInterface; +// big main sy.itemsstem for animation + +const ozz = @import("ozz"); +const core = @import("core"); +const std = @import("std"); + +pub const BoneHandle = enum(u8) { _ }; + +pub const Skeleton = struct { + sk: *ozz.Skeleton, + inverseBinds: std.ArrayListUnmanaged(core.Mat) = .{}, + jointMapping: std.StringHashMapUnmanaged(u8) = .{}, + + pub fn buildJointMap(self: *@This(), allocator: std.mem.Allocator) !void { + for (self.sk.getJointsList(), 0..) |jointName, i| { + // std.debug.print("jointName {d} {s}\n", .{ i, jointName }); + const str = std.mem.span(jointName); + try self.jointMapping.put(allocator, str, @intCast(i)); + } + } + + pub fn getBoneHandleByName(self: @This(), string: []const u8) ?BoneHandle { + if (self.jointMapping.get(string)) |x| { + return @enumFromInt(x); + } else { + return null; + } + } + + pub fn deinit(self: *@This()) void { + self.sk.destroy(); + } +}; + +pub const AnimationTrack = struct { + animation: *ozz.Animation, + endTime: f32 = 1.0, + + pub fn deinit(self: *@This()) void { + self.animation.destroy(); + } +}; + +pub const PlaybackTrack = struct { + track: ?*AnimationTrack = null, + playback: f32 = 0.0, + playbackRate: f32 = 1.0, +}; + +pub const Animator = struct { + jointRemap: ?[]u8 = null, + animationName: ?core.Name = null, + skeleton: ?*Skeleton = null, + skeletonName: ?core.Name = null, + sjc: *ozz.SamplingJobContext = undefined, + + track: ?*AnimationTrack = null, + playback: f32 = 0.0, + playbackRate: f32 = 1.0, + + // todo.. implement blending + // animations: [4]*ozz.Animation = undefined, + // timelines: [4]f32 = .{ 0, 0, 0, 0 }, + animationCount: u32 = 0, + + locals: std.ArrayListUnmanaged(ozz.SoaTransform) = .{}, + models: std.ArrayListUnmanaged(ozz.Float4x4) = .{}, + finals: std.ArrayListUnmanaged(core.Mat) = .{}, + finalsSpan: core.Span = undefined, + + entity: core.Entity = undefined, + jointLength: usize = 0, + + resolverRef: ?AnimResolverRef = null, + + pub var allocator: std.mem.Allocator = undefined; + // oh god if I want to support multiple animation blending... + // maybe the kernel should contain a fixed amount of animations? + + pub fn initECS(self: *@This(), handle: core.SetHandle) void { + // get the mesh component + self.entity = core.Entity{ .handle = handle }; + + if (self.entity.get(graphics.StaticMesh)) |mesh| { + mesh.animated = true; //todo + mesh.animator = self; + self.sjc = ozz.SamplingJobContext.createMaxTracks(256); + } else { + @panic("animator added to an entity that does not have a mesh component"); + } + } + + pub fn getBoneTransform(self: *@This(), handle: BoneHandle) core.Mat { + return @bitCast(self.models.items[@intFromEnum(handle)]); + } + + pub fn setSkeletonByName(self: *@This(), skName: core.Name) !void { + if (self.skeleton != null) { + // return the previous span and allocate a new one. + gAnimationSys.slots.removeSpan(self.finalsSpan); + } + + self.skeletonName = skName; + self.skeleton = gAnimationSys.skeletons.get(self.skeletonName.?.handle()).?; + const numJoints = self.skeleton.?.sk.numJoints(); + self.jointLength = numJoints; + + self.sjc.resize(@intCast(numJoints)); + try self.locals.resize(allocator, self.skeleton.?.sk.numSoaJoints()); + try self.models.resize(allocator, numJoints); + try self.finals.resize(allocator, numJoints); + self.finalsSpan = try gAnimationSys.slots.allocate(@intCast(numJoints)); + + if (self.resolverRef) |ref| { + if (ref.vtable.onSkeletonSet) |f| { + f(ref.ptr, self); + } + } + + self.jointRemap = null; + } + + pub fn setSkeleton(self: *@This(), skeleton: []const u8) void { + self.setSkeletonByName(core.MakeName(skeleton)) catch unreachable; + } + + pub fn addResolver(self: *@This(), comptime Resolver: type) !*Resolver { + const resolver = try Resolver.create(allocator); + try resolver.onSkeletonSet(self); + + self.resolverRef = core.refFromPtr(AnimResolverInterface, resolver); + + return resolver; + } + + pub fn removeResolver(self: *@This()) void { + if (self.resolverRef) |ref| { + ref.vtable.destroy(ref.ptr); + self.resolverRef = null; + } + } + + pub fn update(self: *@This(), dt: f64) void { + if (self.skeleton == null) { + return; + } + + // if a resolver is present, use that to update my the finals instead of the default function below + if (self.resolverRef) |ref| { + ref.vtable.resolve(ref.ptr, dt, self); + return; + } + + if (!self.defaultSample(dt)) { + return; + } + + self.modelToFinal(); + } + + fn defaultSample(self: *@This(), dt: f64) bool { + if (self.track == null) + return false; + + const track = self.track.?; + if (track.endTime < 0.01) + return false; + + const skeleton = self.skeleton.?; + self.playback += @as(f32, @floatCast(dt)) * self.playbackRate; + + while (self.playback > track.endTime) { + self.playback -= track.endTime; + } + + var samplingJob: ozz.SamplingJob = .{ + .ratio = self.playback / track.endTime, + .animation = track.animation, + .context = self.sjc, + .output = ozz.makeSpan(self.locals.items), + }; + + if (!samplingJob.run()) { + core.engine_errs("sampling job failed"); + return false; + } + + var ltmJob: ozz.LocalToModelJob = .{ + .skeleton = skeleton.sk, + .input = ozz.makeSpan(self.locals.items), + .output = ozz.makeSpan(self.models.items), + }; + + if (!ltmJob.run()) { + core.engine_errs("local to model job failed"); + return false; + } + + return true; + } + + pub fn commitLocalToModel(self: *@This(), input: []ozz.SoaTransform) void { + self.localToModel(input, self.models.items); + } + + pub fn localToModel(self: *@This(), input: []ozz.SoaTransform, output: []ozz.Float4x4) void { + var ltmJob: ozz.LocalToModelJob = .{ + .skeleton = self.skeleton.?.sk, + .input = ozz.makeSpan(input), + .output = ozz.makeSpan(output), + }; + + if (!ltmJob.run()) { + core.engine_errs("local to model job failed"); + return; + } + } + + pub fn sampleAnimation(self: *@This(), time: f32, track: *AnimationTrack, output: []ozz.SoaTransform) void { + var samplingJob: ozz.SamplingJob = .{ + .ratio = time / track.endTime, + .animation = track.animation, + .context = self.sjc, + .output = ozz.makeSpan(output), + }; + + if (!samplingJob.run()) { + core.engine_errs("sampling job failed"); + return; + } + } + + pub fn modelToFinal(self: *@This()) void { + if (self.jointRemap == null) { + if (self.entity.get(graphics.StaticMesh)) |meshComponent| { + if (meshComponent.mesh) |mesh| { + self.jointRemap = mesh.jointRemap; + } + } + } + + const skeleton = self.skeleton.?; + for (self.models.items, 0..) |model, i| { + const transform: core.Mat = @bitCast(model); + + // const p: core.zm.Vec = .{ 0, 0, 0, 1 }; + // graphics.debugSphere(core.Vectorf.fromZm(core.zm.mul(p, transform)), 0.03, .{ + // .color = if (i == 15) .{ .x = 1 } else .{ .y = 1 }, + // }); + + const final = core.zm.mul(skeleton.inverseBinds.items[i], transform); + // joint remap ozz -> gltf + if (self.jointRemap) |jr| { + // core.engine_log("{d} xx {d}", .{ i, jr[i] }); + self.finals.items[@intCast(jr[i])] = final; + } else { + self.finals.items[i] = final; + } + // core.engine_log( + // "[{d}] {d} {d} {d} {d}, {d} {d} {d} {d}", + // .{ i, transform[0][0], transform[0][1], transform[0][2], transform[0][3], transform[1][0], transform[1][1], transform[1][2], transform[1][3] }, + // ); + } + } + + pub fn setAnimationByName(self: *@This(), _name: core.Name) !void { + var name = _name; + self.track = gAnimationSys.animTracks.get(name.handle()); + } + + pub fn setAnimation(self: *@This(), path: []const u8) void { + const name = core.MakeName(path); + self.setAnimationByName(name) catch unreachable; + } + + pub fn deinit(self: *@This()) void { + self.sjc.destroy(); + self.removeResolver(); + self.finals.deinit(allocator); + self.locals.deinit(allocator); + self.models.deinit(allocator); + } + + pub var BaseContainer: *core.SparseMap(@This()) = undefined; + pub const ComponentName = "Animator"; + pub const ScriptExports: []const []const u8 = &.{}; +}; + +pub const AnimationSystem = struct { + backingAllocator: std.mem.Allocator, + + arena: std.heap.ArenaAllocator, + slots: MergedSpans, + + // Only AnimationTrack and Skeletons are made using the ArenaAllocator + animTracks: std.AutoHashMapUnmanaged(u32, *AnimationTrack) = .{}, + skeletons: std.AutoHashMapUnmanaged(u32, *Skeleton) = .{}, + + sharedArena: [2]std.heap.ArenaAllocator, // could be a good usecase for a fat bump arena + shared: [2]std.ArrayListUnmanaged(MatrixUploads) = .{ .{}, .{} }, + sharedLocks: [2]std.Thread.Mutex = .{ .{}, .{} }, // could be a good usecase for a fat bump arena + + pub const MatrixUploads = struct { + offset: u32, + matrices: std.ArrayListUnmanaged(core.Mat) = .{}, + }; + + pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); + pub const RendererInterfaceVTable = graphics.RendererInterface.from(@This()); + + pub fn preTick(self: *@This(), dt: f64) !void { + _ = self; + var z1 = core.tracy.ZoneN(@src(), "animation system tick"); + defer z1.End(); + + for (Animator.BaseContainer.list.items) |animator| { + animator.update(dt); + } + } + + pub fn newAnimTrack(self: *@This(), _name: core.Name, anim: *ozz.Animation) !void { + var name = _name; + const new = try self.arenaAllocator().create(AnimationTrack); + new.* = .{ + .animation = anim, + .endTime = anim.getDuration(), + }; + try self.animTracks.put(self.backingAllocator, name.handle(), new); + } + + pub fn newSkeleton(self: *@This(), _name: core.Name, sk: *ozz.Skeleton) !void { + const new = try self.arenaAllocator().create(Skeleton); + new.* = .{ + .sk = sk, + }; + var name = _name; + + try new.buildJointMap(self.arenaAllocator()); + + try new.inverseBinds.resize(self.arenaAllocator(), new.sk.numJoints()); + + if (new.inverseBinds.items.len > 256) { + @panic("too many bones in skeleton, not supported"); + } + + var bindModels = std.ArrayList(ozz.Float4x4).init(self.backingAllocator); + defer bindModels.deinit(); + + try bindModels.resize(new.sk.numJoints()); + + var ltmJob: ozz.LocalToModelJob = .{ + .skeleton = new.sk, + .input = new.sk.getRestPoseModel(), + .output = ozz.makeSpan(bindModels.items), + }; + + core.engine_log("creating bind pose {d} joints", .{new.inverseBinds.items.len}); + + if (!ltmJob.run()) { + core.engine_logs("unable to get bind pose"); + return error.UnableToLoad; + } + + for (bindModels.items, 0..) |bind, i| { + // const p: core.zm.Vec = .{ 0, 0, 0, 1 }; + // graphics.debugSphere(core.Vectorf.fromZm(core.zm.mul(p, @as(core.Mat, @bitCast(bind)))), 0.1, .{ .duration = 100 }); + + new.inverseBinds.items[i] = core.zm.inverse(@as(core.Mat, @bitCast(bind))); + } + + try self.skeletons.put(self.backingAllocator, name.handle(), new); + } + + pub fn arenaAllocator(self: *@This()) std.mem.Allocator { + return self.arena.allocator(); + } + + pub fn getShared(self: @This(), fi: u32) []const MatrixUploads { + return self.shared[fi].items; + } + + pub fn sendShared(self: *@This(), frameIndex: u32) void { + const fi: usize = @intCast(frameIndex); + + self.sharedLocks[fi].lock(); + defer self.sharedLocks[fi].unlock(); + + _ = self.sharedArena[fi].reset(.retain_capacity); + + const allocator = self.sharedArena[fi].allocator(); + const shared = &self.shared[fi]; + shared.* = .{}; + + for (Animator.BaseContainer.list.items) |animator| { + var upload: MatrixUploads = .{ .offset = animator.finalsSpan.start }; + // core.engine_log( + // "finalsSpan size offset{d} {d} animator finals {d}\n", + // .{ + // animator.finalsSpan.start, + // animator.finalsSpan.size, + // animator.finals.items.len + // }); + + upload.matrices.resize(allocator, animator.finalsSpan.size) catch unreachable; + + for (animator.finals.items, 0..) |final, i| { + upload.matrices.items[i] = final; + } + + shared.append(allocator, upload) catch unreachable; + } + } + + pub fn init(alloc: std.mem.Allocator) !*@This() { + const self = try alloc.create(@This()); + self.* = .{ + .backingAllocator = alloc, + .arena = std.heap.ArenaAllocator.init(alloc), + .sharedArena = .{ + std.heap.ArenaAllocator.init(alloc), + std.heap.ArenaAllocator.init(alloc), + }, + .slots = try MergedSpans.init(alloc, vk_constants.MAX_SKIN_SLOTS), + }; + + gAnimationSys = self; + Animator.allocator = alloc; + + try core.defineComponent(Animator, alloc); + return self; + } + + pub fn deinit(self: *@This()) void { + core.engine_logs("deinitializing animation system"); + { + core.engine_log("skeleton count {d}", .{self.skeletons.count()}); + var iter = self.skeletons.iterator(); + while (iter.next()) |i| { + i.value_ptr.*.deinit(); + } + } + + { + core.engine_log("animTracks count {d}", .{self.animTracks.count()}); + var iter = self.animTracks.iterator(); + while (iter.next()) |i| { + i.value_ptr.*.deinit(); + } + } + + for (self.sharedArena) |arena| { + arena.deinit(); + } + + for (Animator.BaseContainer.list.items) |animator| { + animator.deinit(); + } + self.slots.deinit(); + core.undefineComponent(Animator); + self.arena.deinit(); + self.skeletons.deinit(self.backingAllocator); + self.animTracks.deinit(self.backingAllocator); + self.backingAllocator.destroy(self); + } +}; + +pub var gAnimationSys: *AnimationSystem = undefined; + +pub fn getSkeletonByName(_name: core.Name) ?*Skeleton { + var name = _name; + return gAnimationSys.skeletons.get(name.handle()); +} + +const graphics = @import("../graphics.zig"); +const MergedSpans = core.MergedSpans; +const vk_constants = @import("../vk_constants.zig"); + +const anim_resolver = @import("animResolver.zig"); +const AnimResolverRef = anim_resolver.AnimResolverRef; +const AnimResolverInterface = anim_resolver.AnimResolverInterface; diff --git a/engine/graphics/src/animation/loaders.zig b/engine/_archive/graphics/src/animation/loaders.zig similarity index 97% rename from engine/graphics/src/animation/loaders.zig rename to engine/_archive/graphics/src/animation/loaders.zig index bea698a..73935e4 100644 --- a/engine/graphics/src/animation/loaders.zig +++ b/engine/_archive/graphics/src/animation/loaders.zig @@ -1,86 +1,86 @@ -pub const AnimationLoader = struct { - pub var LoaderInterfaceVTable: assets.AssetLoaderInterface = assets.AssetLoaderInterface.from("Animation", @This()); - pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); - - sys: *animation_system.AnimationSystem, - - pub fn discardAll(self: *@This()) void { - _ = self; - } - - pub fn loadAsset(self: *@This(), assetRef: assets.AssetRef, propertiesBag: ?assets.AssetPropertiesBag) assets.AssetLoaderError!void { - const animation = ozz.Animation.create(); - - const mapping = core.fs().loadFile(propertiesBag.?.path) catch return error.UnableToLoad; - defer core.fs().unmap(mapping); - animation.loadFromBytes(mapping.bytes); - - self.sys.newAnimTrack(assetRef.name, animation) catch return error.UnableToLoad; - } - - pub fn init(allocator: std.mem.Allocator) !*@This() { - const self = try allocator.create(@This()); - - self.* = .{ - .sys = animation_system.gAnimationSys, - }; - - return self; - } - - pub fn destroy(self: *@This(), allocator: std.mem.Allocator) void { - allocator.destroy(self); - } -}; - -pub const SkeletonLoader = struct { - pub var LoaderInterfaceVTable: assets.AssetLoaderInterface = assets.AssetLoaderInterface.from("Skeleton", @This()); - pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); - - sys: *animation_system.AnimationSystem, - - pub fn discardAll(self: *@This()) void { - _ = self; - } - - pub fn loadAsset(self: *@This(), assetRef: assets.AssetRef, propertiesBag: ?assets.AssetPropertiesBag) assets.AssetLoaderError!void { - const sk = ozz.Skeleton.create(); - - const mapping = core.fs().loadFile(propertiesBag.?.path) catch return error.UnableToLoad; - defer core.fs().unmap(mapping); - sk.loadFromBytes(mapping.bytes); - - self.sys.newSkeleton(assetRef.name, sk) catch return error.UnableToLoad; - } - - pub fn init(allocator: std.mem.Allocator) !*@This() { - const self = try allocator.create(@This()); - - self.* = .{ - .sys = animation_system.gAnimationSys, - }; - - return self; - } - - pub fn destroy(self: *@This(), allocator: std.mem.Allocator) void { - allocator.destroy(self); - } -}; - -pub var gSkeletonLoader: *SkeletonLoader = undefined; -pub var gAnimationLoader: *AnimationLoader = undefined; - -pub fn initLoaders() !void { - gSkeletonLoader = try core.createObject(SkeletonLoader, .{}); - gAnimationLoader = try core.createObject(AnimationLoader, .{}); - - try assets.gAssetSys.registerLoader(gSkeletonLoader); - try assets.gAssetSys.registerLoader(gAnimationLoader); -} - -const animation_system = @import("animationSystem.zig"); -const assets = @import("assets"); -const core = @import("core"); -const std = @import("std"); -const ozz = @import("ozz"); +pub const AnimationLoader = struct { + pub var LoaderInterfaceVTable: assets.AssetLoaderInterface = assets.AssetLoaderInterface.from("Animation", @This()); + pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); + + sys: *animation_system.AnimationSystem, + + pub fn discardAll(self: *@This()) void { + _ = self; + } + + pub fn loadAsset(self: *@This(), assetRef: assets.AssetRef, propertiesBag: ?assets.AssetPropertiesBag) assets.AssetLoaderError!void { + const animation = ozz.Animation.create(); + + const mapping = core.fs().loadFile(propertiesBag.?.path) catch return error.UnableToLoad; + defer core.fs().unmap(mapping); + animation.loadFromBytes(mapping.bytes); + + self.sys.newAnimTrack(assetRef.name, animation) catch return error.UnableToLoad; + } + + pub fn init(allocator: std.mem.Allocator) !*@This() { + const self = try allocator.create(@This()); + + self.* = .{ + .sys = animation_system.gAnimationSys, + }; + + return self; + } + + pub fn destroy(self: *@This(), allocator: std.mem.Allocator) void { + allocator.destroy(self); + } +}; + +pub const SkeletonLoader = struct { + pub var LoaderInterfaceVTable: assets.AssetLoaderInterface = assets.AssetLoaderInterface.from("Skeleton", @This()); + pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); + + sys: *animation_system.AnimationSystem, + + pub fn discardAll(self: *@This()) void { + _ = self; + } + + pub fn loadAsset(self: *@This(), assetRef: assets.AssetRef, propertiesBag: ?assets.AssetPropertiesBag) assets.AssetLoaderError!void { + const sk = ozz.Skeleton.create(); + + const mapping = core.fs().loadFile(propertiesBag.?.path) catch return error.UnableToLoad; + defer core.fs().unmap(mapping); + sk.loadFromBytes(mapping.bytes); + + self.sys.newSkeleton(assetRef.name, sk) catch return error.UnableToLoad; + } + + pub fn init(allocator: std.mem.Allocator) !*@This() { + const self = try allocator.create(@This()); + + self.* = .{ + .sys = animation_system.gAnimationSys, + }; + + return self; + } + + pub fn destroy(self: *@This(), allocator: std.mem.Allocator) void { + allocator.destroy(self); + } +}; + +pub var gSkeletonLoader: *SkeletonLoader = undefined; +pub var gAnimationLoader: *AnimationLoader = undefined; + +pub fn initLoaders() !void { + gSkeletonLoader = try core.createObject(SkeletonLoader, .{}); + gAnimationLoader = try core.createObject(AnimationLoader, .{}); + + try assets.gAssetSys.registerLoader(gSkeletonLoader); + try assets.gAssetSys.registerLoader(gAnimationLoader); +} + +const animation_system = @import("animationSystem.zig"); +const assets = @import("assets"); +const core = @import("core"); +const std = @import("std"); +const ozz = @import("ozz"); diff --git a/engine/graphics/src/cooking/mesh_cooking.zig b/engine/_archive/graphics/src/cooking/mesh_cooking.zig similarity index 96% rename from engine/graphics/src/cooking/mesh_cooking.zig rename to engine/_archive/graphics/src/cooking/mesh_cooking.zig index 42b81e4..40937a5 100644 --- a/engine/graphics/src/cooking/mesh_cooking.zig +++ b/engine/_archive/graphics/src/cooking/mesh_cooking.zig @@ -1,239 +1,239 @@ -const MeshConfig = struct { - info: CookInfo = .{ .assetType = "Mesh" }, // there must always be a CookInfo field - sourceType: []const u8 = "obj", - animated: bool = false, -}; - -const extList = [_][]const u8{ "gltf", "obj", "glb" }; -pub fn generateFunction(allocator: std.mem.Allocator, path: []const u8, out: *std.ArrayList(u8)) GenerateError!void { - _ = allocator; - out.clearRetainingCapacity(); - const ext = core.getFileExtension(path)[1..]; - - var config: MeshConfig = .{}; - - for (extList) |e| { - if (std.mem.eql(u8, e, ext)) { - config.sourceType = e; - - if (std.mem.eql(u8, e, "glb")) { - config.sourceType = "gltf"; - } - } - } - - std.json.stringify( - config, - .{ .whitespace = .indent_4 }, - out.writer(), - ) catch return GenerateError.UnableToGenerate; -} - -fn cookObj(allocator: std.mem.Allocator, dir: std.fs.Dir, path: []const u8) cook.CookResult { - const rawFileBytes = cook.loadFileAlloc(allocator, dir, path) catch unreachable; - defer allocator.free(rawFileBytes); - - var out = std.ArrayList(u8).init(allocator); - - var vertices = std.ArrayList(Vertex).init(allocator); - defer vertices.deinit(); - - var objs = obj.loadObjBytes(rawFileBytes, allocator) catch unreachable; - defer objs.deinit(); - - if (objs.meshes.items.len > 0) { - mesh.loadObjMeshVertices(&vertices, objs.meshes.items[0]) catch unreachable; - for (vertices.items) |vert| { - out.appendSlice(&@as([@sizeOf(Vertex)]u8, @bitCast(vert))) catch unreachable; - } - - return .{ - .bytes = out, - .result = .Success, - }; - } else { - return .{ - .bytes = out, - .result = .Failure, - }; - } -} - -fn ensureGltf2ozz(allocator: std.mem.Allocator) !void { - const suffix = if (builtin.os.tag == .windows) ".exe" else ""; - std.fs.cwd().access("zig-out/tools/gltf2ozz" ++ suffix, .{}) catch { - const argv: []const []const u8 = &.{ "zig", "build", "tools" }; - - core.engine_log("gltf2ozz missing, building it...", .{}); - - var child = std.process.Child.init(argv, allocator); - child.stdin_behavior = .Ignore; - child.stdout_behavior = .Pipe; - child.stderr_behavior = .Pipe; - child.cwd = "."; - - switch (try child.spawnAndWait()) { - .Exited => |value| { - if (value == 0) { - core.engine_log("gltf2ozz built", .{}); - } else { - core.engine_logs("unable to build gltf2ozz"); - } - }, - .Signal => { - core.engine_logs("unable to build gltf2ozz"); - }, - .Stopped => {}, - .Unknown => { - unreachable; - }, - } - - return; - }; - - core.engine_log("gltf2ozz found", .{}); -} - -fn cookAnimations(allocator: std.mem.Allocator, dir: std.fs.Dir, path: []const u8, config: MeshConfig) !void { - _ = config; - - // 1. check if it has an associated .ozzconfig file. - - const gltf2OzzAbs = try std.fs.cwd().realpathAlloc(allocator, "zig-out/tools/gltf2ozz.exe"); - defer allocator.free(gltf2OzzAbs); - - const ozzconfig = try std.fmt.allocPrint(allocator, "{s}.ozzconfig", .{path}); - defer allocator.free(ozzconfig); - - const fileArg = try std.fmt.allocPrint(allocator, "--file={s}", .{core.getBasePath(path)}); - defer allocator.free(fileArg); - - const configArg = try std.fmt.allocPrint(allocator, "--config_file={s}", .{core.getBasePath(ozzconfig)}); - defer allocator.free(configArg); - - // todo, fix this later, idrc right now. - const newConfigArg = try std.fmt.allocPrint(allocator, "--config_dump_reference={s}", .{core.getBasePath(ozzconfig)}); - defer allocator.free(newConfigArg); - - const absFile = try dir.realpathAlloc(allocator, path); - defer allocator.free(absFile); - - var argv: []const []const u8 = &.{ - gltf2OzzAbs, - fileArg, - configArg, - }; - - dir.access(ozzconfig, .{}) catch { - argv = &.{ - gltf2OzzAbs, - fileArg, - newConfigArg, - }; - - core.engine_log("creating ozz config for file, marked as animated but no animation data", .{}); - }; - - // std.debug.print("{s} {s} {s} cwd = {s}\n", .{ argv[0], argv[1], argv[2], core.getFolder(absFile) }); - - const result = try std.process.Child.run(.{ - .argv = argv, - .allocator = allocator, - .cwd = core.getFolder(absFile), - .max_output_bytes = 150 * 1024 * 1024, - }); - - defer allocator.free(result.stdout); - defer allocator.free(result.stderr); - - var success: bool = true; - switch (result.term) { - .Exited => |value| { - if (value != 0) { - success = false; - } - }, - .Signal => { - success = false; - }, - .Stopped => { - success = false; - // no-op should be ok? - }, - .Unknown => { - unreachable; - }, - } - - if (success) { - core.engine_log("generated animations for {s}", .{path}); - } else { - core.engine_log("error generating animations {s} stdout:\n{s}\n stderr:{s}\n", .{ path, result.stdout, result.stderr }); - } - // 2. if so, run it through gltf2ozz with that file. -} - -fn cookGltf(allocator: std.mem.Allocator, dir: std.fs.Dir, path: []const u8, config: MeshConfig) cook.CookResult { - core.engine_logs("gltf cooking not implemeted"); - const out = std.ArrayList(u8).init(allocator); - - // check if it's animated. if it's animated, then invoke gltf2ozz and create a .ozzconfig file and - // make a subfolder called - - if (config.animated) { - // if gltf2ozz isn't there then we have to call zig build tools - ensureGltf2ozz(allocator) catch unreachable; - - cookAnimations(allocator, dir, path, config) catch unreachable; - } - - return .{ .bytes = out, .result = .Failure }; -} - -pub fn cookFunction( - allocator: std.mem.Allocator, - dir: std.fs.Dir, - path: []const u8, - params: cook.CookParams, -) cook.CookResult { - core.engine_log("{s}", .{params.cookFileName}); - const fc = cook.loadFileAlloc(allocator, dir, params.cookFileName) catch unreachable; - defer allocator.free(fc); - - const config = std.json.parseFromSlice(MeshConfig, allocator, fc[0 .. fc.len - 1], .{}) catch unreachable; - defer config.deinit(); - - if (std.mem.eql(u8, config.value.sourceType, "obj")) { - return cookObj(allocator, dir, path); - } else { - return cookGltf(allocator, dir, path, config.value); - } -} - -pub fn initCooker(allocator: std.mem.Allocator) !void { - _ = allocator; - const registry = assets.cook.getRegistry(); - - try registry.install("Mesh", generateFunction, cookFunction, &.{ - ".obj", - ".gltf", - ".glb", - }); -} - -pub fn deinitCooker() void { - // -} - -const std = @import("std"); -const assets = @import("assets"); -const cook = assets.cook; -const CookInfo = assets.cook.CookInfo; -const GenerateError = assets.cook.GenerateError; -const core = @import("core"); -const obj = @import("objLoader"); -const builtin = @import("builtin"); -const mesh = @import("../mesh.zig"); -const Mesh = mesh.Mesh; -const Vertex = mesh.MeshVertex; +const MeshConfig = struct { + info: CookInfo = .{ .assetType = "Mesh" }, // there must always be a CookInfo field + sourceType: []const u8 = "obj", + animated: bool = false, +}; + +const extList = [_][]const u8{ "gltf", "obj", "glb" }; +pub fn generateFunction(allocator: std.mem.Allocator, path: []const u8, out: *std.ArrayList(u8)) GenerateError!void { + _ = allocator; + out.clearRetainingCapacity(); + const ext = core.getFileExtension(path)[1..]; + + var config: MeshConfig = .{}; + + for (extList) |e| { + if (std.mem.eql(u8, e, ext)) { + config.sourceType = e; + + if (std.mem.eql(u8, e, "glb")) { + config.sourceType = "gltf"; + } + } + } + + std.json.stringify( + config, + .{ .whitespace = .indent_4 }, + out.writer(), + ) catch return GenerateError.UnableToGenerate; +} + +fn cookObj(allocator: std.mem.Allocator, dir: std.fs.Dir, path: []const u8) cook.CookResult { + const rawFileBytes = cook.loadFileAlloc(allocator, dir, path) catch unreachable; + defer allocator.free(rawFileBytes); + + var out = std.ArrayList(u8).init(allocator); + + var vertices = std.ArrayList(Vertex).init(allocator); + defer vertices.deinit(); + + var objs = obj.loadObjBytes(rawFileBytes, allocator) catch unreachable; + defer objs.deinit(); + + if (objs.meshes.items.len > 0) { + mesh.loadObjMeshVertices(&vertices, objs.meshes.items[0]) catch unreachable; + for (vertices.items) |vert| { + out.appendSlice(&@as([@sizeOf(Vertex)]u8, @bitCast(vert))) catch unreachable; + } + + return .{ + .bytes = out, + .result = .Success, + }; + } else { + return .{ + .bytes = out, + .result = .Failure, + }; + } +} + +fn ensureGltf2ozz(allocator: std.mem.Allocator) !void { + const suffix = if (builtin.os.tag == .windows) ".exe" else ""; + std.fs.cwd().access("zig-out/tools/gltf2ozz" ++ suffix, .{}) catch { + const argv: []const []const u8 = &.{ "zig", "build", "tools" }; + + core.engine_log("gltf2ozz missing, building it...", .{}); + + var child = std.process.Child.init(argv, allocator); + child.stdin_behavior = .Ignore; + child.stdout_behavior = .Pipe; + child.stderr_behavior = .Pipe; + child.cwd = "."; + + switch (try child.spawnAndWait()) { + .Exited => |value| { + if (value == 0) { + core.engine_log("gltf2ozz built", .{}); + } else { + core.engine_logs("unable to build gltf2ozz"); + } + }, + .Signal => { + core.engine_logs("unable to build gltf2ozz"); + }, + .Stopped => {}, + .Unknown => { + unreachable; + }, + } + + return; + }; + + core.engine_log("gltf2ozz found", .{}); +} + +fn cookAnimations(allocator: std.mem.Allocator, dir: std.fs.Dir, path: []const u8, config: MeshConfig) !void { + _ = config; + + // 1. check if it has an associated .ozzconfig file. + + const gltf2OzzAbs = try std.fs.cwd().realpathAlloc(allocator, "zig-out/tools/gltf2ozz.exe"); + defer allocator.free(gltf2OzzAbs); + + const ozzconfig = try std.fmt.allocPrint(allocator, "{s}.ozzconfig", .{path}); + defer allocator.free(ozzconfig); + + const fileArg = try std.fmt.allocPrint(allocator, "--file={s}", .{core.getBasePath(path)}); + defer allocator.free(fileArg); + + const configArg = try std.fmt.allocPrint(allocator, "--config_file={s}", .{core.getBasePath(ozzconfig)}); + defer allocator.free(configArg); + + // todo, fix this later, idrc right now. + const newConfigArg = try std.fmt.allocPrint(allocator, "--config_dump_reference={s}", .{core.getBasePath(ozzconfig)}); + defer allocator.free(newConfigArg); + + const absFile = try dir.realpathAlloc(allocator, path); + defer allocator.free(absFile); + + var argv: []const []const u8 = &.{ + gltf2OzzAbs, + fileArg, + configArg, + }; + + dir.access(ozzconfig, .{}) catch { + argv = &.{ + gltf2OzzAbs, + fileArg, + newConfigArg, + }; + + core.engine_log("creating ozz config for file, marked as animated but no animation data", .{}); + }; + + // std.debug.print("{s} {s} {s} cwd = {s}\n", .{ argv[0], argv[1], argv[2], core.getFolder(absFile) }); + + const result = try std.process.Child.run(.{ + .argv = argv, + .allocator = allocator, + .cwd = core.getFolder(absFile), + .max_output_bytes = 150 * 1024 * 1024, + }); + + defer allocator.free(result.stdout); + defer allocator.free(result.stderr); + + var success: bool = true; + switch (result.term) { + .Exited => |value| { + if (value != 0) { + success = false; + } + }, + .Signal => { + success = false; + }, + .Stopped => { + success = false; + // no-op should be ok? + }, + .Unknown => { + unreachable; + }, + } + + if (success) { + core.engine_log("generated animations for {s}", .{path}); + } else { + core.engine_log("error generating animations {s} stdout:\n{s}\n stderr:{s}\n", .{ path, result.stdout, result.stderr }); + } + // 2. if so, run it through gltf2ozz with that file. +} + +fn cookGltf(allocator: std.mem.Allocator, dir: std.fs.Dir, path: []const u8, config: MeshConfig) cook.CookResult { + core.engine_logs("gltf cooking not implemeted"); + const out = std.ArrayList(u8).init(allocator); + + // check if it's animated. if it's animated, then invoke gltf2ozz and create a .ozzconfig file and + // make a subfolder called + + if (config.animated) { + // if gltf2ozz isn't there then we have to call zig build tools + ensureGltf2ozz(allocator) catch unreachable; + + cookAnimations(allocator, dir, path, config) catch unreachable; + } + + return .{ .bytes = out, .result = .Failure }; +} + +pub fn cookFunction( + allocator: std.mem.Allocator, + dir: std.fs.Dir, + path: []const u8, + params: cook.CookParams, +) cook.CookResult { + core.engine_log("{s}", .{params.cookFileName}); + const fc = cook.loadFileAlloc(allocator, dir, params.cookFileName) catch unreachable; + defer allocator.free(fc); + + const config = std.json.parseFromSlice(MeshConfig, allocator, fc[0 .. fc.len - 1], .{}) catch unreachable; + defer config.deinit(); + + if (std.mem.eql(u8, config.value.sourceType, "obj")) { + return cookObj(allocator, dir, path); + } else { + return cookGltf(allocator, dir, path, config.value); + } +} + +pub fn initCooker(allocator: std.mem.Allocator) !void { + _ = allocator; + const registry = assets.cook.getRegistry(); + + try registry.install("Mesh", generateFunction, cookFunction, &.{ + ".obj", + ".gltf", + ".glb", + }); +} + +pub fn deinitCooker() void { + // +} + +const std = @import("std"); +const assets = @import("assets"); +const cook = assets.cook; +const CookInfo = assets.cook.CookInfo; +const GenerateError = assets.cook.GenerateError; +const core = @import("core"); +const obj = @import("objLoader"); +const builtin = @import("builtin"); +const mesh = @import("../mesh.zig"); +const Mesh = mesh.Mesh; +const Vertex = mesh.MeshVertex; diff --git a/engine/graphics/src/cooking/texture_cooking.zig b/engine/_archive/graphics/src/cooking/texture_cooking.zig similarity index 96% rename from engine/graphics/src/cooking/texture_cooking.zig rename to engine/_archive/graphics/src/cooking/texture_cooking.zig index 29e51d4..3006150 100644 --- a/engine/graphics/src/cooking/texture_cooking.zig +++ b/engine/_archive/graphics/src/cooking/texture_cooking.zig @@ -1,60 +1,60 @@ -const TextureConfig = struct { - info: CookInfo = .{ .assetType = "Texture" }, // there must always be a CookInfo field - sourceType: []const u8 = "png", -}; - -pub fn generateFunction(allocator: std.mem.Allocator, path: []const u8, out: *std.ArrayList(u8)) GenerateError!void { - _ = allocator; - _ = path; - - out.clearRetainingCapacity(); - std.json.stringify( - TextureConfig{}, - .{ .whitespace = .indent_4 }, - out.writer(), - ) catch return GenerateError.UnableToGenerate; -} - -pub fn cookFunction( - allocator: std.mem.Allocator, - dir: std.fs.Dir, - path: []const u8, - params: cook.CookParams, -) cook.CookResult { - _ = params; - - const rawFileBytes = cook.loadFileAlloc(allocator, dir, path) catch unreachable; - defer allocator.free(rawFileBytes); - // 1. load the file, and create a bytes buffer - var contents = png.PngContents.initFromBytes(allocator, path, rawFileBytes) catch unreachable; - defer contents.deinit(); - - // png.PngContents.initFromBytes(allocator: std.mem.Allocator, pathName: []const u8, pngFileContents: []const u8) - // 2. use the PngContents function to cook it. - - return .{ - .bytes = contents.toBuffer() catch unreachable, - .result = .Success, - }; -} - -pub fn initCooker(allocator: std.mem.Allocator) !void { - _ = allocator; - const registry = assets.cook.getRegistry(); - - try registry.install("Texture", generateFunction, cookFunction, &.{ - ".png", - }); -} - -pub fn deinitCooker() void { - // -} - -const std = @import("std"); -const assets = @import("assets"); -const cook = assets.cook; -const CookInfo = assets.cook.CookInfo; -const GenerateError = assets.cook.GenerateError; -const core = @import("core"); -const png = core.png; +const TextureConfig = struct { + info: CookInfo = .{ .assetType = "Texture" }, // there must always be a CookInfo field + sourceType: []const u8 = "png", +}; + +pub fn generateFunction(allocator: std.mem.Allocator, path: []const u8, out: *std.ArrayList(u8)) GenerateError!void { + _ = allocator; + _ = path; + + out.clearRetainingCapacity(); + std.json.stringify( + TextureConfig{}, + .{ .whitespace = .indent_4 }, + out.writer(), + ) catch return GenerateError.UnableToGenerate; +} + +pub fn cookFunction( + allocator: std.mem.Allocator, + dir: std.fs.Dir, + path: []const u8, + params: cook.CookParams, +) cook.CookResult { + _ = params; + + const rawFileBytes = cook.loadFileAlloc(allocator, dir, path) catch unreachable; + defer allocator.free(rawFileBytes); + // 1. load the file, and create a bytes buffer + var contents = png.PngContents.initFromBytes(allocator, path, rawFileBytes) catch unreachable; + defer contents.deinit(); + + // png.PngContents.initFromBytes(allocator: std.mem.Allocator, pathName: []const u8, pngFileContents: []const u8) + // 2. use the PngContents function to cook it. + + return .{ + .bytes = contents.toBuffer() catch unreachable, + .result = .Success, + }; +} + +pub fn initCooker(allocator: std.mem.Allocator) !void { + _ = allocator; + const registry = assets.cook.getRegistry(); + + try registry.install("Texture", generateFunction, cookFunction, &.{ + ".png", + }); +} + +pub fn deinitCooker() void { + // +} + +const std = @import("std"); +const assets = @import("assets"); +const cook = assets.cook; +const CookInfo = assets.cook.CookInfo; +const GenerateError = assets.cook.GenerateError; +const core = @import("core"); +const png = core.png; diff --git a/engine/graphics/src/debug_draws.zig b/engine/_archive/graphics/src/debug_draws.zig similarity index 100% rename from engine/graphics/src/debug_draws.zig rename to engine/_archive/graphics/src/debug_draws.zig diff --git a/engine/graphics/src/gpu_pipe_data.zig b/engine/_archive/graphics/src/gpu_pipe_data.zig similarity index 100% rename from engine/graphics/src/gpu_pipe_data.zig rename to engine/_archive/graphics/src/gpu_pipe_data.zig diff --git a/engine/graphics/src/graphics.zig b/engine/_archive/graphics/src/graphics.zig similarity index 100% rename from engine/graphics/src/graphics.zig rename to engine/_archive/graphics/src/graphics.zig diff --git a/engine/graphics/src/materials.zig b/engine/_archive/graphics/src/materials.zig similarity index 96% rename from engine/graphics/src/materials.zig rename to engine/_archive/graphics/src/materials.zig index 00be75e..6f5d731 100644 --- a/engine/graphics/src/materials.zig +++ b/engine/_archive/graphics/src/materials.zig @@ -1,52 +1,52 @@ -const std = @import("std"); -const vk = @import("vulkan"); -const core = @import("core"); -const VkConstants = @import("vk_constants.zig"); -const meshes = @import("mesh.zig"); -const NeonVkContext = @import("vk_renderer.zig").NeonVkContext; -const vk_pipeline = @import("vk_pipeline.zig"); - -const NeonVkPipelineBuilder = vk_pipeline.NeonVkPipelineBuilder; -const EulerAngles = core.EulerAngles; -const Mat = core.Mat; -const Vectorf = core.Vectorf; -const Quat = core.Quat; -const zm = core.zm; -const mul = zm.mul; - -pub const Material = struct { - materialName: core.Name, - textureSet: vk.DescriptorSet = .null_handle, - pipeline: vk.Pipeline, - layout: vk.PipelineLayout, - - pub fn deinit(self: *Material, ctx: *NeonVkContext) void { - ctx.vkd.destroyPipeline(ctx.dev, self.pipeline, null); - ctx.vkAllocator.destroyPipelineLayout(ctx.dev, self.layout); - } -}; - -pub const MaterialBuilder = struct { - const Self = @This(); - allocator: std.mem.Allocator, - ctx: *NeonVkContext, - pipelineBuilder: NeonVkPipelineBuilder, - - pub fn init(ctx: *NeonVkContext) MaterialBuilder { - const self = MaterialBuilder{ - .allocator = ctx.allocator, - .ctx = ctx, - }; - - return self; - } - - pub fn build(self: *Self) !void { - _ = self; - // try self.ctx.add_material(); - } - - pub fn deinit(self: *Self) void { - _ = self; - } -}; +const std = @import("std"); +const vk = @import("vulkan"); +const core = @import("core"); +const VkConstants = @import("vk_constants.zig"); +const meshes = @import("mesh.zig"); +const NeonVkContext = @import("vk_renderer.zig").NeonVkContext; +const vk_pipeline = @import("vk_pipeline.zig"); + +const NeonVkPipelineBuilder = vk_pipeline.NeonVkPipelineBuilder; +const EulerAngles = core.EulerAngles; +const Mat = core.Mat; +const Vectorf = core.Vectorf; +const Quat = core.Quat; +const zm = core.zm; +const mul = zm.mul; + +pub const Material = struct { + materialName: core.Name, + textureSet: vk.DescriptorSet = .null_handle, + pipeline: vk.Pipeline, + layout: vk.PipelineLayout, + + pub fn deinit(self: *Material, ctx: *NeonVkContext) void { + ctx.vkd.destroyPipeline(ctx.dev, self.pipeline, null); + ctx.vkAllocator.destroyPipelineLayout(ctx.dev, self.layout); + } +}; + +pub const MaterialBuilder = struct { + const Self = @This(); + allocator: std.mem.Allocator, + ctx: *NeonVkContext, + pipelineBuilder: NeonVkPipelineBuilder, + + pub fn init(ctx: *NeonVkContext) MaterialBuilder { + const self = MaterialBuilder{ + .allocator = ctx.allocator, + .ctx = ctx, + }; + + return self; + } + + pub fn build(self: *Self) !void { + _ = self; + // try self.ctx.add_material(); + } + + pub fn deinit(self: *Self) void { + _ = self; + } +}; diff --git a/engine/graphics/src/mesh.zig b/engine/_archive/graphics/src/mesh.zig similarity index 100% rename from engine/graphics/src/mesh.zig rename to engine/_archive/graphics/src/mesh.zig diff --git a/engine/graphics/src/render_objects.zig b/engine/_archive/graphics/src/render_objects.zig similarity index 100% rename from engine/graphics/src/render_objects.zig rename to engine/_archive/graphics/src/render_objects.zig diff --git a/engine/graphics/src/skybox.zig b/engine/_archive/graphics/src/skybox.zig similarity index 96% rename from engine/graphics/src/skybox.zig rename to engine/_archive/graphics/src/skybox.zig index 00b1615..a1b69c2 100644 --- a/engine/graphics/src/skybox.zig +++ b/engine/_archive/graphics/src/skybox.zig @@ -1,96 +1,96 @@ -allocator: std.mem.Allocator, -cubeMapShared: [graphics.NumFrames]?vk.DescriptorSet = .{ null, null }, -cubeMapTextureSet: ?vk.DescriptorSet = null, -cubeMapName: ?core.Name = null, -material: *graphics.Material = undefined, -mesh: ?graphics.IndexedMesh = null, - -pub const RendererInterfaceVTable = graphics.RendererInterface.from(@This()); - -pub var gSkybox: *@This() = undefined; - -pub fn create(allocator: std.mem.Allocator) !*@This() { - const self = try allocator.create(@This()); - - self.* = .{ - .allocator = allocator, - }; - - gSkybox = self; - try self.initPipeline(); - try graphics.registerRendererPlugin(self); - - return self; -} - -pub fn sendShared(self: *@This(), fi: u32) void { - if (self.cubeMapName == null) { - self.cubeMapShared[fi] = self.cubeMapTextureSet; - return; - } else { - if (self.mesh == null) - self.mesh = graphics.getIndexedMeshByName(core.MakeName("m_skybox")); - - if (self.cubeMapTextureSet == null) { - const handle = self.cubeMapName.?.handle(); - self.cubeMapTextureSet = graphics.getContext().textureSets.get(handle); - } - } - - self.cubeMapShared[fi] = self.cubeMapTextureSet; -} - -pub fn initPipeline(self: *@This()) !void { - const gc = graphics.getContext(); - - var pipelineBuilder = try graphics.NeonVkPipelineBuilder.init( - gc.dev, - gc.vkd, - self.allocator, - gc.vkAllocator, - skybox_vert.spv(), - skybox_frag.spv(), - ); - defer pipelineBuilder.deinit(); - - try pipelineBuilder.add_mesh_description(); - try pipelineBuilder.add_layout(gc.globalDescriptorLayout); - try pipelineBuilder.add_layout(gc.singleTextureSetLayout); - try pipelineBuilder.add_depth_stencil(); // todo.. we might not want this for a skybox. - try pipelineBuilder.init_triangle_pipeline(gc.actual_extent); - pipelineBuilder.pdsci.?.depth_write_enable = vk.FALSE; - pipelineBuilder.pdsci.?.depth_test_enable = vk.FALSE; - pipelineBuilder.pdsci.?.depth_compare_op = .never; - - const materialName = core.MakeName("Mat_skybox"); - self.material = try self.allocator.create(graphics.Material); - self.material.* = graphics.Material{ - .materialName = materialName, - .pipeline = (try pipelineBuilder.build(gc.renderPass)).?, - .layout = pipelineBuilder.pipelineLayout, - }; - - try gc.add_material(self.material); -} - -pub fn setSkybox(textureName: []const u8) !void { - const name = core.MakeName(textureName); - gSkybox.cubeMapName = name; -} - -pub fn destroy(self: *@This()) void { - self.allocator.destroy(self); -} - -const vk_renderer_interface = @import("vk_renderer/vk_renderer_interface.zig"); -const RendererInterface = vk_renderer_interface.RendererInterface; - -const std = @import("std"); - -const graphics = @import("graphics.zig"); -const core = @import("core"); -const vk = @import("vulkan"); -const skybox_vert = @import("skybox_vert"); -const skybox_frag = @import("skybox_frag"); - -const vkinit = @import("vk_init.zig"); +allocator: std.mem.Allocator, +cubeMapShared: [graphics.NumFrames]?vk.DescriptorSet = .{ null, null }, +cubeMapTextureSet: ?vk.DescriptorSet = null, +cubeMapName: ?core.Name = null, +material: *graphics.Material = undefined, +mesh: ?graphics.IndexedMesh = null, + +pub const RendererInterfaceVTable = graphics.RendererInterface.from(@This()); + +pub var gSkybox: *@This() = undefined; + +pub fn create(allocator: std.mem.Allocator) !*@This() { + const self = try allocator.create(@This()); + + self.* = .{ + .allocator = allocator, + }; + + gSkybox = self; + try self.initPipeline(); + try graphics.registerRendererPlugin(self); + + return self; +} + +pub fn sendShared(self: *@This(), fi: u32) void { + if (self.cubeMapName == null) { + self.cubeMapShared[fi] = self.cubeMapTextureSet; + return; + } else { + if (self.mesh == null) + self.mesh = graphics.getIndexedMeshByName(core.MakeName("m_skybox")); + + if (self.cubeMapTextureSet == null) { + const handle = self.cubeMapName.?.handle(); + self.cubeMapTextureSet = graphics.getContext().textureSets.get(handle); + } + } + + self.cubeMapShared[fi] = self.cubeMapTextureSet; +} + +pub fn initPipeline(self: *@This()) !void { + const gc = graphics.getContext(); + + var pipelineBuilder = try graphics.NeonVkPipelineBuilder.init( + gc.dev, + gc.vkd, + self.allocator, + gc.vkAllocator, + skybox_vert.spv(), + skybox_frag.spv(), + ); + defer pipelineBuilder.deinit(); + + try pipelineBuilder.add_mesh_description(); + try pipelineBuilder.add_layout(gc.globalDescriptorLayout); + try pipelineBuilder.add_layout(gc.singleTextureSetLayout); + try pipelineBuilder.add_depth_stencil(); // todo.. we might not want this for a skybox. + try pipelineBuilder.init_triangle_pipeline(gc.actual_extent); + pipelineBuilder.pdsci.?.depth_write_enable = vk.FALSE; + pipelineBuilder.pdsci.?.depth_test_enable = vk.FALSE; + pipelineBuilder.pdsci.?.depth_compare_op = .never; + + const materialName = core.MakeName("Mat_skybox"); + self.material = try self.allocator.create(graphics.Material); + self.material.* = graphics.Material{ + .materialName = materialName, + .pipeline = (try pipelineBuilder.build(gc.renderPass)).?, + .layout = pipelineBuilder.pipelineLayout, + }; + + try gc.add_material(self.material); +} + +pub fn setSkybox(textureName: []const u8) !void { + const name = core.MakeName(textureName); + gSkybox.cubeMapName = name; +} + +pub fn destroy(self: *@This()) void { + self.allocator.destroy(self); +} + +const vk_renderer_interface = @import("vk_renderer/vk_renderer_interface.zig"); +const RendererInterface = vk_renderer_interface.RendererInterface; + +const std = @import("std"); + +const graphics = @import("graphics.zig"); +const core = @import("core"); +const vk = @import("vulkan"); +const skybox_vert = @import("skybox_vert"); +const skybox_frag = @import("skybox_frag"); + +const vkinit = @import("vk_init.zig"); diff --git a/engine/graphics/src/texture.zig b/engine/_archive/graphics/src/texture.zig similarity index 96% rename from engine/graphics/src/texture.zig rename to engine/_archive/graphics/src/texture.zig index 64b4621..1446c31 100644 --- a/engine/graphics/src/texture.zig +++ b/engine/_archive/graphics/src/texture.zig @@ -1,39 +1,39 @@ -const std = @import("std"); -const core = @import("core"); -const vk_renderer = @import("vk_renderer.zig"); -const vma = @import("vma"); -const vk = @import("vulkan"); -const vkinit = @import("vk_init.zig"); - -const NeonVkContext = vk_renderer.NeonVkContext; -const NeonVkBuffer = vk_renderer.NeonVkBuffer; -const NeonVkImage = vk_renderer.NeonVkImage; - -pub const PixelPos = struct { - x: u32, - y: u32, - - /// returns y/x of the pixel position - pub fn ratio(self: @This()) f32 { - return @as(f32, @floatFromInt(self.y)) / @as(f32, @floatFromInt(self.x)); - } -}; - -// This is a simple display texture -pub const Texture = struct { - image: NeonVkImage, - imageView: vk.ImageView, - isCube: bool = false, - - pub fn deinit(self: *@This(), ctx: *NeonVkContext) void { - ctx.vkd.destroyImageView(ctx.dev, self.imageView, null); - self.image.deinit(ctx.vkAllocator); - } - - pub fn getDimensions(self: @This()) PixelPos { - return .{ - .x = self.image.pixelWidth, - .y = self.image.pixelHeight, - }; - } -}; +const std = @import("std"); +const core = @import("core"); +const vk_renderer = @import("vk_renderer.zig"); +const vma = @import("vma"); +const vk = @import("vulkan"); +const vkinit = @import("vk_init.zig"); + +const NeonVkContext = vk_renderer.NeonVkContext; +const NeonVkBuffer = vk_renderer.NeonVkBuffer; +const NeonVkImage = vk_renderer.NeonVkImage; + +pub const PixelPos = struct { + x: u32, + y: u32, + + /// returns y/x of the pixel position + pub fn ratio(self: @This()) f32 { + return @as(f32, @floatFromInt(self.y)) / @as(f32, @floatFromInt(self.x)); + } +}; + +// This is a simple display texture +pub const Texture = struct { + image: NeonVkImage, + imageView: vk.ImageView, + isCube: bool = false, + + pub fn deinit(self: *@This(), ctx: *NeonVkContext) void { + ctx.vkd.destroyImageView(ctx.dev, self.imageView, null); + self.image.deinit(ctx.vkAllocator); + } + + pub fn getDimensions(self: @This()) PixelPos { + return .{ + .x = self.image.pixelWidth, + .y = self.image.pixelHeight, + }; + } +}; diff --git a/engine/graphics/src/vk_allocator.zig b/engine/_archive/graphics/src/vk_allocator.zig similarity index 100% rename from engine/graphics/src/vk_allocator.zig rename to engine/_archive/graphics/src/vk_allocator.zig diff --git a/engine/graphics/src/vk_api.zig b/engine/_archive/graphics/src/vk_api.zig similarity index 96% rename from engine/graphics/src/vk_api.zig rename to engine/_archive/graphics/src/vk_api.zig index 97e2887..3f68ba0 100644 --- a/engine/graphics/src/vk_api.zig +++ b/engine/_archive/graphics/src/vk_api.zig @@ -1,16 +1,16 @@ -// global api -// -// i hate lugging these variables around. -// device and cmd buffers are fine, -// but the dispatch variables are going to be kept here and easily accessible. - -pub var _vkb: constants.BaseDispatch = undefined; -pub var _vki: constants.InstanceDispatch = undefined; -pub var _vkd: constants.DeviceDispatch = undefined; - -pub const vkb = &_vkb; -pub const vki = &_vki; -pub const vkd = &_vkd; - -const vk = @import("vulkan"); -const constants = @import("vk_constants.zig"); +// global api +// +// i hate lugging these variables around. +// device and cmd buffers are fine, +// but the dispatch variables are going to be kept here and easily accessible. + +pub var _vkb: constants.BaseDispatch = undefined; +pub var _vki: constants.InstanceDispatch = undefined; +pub var _vkd: constants.DeviceDispatch = undefined; + +pub const vkb = &_vkb; +pub const vki = &_vki; +pub const vkd = &_vkd; + +const vk = @import("vulkan"); +const constants = @import("vk_constants.zig"); diff --git a/engine/graphics/src/vk_assetLoaders.zig b/engine/_archive/graphics/src/vk_assetLoaders.zig similarity index 97% rename from engine/graphics/src/vk_assetLoaders.zig rename to engine/_archive/graphics/src/vk_assetLoaders.zig index e76a5db..559cafa 100644 --- a/engine/graphics/src/vk_assetLoaders.zig +++ b/engine/_archive/graphics/src/vk_assetLoaders.zig @@ -1,373 +1,373 @@ -const std = @import("std"); -const vk = @import("vulkan"); -const graphics = @import("graphics.zig"); - -const core = @import("core"); -const assets = @import("assets"); -const vk_utils = @import("vk_utils.zig"); -const vkinit = @import("vk_init.zig"); -const vk_cubemap = @import("vk_renderer/vk_cubemap.zig"); - -const tracy = core.tracy; -const materials = @import("materials.zig"); -const vk_renderer = @import("vk_renderer.zig"); -const mesh = @import("mesh.zig"); -const texture = @import("texture.zig"); - -const NeonVkContext = vk_renderer.NeonVkContext; -const Material = materials.Material; -const Mesh = mesh.Mesh; -const Texture = texture.Texture; - -pub const TextureLoader = struct { - pub var LoaderInterfaceVTable: assets.AssetLoaderInterface = assets.AssetLoaderInterface.from("Texture", @This()); - pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); - - const StagedTextureDescription = struct { - name: core.Name, - stagingResults: vk_utils.LoadAndStageImage, - textureListResults: ?[]vk_utils.LoadAndStageImage = null, - assetRef: assets.AssetRef, - properties: assets.AssetPropertiesBag, - - pub fn deinit(self: *@This(), gc: *NeonVkContext) void { - self.stagingResults.deinit(gc.vkAllocator); - if (self.textureListResults) |results| { - for (results) |*result| { - result.deinit(gc.vkAllocator); - } - } - } - }; - - const RTAssetsReady = struct { - name: core.Name, - texture: *Texture, - textureSet: vk.DescriptorSet, - textureId: u32, - }; - - gc: *NeonVkContext, - assetsReady: core.RingQueue(StagedTextureDescription), - rtAssetsReady: core.RingQueue(RTAssetsReady), - discarding: std.atomic.Value(bool) = std.atomic.Value(bool).init(false), - - pub fn loadAsset(self: *@This(), assetRef: assets.AssetRef, props: ?assets.AssetPropertiesBag) assets.AssetLoaderError!void { - if (self.discarding.load(.seq_cst)) { - return; - } - - var z = tracy.ZoneN(@src(), "TextureLoader loadAsset"); - const Lambda = struct { - loader: *TextureLoader, - assetRef: assets.AssetRef, - gc: *NeonVkContext, - properties: assets.AssetPropertiesBag, - - pub fn eFunc(ctx: @This()) !void { - var z1 = tracy.ZoneN(@src(), "Loading file from TextureLoader"); - const gc = ctx.gc; - defer { - _ = ctx.gc.outstandingJobsCount.fetchSub(1, .seq_cst); - } - - var loadAndStageResults: vk_utils.LoadAndStageImage = undefined; - if (!ctx.properties.textureCube) { - loadAndStageResults = try vk_utils.load_and_stage_image_from_file(gc, ctx.properties.path); - errdefer loadAndStageResults.deinit(gc.vkAllocator); - } else { - loadAndStageResults = try vk_cubemap.stageCubeTexture(ctx.properties.textureList.?); - errdefer loadAndStageResults.deinit(gc.vkAllocator); - } - - var assetRefName = ctx.assetRef.name; - - tracy.Message(assetRefName.utf8()); - tracy.Message(ctx.properties.path); - - core.engine_log("loaded: {s} from: {s}", .{ assetRefName.utf8(), ctx.properties.path }); - var loadedDescription = StagedTextureDescription{ - .name = ctx.assetRef.name, - .stagingResults = loadAndStageResults, - .assetRef = ctx.assetRef, - .properties = ctx.properties, - }; - - if (ctx.properties.textureList) |textureList| { - const tlResults = try ctx.gc.allocator.alloc(vk_utils.LoadAndStageImage, textureList.len); - errdefer ctx.gc.allocator.free(tlResults); - - for (textureList, 0..) |tPath, i| { - const rv = vk_utils.load_and_stage_image_from_file(gc, tPath) catch { - core.engine_log("unable to load file {s}", .{tPath}); - return error.FailedToLoad; - }; - errdefer rv.deinit(); - tlResults[i] = rv; - } - - loadedDescription.textureListResults = tlResults; - } - - z1.End(); - - ctx.loader.assetsReady.pushLocked(loadedDescription) catch unreachable; - } - - pub fn func(ctx: @This(), _: *core.JobContext) void { - ctx.eFunc() catch unreachable; - } - }; - - _ = self.gc.outstandingJobsCount.fetchAdd(1, .seq_cst); - core.dispatchJob(Lambda{ - .loader = self, - .gc = self.gc, - .assetRef = assetRef, - .properties = props.?, - }) catch return error.UnableToLoad; - - z.End(); - } - - pub fn processRenderThreadEvents(ptr: *anyopaque) void { - const self: *@This() = @ptrCast(@alignCast(ptr)); - self.processEventInner() catch {}; - } - - pub fn createImageFromStagingResult(self: *@This(), name: core.Name, stagingResults: *vk_utils.LoadAndStageImage, properties: assets.AssetPropertiesBag) core.EngineDataEventError!void { - const gc = self.gc; - var stagingBuffer = stagingResults.stagingBuffer; - const image = stagingResults.image; - - if (stagingResults.cubeOffsets != null) { - vk_cubemap.submitTextureCube(&gc.uploader, stagingResults) catch return error.UnknownStatePanic; - stagingBuffer.deinit(gc.vkAllocator); - - var ivc = vkinit.imageViewCreateInfo( - .r8g8b8a8_srgb, - image.image, - .{ .color_bit = true }, - stagingResults.mipLevel, - ); - ivc.view_type = .cube; - ivc.subresource_range.layer_count = 6; - const imageView = gc.vkd.createImageView(gc.dev, &ivc, null) catch return error.UnknownStatePanic; - const newTexture = gc.allocator.create(Texture) catch return error.UnknownStatePanic; - newTexture.* = Texture{ - .image = image, - .imageView = imageView, - }; - - const rv = vk_utils.createDescriptorSetForImage( - gc.dev, - gc.descriptorPool, - gc.singleTextureSetLayout, - imageView, - gc.cubeSampler, - false, - ) catch return error.UnknownStatePanic; - - self.rtAssetsReady.pushLocked(.{ - .name = name, - .texture = newTexture, - .textureSet = rv.textureSet, - .textureId = rv.textureId, - }) catch return error.UnknownStatePanic; - } else { - vk_utils.submit_copy_from_staging(gc, stagingBuffer, image, stagingResults.mipLevel) catch return error.UnknownStatePanic; - stagingBuffer.deinit(gc.vkAllocator); - - var imageViewCreate = vkinit.imageViewCreateInfo( - .r8g8b8a8_srgb, - image.image, - .{ .color_bit = true }, - stagingResults.mipLevel, - ); - const imageView = gc.vkd.createImageView(gc.dev, &imageViewCreate, null) catch return error.UnknownStatePanic; - const newTexture = gc.allocator.create(Texture) catch return error.UnknownStatePanic; - - newTexture.* = Texture{ - .image = image, - .imageView = imageView, - }; - - const sampler = if (properties.textureUseBlockySampler) gc.blockySampler else gc.linearSampler; - const rv = vk_utils.createDescriptorSetForImage( - gc.dev, - gc.descriptorPool, - gc.singleTextureSetLayout, - imageView, - sampler, - true, - ) catch return error.UnknownStatePanic; - - self.rtAssetsReady.pushLocked(.{ - .name = name, - .texture = newTexture, - .textureSet = rv.textureSet, - .textureId = rv.textureId, - }) catch return error.UnknownStatePanic; - } - } - - fn processEventInner(self: *@This()) core.EngineDataEventError!void { - if (self.assetsReady.count() > 0) { - self.assetsReady.lock(); - defer self.assetsReady.unlock(); - while (self.assetsReady.popFromUnlocked()) |ar| { - var assetReady = ar; - var z1 = tracy.ZoneN(@src(), "Uploading asset loaded by TextureLoader"); - tracy.Message("TextureLoader"); - tracy.Message(assetReady.assetRef.name.utf8()); - tracy.Message(assetReady.properties.path); - core.engine_log("async texture load complete registry: {s}", .{assetReady.name.utf8()}); - try self.createImageFromStagingResult(assetReady.name, &assetReady.stagingResults, assetReady.properties); - - if (assetReady.textureListResults) |results| { - var buf: [256]u8 = undefined; - for (results, 0..) |res, i| { - var r = res; - var arName = assetReady.name; - const newName = std.fmt.bufPrint(&buf, "{s}[{d}]", .{ arName.utf8(), i }) catch return core.EngineDataEventError.OutOfMemory; - - try self.createImageFromStagingResult(core.MakeName(newName), &r, assetReady.properties); - } - self.gc.allocator.free(results); - } - - z1.End(); - } - } - } - - // processing events, some should really be processing events rather than - pub fn processEvents(self: *@This(), frameNumber: u64) core.EngineDataEventError!void { - _ = frameNumber; - if (self.rtAssetsReady.count() > 0) { - self.rtAssetsReady.lock(); - defer self.rtAssetsReady.unlock(); - while (self.rtAssetsReady.popFromUnlocked()) |a| { - self.gc.install_texture_into_registry(a.name, a.texture, a.textureSet, a.textureId) catch return error.UnknownStatePanic; - } - } - } - - pub fn discardAll(self: *@This()) void { - self.discarding.store(true, .seq_cst); - core.graphics_log("discarding {d} outstanding jobs", .{self.assetsReady.count()}); - - self.assetsReady.lock(); - defer self.assetsReady.unlock(); - - while (self.assetsReady.popFromUnlocked()) |assetReady| { - var copy = assetReady; - StagedTextureDescription.deinit(©, self.gc); - } - } - - pub fn init(allocator: std.mem.Allocator) !*@This() { - const self = try allocator.create(@This()); - self.* = .{ - .gc = vk_renderer.gContext, - //todo: the EngineObjectVTable init function should have a handleable error - .assetsReady = core.RingQueue(StagedTextureDescription).init(allocator, 1024) catch unreachable, - .rtAssetsReady = core.RingQueue(RTAssetsReady).init(allocator, 1024) catch unreachable, - }; - - try self.gc.renderthread.installListener(self, processRenderThreadEvents); - - return self; - } - - pub fn destroy(self: *@This(), allocator: std.mem.Allocator) void { - self.assetsReady.deinit(); - self.rtAssetsReady.deinit(); - allocator.destroy(self); - } -}; - -pub const MeshLoader = struct { - pub var LoaderInterfaceVTable = assets.AssetLoaderInterface.from("Mesh", @This()); - pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); - gc: *NeonVkContext, - - pub fn init(allocator: std.mem.Allocator) !*@This() { - const self = try allocator.create(@This()); - - self.* = .{ - .gc = vk_renderer.gContext, - }; - - return self; - } - - pub fn loadAsset(self: *@This(), assetRef: assets.AssetRef, propertiesBag: ?assets.AssetPropertiesBag) assets.AssetLoaderError!void { - _ = self; - const sourceType = getSourceType(propertiesBag); - core.engine_log("loading mesh asset {s} [{s}]", .{ propertiesBag.?.path, if (sourceType) |s| @tagName(s) else "default" }); - graphics.loadIndexedMeshForPooling(assetRef.name, .{ - .path = propertiesBag.?.path, - .sourceType = getSourceType(propertiesBag), - .skeletonName = if (propertiesBag.?.skeletonName) |skName| core.MakeName(skName) else null, - }) catch return error.UnableToLoad; - } - - fn getSourceType(propertiesBag: ?assets.AssetPropertiesBag) ?graphics.MeshSourceType { - if (propertiesBag) |bag| { - if (bag.meshType) |meshType| { - if (std.mem.eql(u8, meshType, "obj")) { - return graphics.MeshSourceType.obj; - } - if (std.mem.eql(u8, meshType, "gltf")) { - return graphics.MeshSourceType.gltf; - } - } - - // try to deduce it by file name, if nothing is set. - const ext = core.getFileExtension(bag.path); - if (std.mem.eql(u8, ext, ".obj")) { - return graphics.MeshSourceType.obj; - } - if (std.mem.eql(u8, ext, ".gltf")) { - return graphics.MeshSourceType.gltf; - } - - if (std.mem.eql(u8, ext, ".glb")) { - return graphics.MeshSourceType.gltf; - } - } - - return null; - } - - pub fn discardAll(self: *@This()) void { - // totally synchronous, nothing to do for a discard - _ = self; - } - - pub fn destroy(self: *@This(), allocator: std.mem.Allocator) void { - allocator.destroy(self); - } -}; - -pub var gTextureLoader: *TextureLoader = undefined; -pub var gMeshLoader: *MeshLoader = undefined; - -pub fn init_loaders(allocator: std.mem.Allocator) !void { - gTextureLoader = try core.createObject(TextureLoader, .{ - .responds_to_events = true, - }); - - gMeshLoader = try allocator.create(MeshLoader); - gMeshLoader.* = .{ .gc = vk_renderer.gContext }; - - try assets.gAssetSys.registerLoader(gTextureLoader); - try assets.gAssetSys.registerLoader(gMeshLoader); -} - -// submit an abort message to TextureLoader and MeshLoader -pub fn discardAll() void { - gTextureLoader.discardAll(); - gMeshLoader.discardAll(); -} +const std = @import("std"); +const vk = @import("vulkan"); +const graphics = @import("graphics.zig"); + +const core = @import("core"); +const assets = @import("assets"); +const vk_utils = @import("vk_utils.zig"); +const vkinit = @import("vk_init.zig"); +const vk_cubemap = @import("vk_renderer/vk_cubemap.zig"); + +const tracy = core.tracy; +const materials = @import("materials.zig"); +const vk_renderer = @import("vk_renderer.zig"); +const mesh = @import("mesh.zig"); +const texture = @import("texture.zig"); + +const NeonVkContext = vk_renderer.NeonVkContext; +const Material = materials.Material; +const Mesh = mesh.Mesh; +const Texture = texture.Texture; + +pub const TextureLoader = struct { + pub var LoaderInterfaceVTable: assets.AssetLoaderInterface = assets.AssetLoaderInterface.from("Texture", @This()); + pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); + + const StagedTextureDescription = struct { + name: core.Name, + stagingResults: vk_utils.LoadAndStageImage, + textureListResults: ?[]vk_utils.LoadAndStageImage = null, + assetRef: assets.AssetRef, + properties: assets.AssetPropertiesBag, + + pub fn deinit(self: *@This(), gc: *NeonVkContext) void { + self.stagingResults.deinit(gc.vkAllocator); + if (self.textureListResults) |results| { + for (results) |*result| { + result.deinit(gc.vkAllocator); + } + } + } + }; + + const RTAssetsReady = struct { + name: core.Name, + texture: *Texture, + textureSet: vk.DescriptorSet, + textureId: u32, + }; + + gc: *NeonVkContext, + assetsReady: core.RingQueue(StagedTextureDescription), + rtAssetsReady: core.RingQueue(RTAssetsReady), + discarding: std.atomic.Value(bool) = std.atomic.Value(bool).init(false), + + pub fn loadAsset(self: *@This(), assetRef: assets.AssetRef, props: ?assets.AssetPropertiesBag) assets.AssetLoaderError!void { + if (self.discarding.load(.seq_cst)) { + return; + } + + var z = tracy.ZoneN(@src(), "TextureLoader loadAsset"); + const Lambda = struct { + loader: *TextureLoader, + assetRef: assets.AssetRef, + gc: *NeonVkContext, + properties: assets.AssetPropertiesBag, + + pub fn eFunc(ctx: @This()) !void { + var z1 = tracy.ZoneN(@src(), "Loading file from TextureLoader"); + const gc = ctx.gc; + defer { + _ = ctx.gc.outstandingJobsCount.fetchSub(1, .seq_cst); + } + + var loadAndStageResults: vk_utils.LoadAndStageImage = undefined; + if (!ctx.properties.textureCube) { + loadAndStageResults = try vk_utils.load_and_stage_image_from_file(gc, ctx.properties.path); + errdefer loadAndStageResults.deinit(gc.vkAllocator); + } else { + loadAndStageResults = try vk_cubemap.stageCubeTexture(ctx.properties.textureList.?); + errdefer loadAndStageResults.deinit(gc.vkAllocator); + } + + var assetRefName = ctx.assetRef.name; + + tracy.Message(assetRefName.utf8()); + tracy.Message(ctx.properties.path); + + core.engine_log("loaded: {s} from: {s}", .{ assetRefName.utf8(), ctx.properties.path }); + var loadedDescription = StagedTextureDescription{ + .name = ctx.assetRef.name, + .stagingResults = loadAndStageResults, + .assetRef = ctx.assetRef, + .properties = ctx.properties, + }; + + if (ctx.properties.textureList) |textureList| { + const tlResults = try ctx.gc.allocator.alloc(vk_utils.LoadAndStageImage, textureList.len); + errdefer ctx.gc.allocator.free(tlResults); + + for (textureList, 0..) |tPath, i| { + const rv = vk_utils.load_and_stage_image_from_file(gc, tPath) catch { + core.engine_log("unable to load file {s}", .{tPath}); + return error.FailedToLoad; + }; + errdefer rv.deinit(); + tlResults[i] = rv; + } + + loadedDescription.textureListResults = tlResults; + } + + z1.End(); + + ctx.loader.assetsReady.pushLocked(loadedDescription) catch unreachable; + } + + pub fn func(ctx: @This(), _: *core.JobContext) void { + ctx.eFunc() catch unreachable; + } + }; + + _ = self.gc.outstandingJobsCount.fetchAdd(1, .seq_cst); + core.dispatchJob(Lambda{ + .loader = self, + .gc = self.gc, + .assetRef = assetRef, + .properties = props.?, + }) catch return error.UnableToLoad; + + z.End(); + } + + pub fn processRenderThreadEvents(ptr: *anyopaque) void { + const self: *@This() = @ptrCast(@alignCast(ptr)); + self.processEventInner() catch {}; + } + + pub fn createImageFromStagingResult(self: *@This(), name: core.Name, stagingResults: *vk_utils.LoadAndStageImage, properties: assets.AssetPropertiesBag) core.EngineDataEventError!void { + const gc = self.gc; + var stagingBuffer = stagingResults.stagingBuffer; + const image = stagingResults.image; + + if (stagingResults.cubeOffsets != null) { + vk_cubemap.submitTextureCube(&gc.uploader, stagingResults) catch return error.UnknownStatePanic; + stagingBuffer.deinit(gc.vkAllocator); + + var ivc = vkinit.imageViewCreateInfo( + .r8g8b8a8_srgb, + image.image, + .{ .color_bit = true }, + stagingResults.mipLevel, + ); + ivc.view_type = .cube; + ivc.subresource_range.layer_count = 6; + const imageView = gc.vkd.createImageView(gc.dev, &ivc, null) catch return error.UnknownStatePanic; + const newTexture = gc.allocator.create(Texture) catch return error.UnknownStatePanic; + newTexture.* = Texture{ + .image = image, + .imageView = imageView, + }; + + const rv = vk_utils.createDescriptorSetForImage( + gc.dev, + gc.descriptorPool, + gc.singleTextureSetLayout, + imageView, + gc.cubeSampler, + false, + ) catch return error.UnknownStatePanic; + + self.rtAssetsReady.pushLocked(.{ + .name = name, + .texture = newTexture, + .textureSet = rv.textureSet, + .textureId = rv.textureId, + }) catch return error.UnknownStatePanic; + } else { + vk_utils.submit_copy_from_staging(gc, stagingBuffer, image, stagingResults.mipLevel) catch return error.UnknownStatePanic; + stagingBuffer.deinit(gc.vkAllocator); + + var imageViewCreate = vkinit.imageViewCreateInfo( + .r8g8b8a8_srgb, + image.image, + .{ .color_bit = true }, + stagingResults.mipLevel, + ); + const imageView = gc.vkd.createImageView(gc.dev, &imageViewCreate, null) catch return error.UnknownStatePanic; + const newTexture = gc.allocator.create(Texture) catch return error.UnknownStatePanic; + + newTexture.* = Texture{ + .image = image, + .imageView = imageView, + }; + + const sampler = if (properties.textureUseBlockySampler) gc.blockySampler else gc.linearSampler; + const rv = vk_utils.createDescriptorSetForImage( + gc.dev, + gc.descriptorPool, + gc.singleTextureSetLayout, + imageView, + sampler, + true, + ) catch return error.UnknownStatePanic; + + self.rtAssetsReady.pushLocked(.{ + .name = name, + .texture = newTexture, + .textureSet = rv.textureSet, + .textureId = rv.textureId, + }) catch return error.UnknownStatePanic; + } + } + + fn processEventInner(self: *@This()) core.EngineDataEventError!void { + if (self.assetsReady.count() > 0) { + self.assetsReady.lock(); + defer self.assetsReady.unlock(); + while (self.assetsReady.popFromUnlocked()) |ar| { + var assetReady = ar; + var z1 = tracy.ZoneN(@src(), "Uploading asset loaded by TextureLoader"); + tracy.Message("TextureLoader"); + tracy.Message(assetReady.assetRef.name.utf8()); + tracy.Message(assetReady.properties.path); + core.engine_log("async texture load complete registry: {s}", .{assetReady.name.utf8()}); + try self.createImageFromStagingResult(assetReady.name, &assetReady.stagingResults, assetReady.properties); + + if (assetReady.textureListResults) |results| { + var buf: [256]u8 = undefined; + for (results, 0..) |res, i| { + var r = res; + var arName = assetReady.name; + const newName = std.fmt.bufPrint(&buf, "{s}[{d}]", .{ arName.utf8(), i }) catch return core.EngineDataEventError.OutOfMemory; + + try self.createImageFromStagingResult(core.MakeName(newName), &r, assetReady.properties); + } + self.gc.allocator.free(results); + } + + z1.End(); + } + } + } + + // processing events, some should really be processing events rather than + pub fn processEvents(self: *@This(), frameNumber: u64) core.EngineDataEventError!void { + _ = frameNumber; + if (self.rtAssetsReady.count() > 0) { + self.rtAssetsReady.lock(); + defer self.rtAssetsReady.unlock(); + while (self.rtAssetsReady.popFromUnlocked()) |a| { + self.gc.install_texture_into_registry(a.name, a.texture, a.textureSet, a.textureId) catch return error.UnknownStatePanic; + } + } + } + + pub fn discardAll(self: *@This()) void { + self.discarding.store(true, .seq_cst); + core.graphics_log("discarding {d} outstanding jobs", .{self.assetsReady.count()}); + + self.assetsReady.lock(); + defer self.assetsReady.unlock(); + + while (self.assetsReady.popFromUnlocked()) |assetReady| { + var copy = assetReady; + StagedTextureDescription.deinit(©, self.gc); + } + } + + pub fn init(allocator: std.mem.Allocator) !*@This() { + const self = try allocator.create(@This()); + self.* = .{ + .gc = vk_renderer.gContext, + //todo: the EngineObjectVTable init function should have a handleable error + .assetsReady = core.RingQueue(StagedTextureDescription).init(allocator, 1024) catch unreachable, + .rtAssetsReady = core.RingQueue(RTAssetsReady).init(allocator, 1024) catch unreachable, + }; + + try self.gc.renderthread.installListener(self, processRenderThreadEvents); + + return self; + } + + pub fn destroy(self: *@This(), allocator: std.mem.Allocator) void { + self.assetsReady.deinit(); + self.rtAssetsReady.deinit(); + allocator.destroy(self); + } +}; + +pub const MeshLoader = struct { + pub var LoaderInterfaceVTable = assets.AssetLoaderInterface.from("Mesh", @This()); + pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); + gc: *NeonVkContext, + + pub fn init(allocator: std.mem.Allocator) !*@This() { + const self = try allocator.create(@This()); + + self.* = .{ + .gc = vk_renderer.gContext, + }; + + return self; + } + + pub fn loadAsset(self: *@This(), assetRef: assets.AssetRef, propertiesBag: ?assets.AssetPropertiesBag) assets.AssetLoaderError!void { + _ = self; + const sourceType = getSourceType(propertiesBag); + core.engine_log("loading mesh asset {s} [{s}]", .{ propertiesBag.?.path, if (sourceType) |s| @tagName(s) else "default" }); + graphics.loadIndexedMeshForPooling(assetRef.name, .{ + .path = propertiesBag.?.path, + .sourceType = getSourceType(propertiesBag), + .skeletonName = if (propertiesBag.?.skeletonName) |skName| core.MakeName(skName) else null, + }) catch return error.UnableToLoad; + } + + fn getSourceType(propertiesBag: ?assets.AssetPropertiesBag) ?graphics.MeshSourceType { + if (propertiesBag) |bag| { + if (bag.meshType) |meshType| { + if (std.mem.eql(u8, meshType, "obj")) { + return graphics.MeshSourceType.obj; + } + if (std.mem.eql(u8, meshType, "gltf")) { + return graphics.MeshSourceType.gltf; + } + } + + // try to deduce it by file name, if nothing is set. + const ext = core.getFileExtension(bag.path); + if (std.mem.eql(u8, ext, ".obj")) { + return graphics.MeshSourceType.obj; + } + if (std.mem.eql(u8, ext, ".gltf")) { + return graphics.MeshSourceType.gltf; + } + + if (std.mem.eql(u8, ext, ".glb")) { + return graphics.MeshSourceType.gltf; + } + } + + return null; + } + + pub fn discardAll(self: *@This()) void { + // totally synchronous, nothing to do for a discard + _ = self; + } + + pub fn destroy(self: *@This(), allocator: std.mem.Allocator) void { + allocator.destroy(self); + } +}; + +pub var gTextureLoader: *TextureLoader = undefined; +pub var gMeshLoader: *MeshLoader = undefined; + +pub fn init_loaders(allocator: std.mem.Allocator) !void { + gTextureLoader = try core.createObject(TextureLoader, .{ + .responds_to_events = true, + }); + + gMeshLoader = try allocator.create(MeshLoader); + gMeshLoader.* = .{ .gc = vk_renderer.gContext }; + + try assets.gAssetSys.registerLoader(gTextureLoader); + try assets.gAssetSys.registerLoader(gMeshLoader); +} + +// submit an abort message to TextureLoader and MeshLoader +pub fn discardAll() void { + gTextureLoader.discardAll(); + gMeshLoader.discardAll(); +} diff --git a/engine/graphics/src/vk_constants.zig b/engine/_archive/graphics/src/vk_constants.zig similarity index 100% rename from engine/graphics/src/vk_constants.zig rename to engine/_archive/graphics/src/vk_constants.zig diff --git a/engine/graphics/src/vk_descriptors.zig b/engine/_archive/graphics/src/vk_descriptors.zig similarity index 96% rename from engine/graphics/src/vk_descriptors.zig rename to engine/_archive/graphics/src/vk_descriptors.zig index 3ea4106..63dc0d3 100644 --- a/engine/graphics/src/vk_descriptors.zig +++ b/engine/_archive/graphics/src/vk_descriptors.zig @@ -1,25 +1,25 @@ -// higher level descriptor and SSBO wrangling libraries. - -const std = @import("std"); -const core = @import("core"); -const vk_renderer = @import("vk_renderer.zig"); -const vma = @import("vma"); -const vk = @import("vulkan"); -const obj_loader = @import("objLoader"); -const vkinit = @import("vk_init.zig"); -const vk_constants = @import("vk_constants.zig"); -const tracy = core.tracy; - -const spng = core.spng; - -const ObjMesh = obj_loader.ObjMesh; -const ArrayList = std.ArrayList; -const Vectorf = core.Vectorf; -const NeonVkContext = vk_renderer.NeonVkContext; -const NeonVkBuffer = vk_renderer.NeonVkBuffer; -const NeonVkImage = vk_renderer.NeonVkImage; -const NumFrames = vk_constants.NUM_FRAMES; - -pub const DescriptorSetLayoutInfo = struct { - bindingCount: u32, -}; +// higher level descriptor and SSBO wrangling libraries. + +const std = @import("std"); +const core = @import("core"); +const vk_renderer = @import("vk_renderer.zig"); +const vma = @import("vma"); +const vk = @import("vulkan"); +const obj_loader = @import("objLoader"); +const vkinit = @import("vk_init.zig"); +const vk_constants = @import("vk_constants.zig"); +const tracy = core.tracy; + +const spng = core.spng; + +const ObjMesh = obj_loader.ObjMesh; +const ArrayList = std.ArrayList; +const Vectorf = core.Vectorf; +const NeonVkContext = vk_renderer.NeonVkContext; +const NeonVkBuffer = vk_renderer.NeonVkBuffer; +const NeonVkImage = vk_renderer.NeonVkImage; +const NumFrames = vk_constants.NUM_FRAMES; + +pub const DescriptorSetLayoutInfo = struct { + bindingCount: u32, +}; diff --git a/engine/graphics/src/vk_dynamic_mesh.zig b/engine/_archive/graphics/src/vk_dynamic_mesh.zig similarity index 96% rename from engine/graphics/src/vk_dynamic_mesh.zig rename to engine/_archive/graphics/src/vk_dynamic_mesh.zig index bf2fca1..37a62b8 100644 --- a/engine/graphics/src/vk_dynamic_mesh.zig +++ b/engine/_archive/graphics/src/vk_dynamic_mesh.zig @@ -1,435 +1,435 @@ -const std = @import("std"); -const core = @import("core"); -const vk_renderer = @import("vk_renderer.zig"); -const vma = @import("vma"); -const vk = @import("vulkan"); -const obj_loader = @import("objLoader"); -const constants = @import("vk_constants.zig"); -const vk_utils = @import("vk_utils.zig"); - -const NeonVkUploader = vk_utils.NeonVkUploader; -const NeonVkBuffer = vk_renderer.NeonVkBuffer; -const ObjMesh = obj_loader.ObjMesh; -const ArrayList = std.ArrayList; -const Vectorf = core.Vectorf; -const Vector2f = core.Vector2f; -const LinearColor = core.colors.Color; -const NeonVkContext = vk_renderer.NeonVkContext; - -const mesh = @import("mesh.zig"); -const MeshVertex = mesh.MeshVertex; - -const debug_struct = core.debug_struct; - -pub const DynamicMeshManager = struct { - gc: *NeonVkContext, - - allocator: std.mem.Allocator, - dynMeshes: std.ArrayListUnmanaged(*DynamicMesh) = .{}, - uploader: NeonVkUploader, - - first: bool = true, - - pub fn init(gc: *NeonVkContext) !*@This() { - const self = try gc.allocator.create(@This()); - self.* = @This(){ - .gc = gc, - .allocator = gc.allocator, - .uploader = try NeonVkUploader.init(gc, "dynamic mesh manager uploader"), - }; - - // core.graphics_log("creating the mesh manager", .{}); - return self; - } - - pub fn deinit(self: *@This()) void { - self.uploader.deinit(); - self.dynMeshes.deinit(self.allocator); - self.allocator.destroy(self); - } - - pub fn addDynamicMesh(self: *@This(), dynamicMesh: *DynamicMesh) !void { - try self.dynMeshes.append(self.allocator, dynamicMesh); - } - - pub fn updateMeshes(self: *@This(), cmd: vk.CommandBuffer) !void { - for (self.dynMeshes.items) |dynMesh| { - try dynMesh.maybeUpdateVertices(cmd); - } - } - - pub fn finishUpload(self: *@This()) !void { - if (self.uploader.isActive) { - var t3 = core.tracy.ZoneN(@src(), "finishing dynamic mesh upload context"); - defer t3.End(); - - try self.uploader.waitForFences(); - - for (self.dynMeshes.items) |dynMesh| { - if (dynMesh.isDirty) { - dynMesh.bumpSwapId(); - } - } - } - } -}; - -pub const DynamicMesh = struct { - pub const GeometryMode = enum { quads, triangles }; - - allocator: std.mem.Allocator, - gc: *NeonVkContext, - - vertices: []MeshVertex = undefined, - geometryMode: GeometryMode = .quads, // geometry elaboration mode - indicesMaxCount: u32 = 0, - - indexBuffers: [2]NeonVkBuffer = undefined, - indexBufferLen: [2]u32 = .{ 0, 0 }, - - vertexBuffers: [2]NeonVkBuffer = undefined, - vertexBufferLen: [2]u32 = .{ 0, 0 }, - - swapId: usize = 0, // the index of the previously uploaded vertex buffer - vertexCount: u32 = 0, // - - stagingVertexBuffer: NeonVkBuffer = undefined, - stagingIndexBuffer: NeonVkBuffer = undefined, - - isDirty: bool = true, - - maxVertexCount: u32, - - pub fn init(gc: *NeonVkContext, allocator: std.mem.Allocator, opts: struct { - maxVertexCount: u32 = 4096, - maxIndexCount: u32 = 4096 * 6 / 4, - mode: GeometryMode = .quads, - }) !*@This() { - var self = try allocator.create(@This()); - self.* = .{ - .maxVertexCount = opts.maxVertexCount, - .allocator = allocator, - .vertices = try allocator.alloc(MeshVertex, opts.maxVertexCount), - .gc = gc, - .geometryMode = opts.mode, - }; - - try gc.dynamicMeshManager.addDynamicMesh(self); - - self.allocator = allocator; - self.gc = gc; - - { - self.stagingIndexBuffer = try gc.vkAllocator.createStagingBuffer(opts.maxIndexCount * @sizeOf(u32), "DynamicMesh.init - index staging"); - self.stagingVertexBuffer = try gc.vkAllocator.createStagingBuffer(opts.maxVertexCount * @sizeOf(MeshVertex), "DynamicMesh.init - vertex staging"); - - inline for (0..2) |i| { - self.indexBuffers[i] = try gc.vkAllocator.createGpuBuffer(opts.maxIndexCount * @sizeOf(u32), .{ - .index_buffer_bit = true, - }, "DynamicMesh.init - gpu indexBuffer" ++ std.fmt.comptimePrint("[{d}]", .{i})); - - self.vertexBuffers[i] = try gc.vkAllocator.createGpuBuffer(opts.maxVertexCount * @sizeOf(MeshVertex), .{ - .vertex_buffer_bit = true, - }, "DynamicMesh.init - gpu vertexBuffer" ++ std.fmt.comptimePrint("[{d}]", .{i})); - } - } - - return self; - } - - pub fn getIndexBuffer(self: *@This()) NeonVkBuffer { - return self.indexBuffers[self.swapId]; - } - - pub fn getVertexBuffer(self: *@This()) NeonVkBuffer { - return self.vertexBuffers[self.swapId]; - } - - pub fn getIndexBufferLen(self: *@This()) u32 { - return self.indexBufferLen[self.swapId]; - } - - pub fn getVertexBufferLen(self: *@This()) u32 { - return self.vertexBufferLen[self.swapId]; - } - - pub fn maybeUpdateVertices(self: *@This(), cmd: vk.CommandBuffer) !void { - if (!self.isDirty) { - return; - } - var t1 = core.tracy.ZoneN(@src(), "Dynamic Mesh upload with barriers"); - defer t1.End(); - self.isDirty = false; - - try self.stageDirtyVertices(); - if (self.indexBufferLen[self.swapId] == 0 or self.vertexCount == 0) { - return; - } - - var vkd = self.gc.vkd; - - var copy = vk.BufferCopy{ - .dst_offset = 0, - .src_offset = 0, - .size = self.indexBufferLen[self.swapId] * @as(u32, @intCast(@sizeOf(u32))), - }; - - // submit index Buffer - self.gc.vkd.cmdCopyBuffer( - cmd, - self.stagingIndexBuffer.buffer, - self.indexBuffers[self.swapId].buffer, - 1, - @as([*]const vk.BufferCopy, @ptrCast(©)), - ); - - var indexMemoryBarrier = vk.BufferMemoryBarrier{ - .buffer = self.indexBuffers[self.swapId].buffer, - .src_access_mask = .{ .transfer_read_bit = true }, - .dst_access_mask = .{ .index_read_bit = true }, - .src_queue_family_index = 0, - .dst_queue_family_index = 0, - .offset = 0, - .size = copy.size, - }; - - // Insert Barrier for indexBuffer - vkd.cmdPipelineBarrier( - cmd, - .{ .transfer_bit = true }, - .{ .vertex_input_bit = true }, - .{}, - 0, - undefined, - 1, - @ptrCast(&indexMemoryBarrier), - 0, - undefined, - ); - - copy.size = self.vertexCount * @as(u32, @intCast(@sizeOf(MeshVertex))); - - // submit vertex Buffer - self.gc.vkd.cmdCopyBuffer( - cmd, - self.stagingVertexBuffer.buffer, - self.vertexBuffers[self.swapId].buffer, - 1, - @as([*]const vk.BufferCopy, @ptrCast(©)), - ); - - // Insert Barrier for vertexBuffer - var vertexMemoryBarrier = vk.BufferMemoryBarrier{ - .buffer = self.vertexBuffers[self.swapId].buffer, - .src_access_mask = .{ - .transfer_read_bit = true, - }, - .dst_access_mask = .{ - // .transfer_write_bit = true, - .vertex_attribute_read_bit = true, - }, - .src_queue_family_index = 0, - .dst_queue_family_index = 0, - .offset = 0, - .size = copy.size, - }; - - vkd.cmdPipelineBarrier( - cmd, - .{ .transfer_bit = true }, - .{ .vertex_input_bit = true }, - .{}, - 0, - undefined, - 1, - @ptrCast(&vertexMemoryBarrier), - 0, - undefined, - ); - } - - pub fn stageDirtyVertices(self: *@This()) !void { - const newSwapId = (self.swapId + 1) % 2; - // map buffers - - var slice = try self.gc.vkAllocator.mapMemorySlice(MeshVertex, self.stagingVertexBuffer, self.vertices.len); - var indexSlice = try self.gc.vkAllocator.mapMemorySlice(u32, self.stagingIndexBuffer, self.vertices.len * 6 / 4); - - defer self.gc.vkAllocator.unmapMemory(self.stagingVertexBuffer); - defer self.gc.vkAllocator.unmapMemory(self.stagingIndexBuffer); - - // copy over vertices to mapped buffer - for (0..self.vertexCount) |i| { - slice[i] = self.vertices[i]; - } - self.vertexBufferLen[newSwapId] = self.vertexCount; - - // interpret vertices as quads. - if (self.geometryMode == .quads) { - var index: u32 = 0; - var vertex: u32 = 0; - while (vertex < self.vertexCount) { - indexSlice[index + 0] = vertex + 0; - indexSlice[index + 1] = vertex + 1; - indexSlice[index + 2] = vertex + 2; - - indexSlice[index + 3] = vertex + 2; - indexSlice[index + 4] = vertex + 3; - indexSlice[index + 5] = vertex + 0; - - vertex += 4; - index += 6; - } - self.indexBufferLen[newSwapId] = index; - } - - self.swapId = newSwapId; - } - - // a stream-like interface for creating vertices - // pub fn uploadVertices(self: *@This(), uploader: *NeonVkUploader) !void { - // if (!self.isDirty) { - // return; - // } - - // self.dirty = false; - - // const newSwapId = (self.swapId + 1) % 2; - // // map buffers - - // var slice = try self.gc.vkAllocator.mapMemorySlice(MeshVertex, self.stagingVertexBuffer, self.vertices.len); - // var indexSlice = try self.gc.vkAllocator.mapMemorySlice(u32, self.stagingIndexBuffer, self.vertices.len * 6 / 4); - - // defer self.gc.vkAllocator.unmapMemory(self.stagingVertexBuffer); - // defer self.gc.vkAllocator.unmapMemory(self.stagingIndexBuffer); - - // // copy over vertices to mapped buffer - // // so... this right here would need to lock.. actually this would be a try-lock - // // if we fail to lock it... that's ok. we can just try again at the end of the frame. - // // what happens if we always fail to lock it? - - // for (0..self.vertexCount) |i| { - // slice[i] = self.vertices[i]; - // } - // self.vertexBufferLen[newSwapId] = self.vertexCount; - - // // interpret vertices as quads. - // if (self.geometryMode == .quads) { - // var index: u32 = 0; - // var vertex: u32 = 0; - // while (vertex < self.vertexCount) { - // indexSlice[index + 0] = vertex + 0; - // indexSlice[index + 1] = vertex + 1; - // indexSlice[index + 2] = vertex + 2; - - // indexSlice[index + 3] = vertex + 2; - // indexSlice[index + 4] = vertex + 3; - // indexSlice[index + 5] = vertex + 0; - - // vertex += 4; - // index += 6; - // } - // self.indexBufferLen[newSwapId] = index; - // } - - // // upload index and vertex buffers - // try uploader.addBufferUpload( - // self.stagingIndexBuffer, - // self.indexBuffers[newSwapId], - // self.indexBufferLen[newSwapId] * @as(u32, @intCast(@sizeOf(u32))), - // ); - - // try uploader.addBufferUpload( - // self.stagingVertexBuffer, - // self.vertexBuffers[newSwapId], - // self.vertexCount * @as(u32, @intCast(@sizeOf(MeshVertex))), - // ); - // } - - pub fn bumpSwapId(self: *@This()) void { - self.swapId = (self.swapId + 1) % 2; - self.isDirty = false; - } - - pub fn clearVertices(self: *@This()) void { - self.vertexCount = 0; - self.isDirty = true; - } - - pub fn addVertexList(self: *@This(), list: []const MeshVertex) void { - if (list.len > 0) { - self.isDirty = true; - } - for (list) |v| { - self.vertices[self.vertexCount] = v; - self.vertexCount += 1; - } - } - - // adds a quad only in the X and y Space, - pub fn addQuad2D( - self: *@This(), - _topLeft: core.Vectorf, // only x and y is considered - _size: core.Vectorf, // only x and y is considered - topLeftUV: core.Vector2f, - uvSize: core.Vector2f, - color: LinearColor, - ) void { - var topLeft = _topLeft; - var size = _size; - - topLeft.z = 0; - size.z = 0; - - const normal = Vectorf{ .x = 0, .y = 0, .z = -1 }; - - var vertices: [4]MeshVertex = undefined; - - vertices[0] = .{ - .position = topLeft, - .normal = normal, - .uv = topLeftUV, - .color = color, - }; - - vertices[1] = .{ - .position = topLeft.add(.{ .x = size.x }), - .normal = normal, - .uv = topLeftUV.add(core.Vector2f{ .x = uvSize.x }), - .color = color, - }; - - vertices[2] = .{ - .position = topLeft.add(size), - .normal = normal, - .uv = topLeftUV.add(uvSize), - .color = color, - }; - - vertices[3] = .{ - .position = topLeft.add(.{ .y = size.y }), - .normal = normal, - .uv = topLeftUV.add(core.Vector2f{ .y = uvSize.y }), - .color = color, - }; - - self.addVertexList(&vertices); - } - - pub fn deinit(self: *@This()) void { - self.allocator.free(self.vertices); - - const vkAllocator = self.gc.vkAllocator; - - self.stagingVertexBuffer.deinit(vkAllocator); - self.stagingIndexBuffer.deinit(vkAllocator); - - for (0..self.indexBuffers.len) |i| { - self.indexBuffers[i].deinit(vkAllocator); - self.vertexBuffers[i].deinit(vkAllocator); - } - - self.allocator.destroy(self); - // should remove ourselves from the manager - } -}; +const std = @import("std"); +const core = @import("core"); +const vk_renderer = @import("vk_renderer.zig"); +const vma = @import("vma"); +const vk = @import("vulkan"); +const obj_loader = @import("objLoader"); +const constants = @import("vk_constants.zig"); +const vk_utils = @import("vk_utils.zig"); + +const NeonVkUploader = vk_utils.NeonVkUploader; +const NeonVkBuffer = vk_renderer.NeonVkBuffer; +const ObjMesh = obj_loader.ObjMesh; +const ArrayList = std.ArrayList; +const Vectorf = core.Vectorf; +const Vector2f = core.Vector2f; +const LinearColor = core.colors.Color; +const NeonVkContext = vk_renderer.NeonVkContext; + +const mesh = @import("mesh.zig"); +const MeshVertex = mesh.MeshVertex; + +const debug_struct = core.debug_struct; + +pub const DynamicMeshManager = struct { + gc: *NeonVkContext, + + allocator: std.mem.Allocator, + dynMeshes: std.ArrayListUnmanaged(*DynamicMesh) = .{}, + uploader: NeonVkUploader, + + first: bool = true, + + pub fn init(gc: *NeonVkContext) !*@This() { + const self = try gc.allocator.create(@This()); + self.* = @This(){ + .gc = gc, + .allocator = gc.allocator, + .uploader = try NeonVkUploader.init(gc, "dynamic mesh manager uploader"), + }; + + // core.graphics_log("creating the mesh manager", .{}); + return self; + } + + pub fn deinit(self: *@This()) void { + self.uploader.deinit(); + self.dynMeshes.deinit(self.allocator); + self.allocator.destroy(self); + } + + pub fn addDynamicMesh(self: *@This(), dynamicMesh: *DynamicMesh) !void { + try self.dynMeshes.append(self.allocator, dynamicMesh); + } + + pub fn updateMeshes(self: *@This(), cmd: vk.CommandBuffer) !void { + for (self.dynMeshes.items) |dynMesh| { + try dynMesh.maybeUpdateVertices(cmd); + } + } + + pub fn finishUpload(self: *@This()) !void { + if (self.uploader.isActive) { + var t3 = core.tracy.ZoneN(@src(), "finishing dynamic mesh upload context"); + defer t3.End(); + + try self.uploader.waitForFences(); + + for (self.dynMeshes.items) |dynMesh| { + if (dynMesh.isDirty) { + dynMesh.bumpSwapId(); + } + } + } + } +}; + +pub const DynamicMesh = struct { + pub const GeometryMode = enum { quads, triangles }; + + allocator: std.mem.Allocator, + gc: *NeonVkContext, + + vertices: []MeshVertex = undefined, + geometryMode: GeometryMode = .quads, // geometry elaboration mode + indicesMaxCount: u32 = 0, + + indexBuffers: [2]NeonVkBuffer = undefined, + indexBufferLen: [2]u32 = .{ 0, 0 }, + + vertexBuffers: [2]NeonVkBuffer = undefined, + vertexBufferLen: [2]u32 = .{ 0, 0 }, + + swapId: usize = 0, // the index of the previously uploaded vertex buffer + vertexCount: u32 = 0, // + + stagingVertexBuffer: NeonVkBuffer = undefined, + stagingIndexBuffer: NeonVkBuffer = undefined, + + isDirty: bool = true, + + maxVertexCount: u32, + + pub fn init(gc: *NeonVkContext, allocator: std.mem.Allocator, opts: struct { + maxVertexCount: u32 = 4096, + maxIndexCount: u32 = 4096 * 6 / 4, + mode: GeometryMode = .quads, + }) !*@This() { + var self = try allocator.create(@This()); + self.* = .{ + .maxVertexCount = opts.maxVertexCount, + .allocator = allocator, + .vertices = try allocator.alloc(MeshVertex, opts.maxVertexCount), + .gc = gc, + .geometryMode = opts.mode, + }; + + try gc.dynamicMeshManager.addDynamicMesh(self); + + self.allocator = allocator; + self.gc = gc; + + { + self.stagingIndexBuffer = try gc.vkAllocator.createStagingBuffer(opts.maxIndexCount * @sizeOf(u32), "DynamicMesh.init - index staging"); + self.stagingVertexBuffer = try gc.vkAllocator.createStagingBuffer(opts.maxVertexCount * @sizeOf(MeshVertex), "DynamicMesh.init - vertex staging"); + + inline for (0..2) |i| { + self.indexBuffers[i] = try gc.vkAllocator.createGpuBuffer(opts.maxIndexCount * @sizeOf(u32), .{ + .index_buffer_bit = true, + }, "DynamicMesh.init - gpu indexBuffer" ++ std.fmt.comptimePrint("[{d}]", .{i})); + + self.vertexBuffers[i] = try gc.vkAllocator.createGpuBuffer(opts.maxVertexCount * @sizeOf(MeshVertex), .{ + .vertex_buffer_bit = true, + }, "DynamicMesh.init - gpu vertexBuffer" ++ std.fmt.comptimePrint("[{d}]", .{i})); + } + } + + return self; + } + + pub fn getIndexBuffer(self: *@This()) NeonVkBuffer { + return self.indexBuffers[self.swapId]; + } + + pub fn getVertexBuffer(self: *@This()) NeonVkBuffer { + return self.vertexBuffers[self.swapId]; + } + + pub fn getIndexBufferLen(self: *@This()) u32 { + return self.indexBufferLen[self.swapId]; + } + + pub fn getVertexBufferLen(self: *@This()) u32 { + return self.vertexBufferLen[self.swapId]; + } + + pub fn maybeUpdateVertices(self: *@This(), cmd: vk.CommandBuffer) !void { + if (!self.isDirty) { + return; + } + var t1 = core.tracy.ZoneN(@src(), "Dynamic Mesh upload with barriers"); + defer t1.End(); + self.isDirty = false; + + try self.stageDirtyVertices(); + if (self.indexBufferLen[self.swapId] == 0 or self.vertexCount == 0) { + return; + } + + var vkd = self.gc.vkd; + + var copy = vk.BufferCopy{ + .dst_offset = 0, + .src_offset = 0, + .size = self.indexBufferLen[self.swapId] * @as(u32, @intCast(@sizeOf(u32))), + }; + + // submit index Buffer + self.gc.vkd.cmdCopyBuffer( + cmd, + self.stagingIndexBuffer.buffer, + self.indexBuffers[self.swapId].buffer, + 1, + @as([*]const vk.BufferCopy, @ptrCast(©)), + ); + + var indexMemoryBarrier = vk.BufferMemoryBarrier{ + .buffer = self.indexBuffers[self.swapId].buffer, + .src_access_mask = .{ .transfer_read_bit = true }, + .dst_access_mask = .{ .index_read_bit = true }, + .src_queue_family_index = 0, + .dst_queue_family_index = 0, + .offset = 0, + .size = copy.size, + }; + + // Insert Barrier for indexBuffer + vkd.cmdPipelineBarrier( + cmd, + .{ .transfer_bit = true }, + .{ .vertex_input_bit = true }, + .{}, + 0, + undefined, + 1, + @ptrCast(&indexMemoryBarrier), + 0, + undefined, + ); + + copy.size = self.vertexCount * @as(u32, @intCast(@sizeOf(MeshVertex))); + + // submit vertex Buffer + self.gc.vkd.cmdCopyBuffer( + cmd, + self.stagingVertexBuffer.buffer, + self.vertexBuffers[self.swapId].buffer, + 1, + @as([*]const vk.BufferCopy, @ptrCast(©)), + ); + + // Insert Barrier for vertexBuffer + var vertexMemoryBarrier = vk.BufferMemoryBarrier{ + .buffer = self.vertexBuffers[self.swapId].buffer, + .src_access_mask = .{ + .transfer_read_bit = true, + }, + .dst_access_mask = .{ + // .transfer_write_bit = true, + .vertex_attribute_read_bit = true, + }, + .src_queue_family_index = 0, + .dst_queue_family_index = 0, + .offset = 0, + .size = copy.size, + }; + + vkd.cmdPipelineBarrier( + cmd, + .{ .transfer_bit = true }, + .{ .vertex_input_bit = true }, + .{}, + 0, + undefined, + 1, + @ptrCast(&vertexMemoryBarrier), + 0, + undefined, + ); + } + + pub fn stageDirtyVertices(self: *@This()) !void { + const newSwapId = (self.swapId + 1) % 2; + // map buffers + + var slice = try self.gc.vkAllocator.mapMemorySlice(MeshVertex, self.stagingVertexBuffer, self.vertices.len); + var indexSlice = try self.gc.vkAllocator.mapMemorySlice(u32, self.stagingIndexBuffer, self.vertices.len * 6 / 4); + + defer self.gc.vkAllocator.unmapMemory(self.stagingVertexBuffer); + defer self.gc.vkAllocator.unmapMemory(self.stagingIndexBuffer); + + // copy over vertices to mapped buffer + for (0..self.vertexCount) |i| { + slice[i] = self.vertices[i]; + } + self.vertexBufferLen[newSwapId] = self.vertexCount; + + // interpret vertices as quads. + if (self.geometryMode == .quads) { + var index: u32 = 0; + var vertex: u32 = 0; + while (vertex < self.vertexCount) { + indexSlice[index + 0] = vertex + 0; + indexSlice[index + 1] = vertex + 1; + indexSlice[index + 2] = vertex + 2; + + indexSlice[index + 3] = vertex + 2; + indexSlice[index + 4] = vertex + 3; + indexSlice[index + 5] = vertex + 0; + + vertex += 4; + index += 6; + } + self.indexBufferLen[newSwapId] = index; + } + + self.swapId = newSwapId; + } + + // a stream-like interface for creating vertices + // pub fn uploadVertices(self: *@This(), uploader: *NeonVkUploader) !void { + // if (!self.isDirty) { + // return; + // } + + // self.dirty = false; + + // const newSwapId = (self.swapId + 1) % 2; + // // map buffers + + // var slice = try self.gc.vkAllocator.mapMemorySlice(MeshVertex, self.stagingVertexBuffer, self.vertices.len); + // var indexSlice = try self.gc.vkAllocator.mapMemorySlice(u32, self.stagingIndexBuffer, self.vertices.len * 6 / 4); + + // defer self.gc.vkAllocator.unmapMemory(self.stagingVertexBuffer); + // defer self.gc.vkAllocator.unmapMemory(self.stagingIndexBuffer); + + // // copy over vertices to mapped buffer + // // so... this right here would need to lock.. actually this would be a try-lock + // // if we fail to lock it... that's ok. we can just try again at the end of the frame. + // // what happens if we always fail to lock it? + + // for (0..self.vertexCount) |i| { + // slice[i] = self.vertices[i]; + // } + // self.vertexBufferLen[newSwapId] = self.vertexCount; + + // // interpret vertices as quads. + // if (self.geometryMode == .quads) { + // var index: u32 = 0; + // var vertex: u32 = 0; + // while (vertex < self.vertexCount) { + // indexSlice[index + 0] = vertex + 0; + // indexSlice[index + 1] = vertex + 1; + // indexSlice[index + 2] = vertex + 2; + + // indexSlice[index + 3] = vertex + 2; + // indexSlice[index + 4] = vertex + 3; + // indexSlice[index + 5] = vertex + 0; + + // vertex += 4; + // index += 6; + // } + // self.indexBufferLen[newSwapId] = index; + // } + + // // upload index and vertex buffers + // try uploader.addBufferUpload( + // self.stagingIndexBuffer, + // self.indexBuffers[newSwapId], + // self.indexBufferLen[newSwapId] * @as(u32, @intCast(@sizeOf(u32))), + // ); + + // try uploader.addBufferUpload( + // self.stagingVertexBuffer, + // self.vertexBuffers[newSwapId], + // self.vertexCount * @as(u32, @intCast(@sizeOf(MeshVertex))), + // ); + // } + + pub fn bumpSwapId(self: *@This()) void { + self.swapId = (self.swapId + 1) % 2; + self.isDirty = false; + } + + pub fn clearVertices(self: *@This()) void { + self.vertexCount = 0; + self.isDirty = true; + } + + pub fn addVertexList(self: *@This(), list: []const MeshVertex) void { + if (list.len > 0) { + self.isDirty = true; + } + for (list) |v| { + self.vertices[self.vertexCount] = v; + self.vertexCount += 1; + } + } + + // adds a quad only in the X and y Space, + pub fn addQuad2D( + self: *@This(), + _topLeft: core.Vectorf, // only x and y is considered + _size: core.Vectorf, // only x and y is considered + topLeftUV: core.Vector2f, + uvSize: core.Vector2f, + color: LinearColor, + ) void { + var topLeft = _topLeft; + var size = _size; + + topLeft.z = 0; + size.z = 0; + + const normal = Vectorf{ .x = 0, .y = 0, .z = -1 }; + + var vertices: [4]MeshVertex = undefined; + + vertices[0] = .{ + .position = topLeft, + .normal = normal, + .uv = topLeftUV, + .color = color, + }; + + vertices[1] = .{ + .position = topLeft.add(.{ .x = size.x }), + .normal = normal, + .uv = topLeftUV.add(core.Vector2f{ .x = uvSize.x }), + .color = color, + }; + + vertices[2] = .{ + .position = topLeft.add(size), + .normal = normal, + .uv = topLeftUV.add(uvSize), + .color = color, + }; + + vertices[3] = .{ + .position = topLeft.add(.{ .y = size.y }), + .normal = normal, + .uv = topLeftUV.add(core.Vector2f{ .y = uvSize.y }), + .color = color, + }; + + self.addVertexList(&vertices); + } + + pub fn deinit(self: *@This()) void { + self.allocator.free(self.vertices); + + const vkAllocator = self.gc.vkAllocator; + + self.stagingVertexBuffer.deinit(vkAllocator); + self.stagingIndexBuffer.deinit(vkAllocator); + + for (0..self.indexBuffers.len) |i| { + self.indexBuffers[i].deinit(vkAllocator); + self.vertexBuffers[i].deinit(vkAllocator); + } + + self.allocator.destroy(self); + // should remove ourselves from the manager + } +}; diff --git a/engine/graphics/src/vk_init.zig b/engine/_archive/graphics/src/vk_init.zig similarity index 100% rename from engine/graphics/src/vk_init.zig rename to engine/_archive/graphics/src/vk_init.zig diff --git a/engine/graphics/src/vk_pipeline.zig b/engine/_archive/graphics/src/vk_pipeline.zig similarity index 100% rename from engine/graphics/src/vk_pipeline.zig rename to engine/_archive/graphics/src/vk_pipeline.zig diff --git a/engine/graphics/src/vk_renderer.zig b/engine/_archive/graphics/src/vk_renderer.zig similarity index 100% rename from engine/graphics/src/vk_renderer.zig rename to engine/_archive/graphics/src/vk_renderer.zig diff --git a/engine/graphics/src/vk_renderer/RenderThread.zig b/engine/_archive/graphics/src/vk_renderer/RenderThread.zig similarity index 97% rename from engine/graphics/src/vk_renderer/RenderThread.zig rename to engine/_archive/graphics/src/vk_renderer/RenderThread.zig index 274eed5..22171fc 100644 --- a/engine/graphics/src/vk_renderer/RenderThread.zig +++ b/engine/_archive/graphics/src/vk_renderer/RenderThread.zig @@ -1,1013 +1,1013 @@ -// API dispatch functions -const vkd = vk_api.vkd; -const vki = vk_api.vki; -const vkb = vk_api.vkb; - -exitSignal: std.atomic.Value(bool) = std.atomic.Value(bool).init(false), -exitConfirmed: std.atomic.Value(bool) = std.atomic.Value(bool).init(false), -// allocators -allocator: std.mem.Allocator, -vkAllocator: *NeonVkAllocator, - -// device information and api handles -dev: vk.Device, -pdev: vk.PhysicalDevice, -pdevProperties: vk.PhysicalDeviceProperties, -caps: vk.SurfaceCapabilitiesKHR, -cmdPool: vk.CommandPool, -minUniformBufferAlignment: usize, - -// current extent of the window (raw values from platform) -extent: vk.Extent2D, - -dynamicMeshManager: *mesh.DynamicMeshManager, - -graphicsQueue: NeonVkQueue, -presentQueue: NeonVkQueue, -frameData: [NumFrames]NeonVkFrameData, - -displayTarget: DisplayTarget, - -// frame data to upload to gpu -framesInFlight: std.atomic.Value(u32), - -sharedData: [NumFrames]SharedData = undefined, - -actual_extent: vk.Extent2D = undefined, // actual_extent is the base extent used for active drawing, while extent is used -// for a specific frame -commandBuffers: [NumFrames]vk.CommandBuffer = undefined, -frameSync: [NumFrames]FrameSyncs = undefined, - -indirectStaging: graphics.NeonVkBuffer = undefined, -indirectGpu: graphics.NeonVkBuffer = undefined, - -isMinimized: std.atomic.Value(bool), - -// acquireNextFrame will prime an already allocated semaphore at the same time it -// returns an index. -// with double buffering we can't garutee which index will be acquired next. -// and we can't risk acquiring a semaphore that is already in flight. -// therefore this extraSemaphore shall act as an empty spot in the semaphore queue -emptyAcquireSemaphore: vk.Semaphore = undefined, - -// main renderpass information -renderPass: vk.RenderPass, -sceneParameterBuffer: NeonVkBuffer, -maxObjectCount: u32, - -plugins: *const std.ArrayListUnmanaged(RendererInterfaceRef), - -meshPool: *MeshPoolBuffers = undefined, - -listeners: std.ArrayListUnmanaged(ProcessEventListener) = .{}, - -const ProcessEventListener = struct { - ptr: *anyopaque, - func: *const fn (*anyopaque) void, -}; - -pub const ObjectSharedData = struct { - //textureSet: vk.DescriptorSet, - // textureId: u32, - indexedMesh: mesh_pool.IndexedMesh, -}; - -pub const SharedData = struct { - lock: std.Thread.Mutex, - cameraData: vk_renderer_camera_gpu.NeonVkCameraDataGpu, - sceneData: NeonVkSceneDataGpu, - pipeline: vk.Pipeline, - pipelineLayout: vk.PipelineLayout, - models: std.ArrayList(NeonVkObjectDataGpu) = .{}, - objectData: std.ArrayList(ObjectSharedData) = .{}, - skinning: std.ArrayList(core.Mat) = .{}, - extent: core.Vector2f, -}; - -const DisplayTarget = struct { - surface: vk.SurfaceKHR, - surfaceFormat: vk.SurfaceFormatKHR, - presentMode: vk.PresentModeKHR, - depthFormat: vk.Format, - - depthImage: NeonVkImage = undefined, - depthImageView: vk.ImageView = undefined, - scissor: vk.Rect2D = undefined, - viewport: vk.Viewport = undefined, - swapchain: vk.SwapchainKHR = .null_handle, - swapImages: []NeonVkSwapImage = undefined, - framebuffers: []vk.Framebuffer = undefined, - - pub fn deinit(self: *@This(), rt: *RenderThread) void { - var z1 = tracy.ZoneN(@src(), "RT - destroy displaytarget"); - defer z1.End(); - - var z2 = tracy.ZoneN(@src(), "RT - destroy swapimages"); - for (self.swapImages) |*swapImage| { - swapImage.deinit(vkd.*, rt.dev); - } - z2.End(); - rt.allocator.free(self.swapImages); - - var z3 = tracy.ZoneN(@src(), "RT - destroy framebuffers"); - for (self.framebuffers) |fb| { - vkd.destroyFramebuffer(rt.dev, fb, null); - } - rt.allocator.free(self.framebuffers); - z3.End(); - - var z4 = tracy.ZoneN(@src(), "RT - destroy swapchain"); - vkd.destroySwapchainKHR(rt.dev, self.swapchain, null); - self.swapchain = .null_handle; - z4.End(); - - var z5 = tracy.ZoneN(@src(), "RT - destroy imageviews"); - vkd.destroyImageView(rt.dev, self.depthImageView, null); - self.depthImage.deinit(rt.vkAllocator); - z5.End(); - } -}; - -// all the high level synchronization required for a frame -// task to be done with this engine -const FrameSyncs = struct { - // semaphore = resource dependency specification - // barrier = command and data flow completion specification - // fence = notification to host side - - acquire: vk.Semaphore, - renderComplete: vk.Semaphore, - cmdFence: vk.Fence, - - pub fn deinit(self: *@This(), dev: vk.Device) void { - var z1 = tracy.ZoneN(@src(), "RT - framesync deinit"); - defer z1.End(); - vkd.destroySemaphore(dev, self.acquire, null); - vkd.destroySemaphore(dev, self.renderComplete, null); - vkd.destroyFence(dev, self.cmdFence, null); - } -}; - -pub fn setup(self: *@This(), gc: *NeonVkContext) !void { - self.actual_extent = try vk_swapchain_helpers.findActualExtent(self.extent, self.caps); - self.meshPool = try MeshPoolBuffers.create(self.allocator, gc, .{}); - - try self.createSyncs(); - try self.initCommandBuffers(); - try self.initOrRecycleSwapchain(); - try self.initFramebuffers(); - try self.initIndirectBuffers(); - try self.initShared(); -} - -pub fn uploadIndirectCommands(self: *@This(), cmd: vk.CommandBuffer, count: u32) void { - vkd_utils.copyStagingSlice(vk.DrawIndexedIndirectCommand, cmd, .{ - .src = &self.indirectStaging, - .dst = &self.indirectGpu, - .size = count, - }); -} - -pub fn initIndirectBuffers(self: *@This()) !void { - self.indirectStaging = try self.vkAllocator.createStagingBuffer(8192 * @sizeOf(vk.DrawIndexedIndirectCommand), "main systems indirect staging buffer"); - self.indirectGpu = try self.vkAllocator.createIndirectCommandBuffer(8192 * @sizeOf(vk.DrawIndexedIndirectCommand), "main systems indirect command buffer"); -} - -fn deinitExtras(self: *@This()) void { - _ = self; -} - -pub fn onExitSignal(self: *@This()) void { - self.exitSignal.store(true, .seq_cst); -} - -fn destroySyncs(self: *@This()) void { - var z1 = tracy.ZoneN(@src(), "RT - destroy syncs"); - defer z1.End(); - - for (&self.frameSync) |*frameSync| { - frameSync.deinit(self.dev); - } - vkd.destroySemaphore(self.dev, self.emptyAcquireSemaphore, null); -} - -fn deinitCommandBuffers(self: *@This()) void { - - // no-op - _ = self; -} - -fn deinitSwapchain(_: *@This()) void {} - -fn deinitShared(self: *@This()) void { - var z1 = tracy.ZoneN(@src(), "RT - deinit shared"); - defer z1.End(); - - for (&self.sharedData) |*s| { - s.models.deinit(); - s.objectData.deinit(); - } -} - -fn processExitSignal(self: *@This()) void { - var z1 = tracy.ZoneN(@src(), "RT - destruction"); - defer z1.End(); - - core.engine_logs("RT - Process Exit Signal"); - - self.vkAllocator.destroyBuffer(&self.indirectGpu); - self.vkAllocator.destroyBuffer(&self.indirectStaging); - - vkd.queueWaitIdle(self.graphicsQueue.handle) catch {}; - - self.deinitShared(); - self.destroySyncs(); - self.deinitCommandBuffers(); - - self.displayTarget.deinit(self); - self.deinitExtras(); - self.listeners.deinit(self.allocator); - self.meshPool.destroy(); - - self.exitConfirmed.store(true, .seq_cst); -} - -pub fn acquireNextFrame(self: *@This()) !u32 { - var z1 = tracy.ZoneNC(@src(), "Waiting for frame", 0x111111); - defer z1.End(); - - const nextFrameIndex = try self.getNextSwapImage(); - - _ = try vkd.waitForFences( - self.dev, - 1, - @as([*]const vk.Fence, @ptrCast(&self.frameSync[nextFrameIndex].cmdFence)), - 1, - vk_constants.FrameTimeout, - ); - try vkd.resetFences(self.dev, 1, @as([*]const vk.Fence, @ptrCast(&self.frameSync[nextFrameIndex].cmdFence))); - - return nextFrameIndex; -} - -pub fn spinProcessExitSignal(self: *@This()) void { - while (self.framesInFlight.load(.acquire) > 0) {} - vkd.deviceWaitIdle(self.dev) catch {}; - self.processExitSignal(); - return; -} - -pub fn updateMeshImages(self: *@This()) !void { - if (graphics.getContext().newMeshImages.count() > 0) { - graphics.getContext().newMeshImages.lock(); - defer graphics.getContext().newMeshImages.unlock(); - while (graphics.getContext().newMeshImages.popFromUnlocked()) |new| { - var imageBufferInfo = new.bufferInfo; - for (0..self.frameData.len) |i| { - var writeDescriptorSet = vkinit.writeDescriptorImage( - .combined_image_sampler, - self.frameData[i].globalDescriptorSet, - &imageBufferInfo, - 2, - ); - writeDescriptorSet.dst_array_element = new.textureId; - vkd.updateDescriptorSets(self.dev, 1, @ptrCast(&writeDescriptorSet), 0, undefined); - } - } - } -} - -// can be called from any thread. -// queues up a render job for the next frame -pub fn dispatchNextFrame(self: *@This(), deltaTime: f64, frameIndex: u32) !void { - var z2 = tracy.ZoneN(@src(), "rendering job request"); - defer z2.End(); - - const L = struct { - r: *RenderThread, - dt: f64, - frameIndex: u32, - - pub fn func(ctx: *@This(), _: *core.JobContext) void { - // check for mesh pool updates - ctx.r.updateMeshImages() catch unreachable; - ctx.r.meshPool.checkUpdates() catch unreachable; - ctx.r.draw(ctx.dt, ctx.frameIndex) catch unreachable; - while (ctx.r.framesInFlight.cmpxchgStrong(1, 0, .seq_cst, .acquire) != null) {} - } - }; - - try core.dispatchJob(L{ - .r = self, - .dt = deltaTime, - .frameIndex = frameIndex, - }); -} - -pub fn getFrameData(self: *@This(), index: u32) *NeonVkFrameData { - return &self.frameData[index]; -} - -pub fn getShared(self: *@This(), index: u32) *SharedData { - return &self.sharedData[index]; -} - -pub fn pad_uniform_buffer_size(self: @This(), originalSize: usize) usize { - const alignment = @as(usize, @intCast(self.pdevProperties.limits.min_uniform_buffer_offset_alignment)); - - var alignedSize: usize = originalSize; - if (alignment > 0) { - alignedSize = (alignedSize + alignment - 1) & ~(alignment - 1); - } - - return alignedSize; -} - -pub fn renderMeshes(self: *@This(), cmd: vk.CommandBuffer, fi: u32) void { - const shared = self.getShared(fi); - - const offset: vk.DeviceSize = 0; - const paddedSceneSize = @as(u32, @intCast(self.pad_uniform_buffer_size(@sizeOf(NeonVkSceneDataGpu)))); - const startOffset: u32 = paddedSceneSize * fi; - - const frameData = self.getFrameData(fi); - const layout = shared.pipelineLayout; - const pipeline = shared.pipeline; - - var buffers = graphics.getMeshPoolBuffers(); - vkd.cmdBindVertexBuffers(cmd, 0, 1, @ptrCast(&buffers.vertex.buffer), @ptrCast(&offset)); - vkd.cmdBindIndexBuffer(cmd, buffers.index.buffer, 0, .uint32); - - // skybox - const skybox = SkyboxSystem.gSkybox; - if (skybox.cubeMapShared[fi] != null and skybox.mesh != null) { - vkd.cmdBindPipeline(cmd, .graphics, skybox.material.pipeline); - vkd.cmdBindDescriptorSets(cmd, .graphics, skybox.material.layout, 0, 1, @ptrCast(&frameData.globalDescriptorSet), 1, @ptrCast(&startOffset)); - vkd.cmdBindDescriptorSets(cmd, .graphics, skybox.material.layout, 1, 1, @ptrCast(&skybox.cubeMapShared[fi]), 0, undefined); - const skyboxMesh = skybox.mesh.?; - vkd.cmdDrawIndexed(cmd, skyboxMesh.index.size, 1, skyboxMesh.index.start, 0, 0); - } - - // all regular meshes - vkd.cmdBindPipeline(cmd, .graphics, pipeline); - vkd.cmdBindDescriptorSets(cmd, .graphics, layout, 0, 1, @ptrCast(&frameData.globalDescriptorSet), 1, @ptrCast(&startOffset)); - vkd.cmdBindDescriptorSets(cmd, .graphics, layout, 1, 1, @ptrCast(&frameData.objectDescriptorSet), 0, undefined); - - const count = shared.objectData.items.len; - vkd.cmdDrawIndexedIndirect(cmd, self.indirectGpu.buffer, 0, @intCast(count), @sizeOf(vk.DrawIndexedIndirectCommand)); -} - -pub fn updateIndirectBuffers(self: *@This(), cmd: vk.CommandBuffer, fi: u32) !void { - const shared = self.getShared(fi); - - const count = shared.objectData.items.len; - if (count == 0) - return; - - const mapped = self.vkAllocator.mapBuffer(vk.DrawIndexedIndirectCommand, self.indirectStaging) catch unreachable; - defer self.vkAllocator.unmapMemory(self.indirectStaging); - - for (shared.objectData.items, 0..) |object, i| { - const meshBuffer = object.indexedMesh; - mapped[i] = .{ - .index_count = meshBuffer.index.size, - .instance_count = 1, - .first_index = meshBuffer.index.start, - .vertex_offset = 0, - .first_instance = @intCast(i), - }; - } - - self.uploadIndirectCommands(cmd, @intCast(count)); -} - -// fi = frameIndex -pub fn draw(self: *@This(), deltaTime: f64, fi: u32) !void { - _ = deltaTime; - var z1 = tracy.ZoneNC(@src(), "draw", 0x00FF1111); - defer z1.End(); - - if (!self.isMinimized.load(.acquire)) { - const syncIndex = self.acquireNextFrame() catch |err| { - switch (err) { - error.OutOfDateKHR => { - if (self.updateExtentIfDirty()) { - try self.resizeToNewExtents(); - } - return; - }, - else => { - return err; - }, - } - }; - try self.preFrameUpdate(fi); - const cmd = try self.startFrameCommands(fi); - - // try self.meshPool.updateRequests(cmd); - var z = tracy.ZoneNC(@src(), "Main RenderPass", 0x00FF1111); - const time = core.getEngineTime(); - - try self.updateIndirectBuffers(cmd, fi); - self.preDrawPlugins(cmd, fi); - try self.beginMainRenderpass(cmd, syncIndex); - - self.renderMeshes(cmd, fi); - self.postDrawPlugins(cmd, fi); - - try self.finishMainRenderpass(cmd, fi); - try self.dynamicMeshManager.updateMeshes(cmd); - - const delta = core.getEngineTime() - time; - - core.rollingAverage(&core.getEngine().renderThreadTime, delta, 60); - - z.End(); - try vkd.endCommandBuffer(cmd); - try self.finishFrame(fi, syncIndex); - } else { - if (self.updateExtentIfDirty()) { - try self.resizeToNewExtents(); - - std.time.sleep(300 * 1000 * 1000); - } - } - // self.dynamicMeshManager.finishUpload() catch unreachable; -} - -fn preDrawPlugins(self: *@This(), cmd: vk.CommandBuffer, fi: u32) void { - for (self.plugins.items) |interface| { - if (interface.vtable.rtPreDraw) |rtPreDraw| { - rtPreDraw(interface.ptr, self, cmd, fi); - } - } -} - -fn postDrawPlugins(self: *@This(), cmd: vk.CommandBuffer, fi: u32) void { - for (self.plugins.items) |interface| { - if (interface.vtable.rtPostDraw) |rtPostDraw| { - rtPostDraw(interface.ptr, self, cmd, fi); - } - } -} - -fn finishMainRenderpass(self: *@This(), cmd: vk.CommandBuffer, fi: u32) !void { - _ = self; - _ = fi; - vkd.cmdEndRenderPass(cmd); -} - -fn preFrameUpdate(self: *@This(), fi: u32) !void { - for (self.listeners.items) |entry| { - entry.func(entry.ptr); - } - - // upload camera data - const shared = self.getShared(fi); - shared.lock.lock(); - defer shared.lock.unlock(); - - shared.extent = .{ - .x = @as(f32, @floatFromInt(platform.getInstance().extent().x)), - .y = @as(f32, @floatFromInt(platform.getInstance().extent().y)), - }; - - { - const data = try self.vkAllocator.vmaAllocator.mapMemory(self.frameData[fi].cameraBuffer.allocation, u8); - shared.cameraData.upload(data); - self.vkAllocator.vmaAllocator.unmapMemory(self.frameData[fi].cameraBuffer.allocation); - } - - // upload scene global data - { - const paddedSceneSize = self.padUniformBufferSize(@sizeOf(NeonVkSceneDataGpu)); - const startOffset = paddedSceneSize * fi; - const data = try self.vkAllocator.vmaAllocator.mapMemory(self.sceneParameterBuffer.allocation, u8); - - var dataSlice: []u8 = undefined; - dataSlice.ptr = data + startOffset; - dataSlice.len = @sizeOf(@TypeOf(shared.sceneData)); - - var inputSlice: []const u8 = undefined; - inputSlice.ptr = @as([*]const u8, @ptrCast(&shared.sceneData)); - inputSlice.len = dataSlice.len; - - @memcpy(dataSlice, inputSlice); - - self.vkAllocator.vmaAllocator.unmapMemory(self.sceneParameterBuffer.allocation); - } - - try self.uploadObjectData(shared, fi); -} - -fn uploadObjectData(self: *@This(), shared: *SharedData, fi: u32) !void { - var z1 = tracy.ZoneN(@src(), "uploading ssbo data"); - defer z1.End(); - { - const allocation = self.frameData[fi].objectBuffer.allocation; - const data = try self.vkAllocator.vmaAllocator.mapMemory(allocation, NeonVkObjectDataGpu); - var ssbo: []NeonVkObjectDataGpu = undefined; - ssbo.ptr = @as([*]NeonVkObjectDataGpu, @ptrCast(data)); - ssbo.len = self.maxObjectCount; - - for (shared.models.items, 0..) |model, i| { - ssbo[i] = model; - } - - self.vkAllocator.vmaAllocator.unmapMemory(allocation); - } - - // animations - { - const finals = try self.vkAllocator.mapBuffer(core.Mat, self.frameData[fi].animationsBuffer); - defer self.vkAllocator.unmapMemory(self.frameData[fi].animationsBuffer); - - const as = animationSystem.gAnimationSys; - as.sharedLocks[fi].lock(); - defer as.sharedLocks[fi].unlock(); - - const sharedFinals = as.getShared(fi); - - for (sharedFinals) |upload| { - for (upload.matrices.items, 0..) |final, i| { - finals[upload.offset + i] = final; - } - } - } -} - -fn padUniformBufferSize(self: @This(), originalSize: usize) usize { - var alignedSize: usize = originalSize; - if (self.minUniformBufferAlignment > 0) { - alignedSize = (alignedSize + self.minUniformBufferAlignment - 1) & ~(self.minUniformBufferAlignment - 1); - } - - return alignedSize; -} - -fn startFrameCommands(self: *@This(), fi: u32) !vk.CommandBuffer { - const cmd = self.commandBuffers[fi]; - - try vkd.resetCommandBuffer(cmd, .{}); - - var cbi = vk.CommandBufferBeginInfo{ - .p_inheritance_info = null, - .flags = .{ .one_time_submit_bit = true }, - }; - - try vkd.beginCommandBuffer(cmd, &cbi); - - return cmd; -} - -fn beginMainRenderpass(self: *@This(), cmd: vk.CommandBuffer, syncIndex: u32) !void { - var z = tracy.ZoneNC(@src(), "Begin RenderPass", 0xFFBBBB); - defer z.End(); - - var clearValues = [2]vk.ClearValue{ - .{ - .color = .{ .float_32 = [4]f32{ 0.005, 0.005, 0.005, 1.0 } }, - }, - .{ - .depth_stencil = .{ - .depth = 1.0, - .stencil = 0.0, - }, - }, - }; - - var rpbi = vk.RenderPassBeginInfo{ - .render_area = .{ - .extent = self.actual_extent, - .offset = .{ .x = 0, .y = 0 }, - }, - .framebuffer = self.displayTarget.framebuffers[syncIndex], - .render_pass = self.renderPass, - .clear_value_count = 2, - .p_clear_values = @as([*]const vk.ClearValue, @ptrCast(&clearValues)), - }; - - vkd.cmdBeginRenderPass(cmd, &rpbi, .@"inline"); - - vkd.cmdSetViewport(cmd, 0, 1, @ptrCast(&self.displayTarget.viewport)); - vkd.cmdSetScissor(cmd, 0, 1, @ptrCast(&self.displayTarget.scissor)); -} - -fn finishFrame(self: *@This(), frameIndex: u32, syncIndex: u32) !void { - var waitStage = vk.PipelineStageFlags{ .color_attachment_output_bit = true }; - - var submit = vk.SubmitInfo{ - .p_wait_dst_stage_mask = @as([*]const vk.PipelineStageFlags, @ptrCast(&waitStage)), - .wait_semaphore_count = 1, - .p_wait_semaphores = @as([*]const vk.Semaphore, @ptrCast(&self.frameSync[syncIndex].acquire)), - .signal_semaphore_count = 1, - .p_signal_semaphores = @as([*]const vk.Semaphore, @ptrCast(&self.frameSync[syncIndex].renderComplete)), - .command_buffer_count = 1, - .p_command_buffers = @as([*]const vk.CommandBuffer, @ptrCast(&self.commandBuffers[frameIndex])), - }; - - try vkd.queueSubmit( - self.graphicsQueue.handle, - 1, - @as([*]const vk.SubmitInfo, @ptrCast(&submit)), - self.frameSync[syncIndex].cmdFence, - ); - - var presentInfo = vk.PresentInfoKHR{ - .p_swapchains = @as([*]const vk.SwapchainKHR, @ptrCast(&self.displayTarget.swapchain)), - .swapchain_count = 1, - .p_wait_semaphores = @as([*]const vk.Semaphore, @ptrCast(&self.frameSync[syncIndex].renderComplete)), - .wait_semaphore_count = 1, - .p_image_indices = @as([*]const u32, @ptrCast(&syncIndex)), - .p_results = null, - }; - - // todo re-implement handling out of date KHR - var outOfDate: bool = false; - _ = vkd.queuePresentKHR(self.graphicsQueue.handle, &presentInfo) catch |err| switch (err) { - error.OutOfDateKHR => { - outOfDate = true; - }, - else => |narrow| return narrow, - }; - - if (outOfDate and self.updateExtentIfDirty()) { - try self.resizeToNewExtents(); - } -} - -fn resizeToNewExtents(self: *@This()) !void { - var z1 = tracy.ZoneN(@src(), "resizing to new extents"); - defer z1.End(); - self.isMinimized.store(false, .seq_cst); - try vkd.deviceWaitIdle(self.dev); - self.displayTarget.deinit(self); - - try self.initOrRecycleSwapchain(); - try self.initFramebuffers(); -} - -pub fn minimized(self: @This()) bool { - return self.isMinimized.load(.acquire); -} - -pub fn checkIfStillMinimized() bool { - var w: c_int = undefined; - var h: c_int = undefined; - platform.glfw3.glfwGetWindowSize(platform.getInstance().window, &w, &h); - - if (w > 0 and h > 0) { - return true; - } - return false; -} - -pub fn updateExtentIfDirty(self: *@This()) bool { - var w: c_int = undefined; - var h: c_int = undefined; - platform.glfw3.glfwGetWindowSize(platform.getInstance().window, &w, &h); - - if (((self.extent.width != @as(u32, @intCast(w)) or self.extent.height != @as(u32, @intCast(h))) and w > 0 and h > 0)) { - self.extent = .{ .width = @as(u32, @intCast(w)), .height = @as(u32, @intCast(h)) }; - platform.getInstance().updateExtent(.{ .x = w, .y = h }); - - return true; - } - - if (w <= 0 or h <= 0) { - self.extent.width = 0; - self.extent.height = 0; - self.isMinimized.store(true, .seq_cst); - } else { - self.isMinimized.store(false, .seq_cst); - } - - return false; -} - -fn getNextSwapImage(self: *@This()) !u32 { - const imageIndex = (try vkd.acquireNextImageKHR( - self.dev, - self.displayTarget.swapchain, - 1000000000, - self.emptyAcquireSemaphore, - .null_handle, - )).image_index; - - // core.assert(imageIndex < 2) catch @panic("swap index > 2??"); - // load the newly primed semaphore for the acquire operation into the next slot - std.mem.swap( - vk.Semaphore, - &self.emptyAcquireSemaphore, - &self.frameSync[imageIndex].acquire, - ); - - return imageIndex; -} - -// -- initSyncs -- -fn createSyncs(self: *@This()) !void { - const semaphoreCreateInfo = vk.SemaphoreCreateInfo{ - .flags = .{}, - }; - - var fci = vk.FenceCreateInfo{ - .flags = .{ .signaled_bit = true }, - }; - - for (0..NumFrames) |i| { - self.frameSync[i].acquire = try vkd.createSemaphore(self.dev, &semaphoreCreateInfo, null); - self.frameSync[i].renderComplete = try vkd.createSemaphore(self.dev, &semaphoreCreateInfo, null); - self.frameSync[i].cmdFence = try vkd.createFence(self.dev, &fci, null); - } - - self.emptyAcquireSemaphore = try vkd.createSemaphore(self.dev, &semaphoreCreateInfo, null); -} - -// -- init command buffers -- -fn initCommandBuffers(self: *@This()) !void { - var cbai = vk.CommandBufferAllocateInfo{ - .command_pool = self.cmdPool, - .level = vk.CommandBufferLevel.primary, - .command_buffer_count = NumFrames, - }; - try vkd.allocateCommandBuffers(self.dev, &cbai, &self.commandBuffers); -} - -// -- Swapchain initialization -- -fn initOrRecycleSwapchain(self: *@This()) !void { - self.caps = try vki.getPhysicalDeviceSurfaceCapabilitiesKHR(self.pdev, self.displayTarget.surface); - - self.displayTarget.presentMode = try vk_swapchain_helpers.findPresentMode(self.allocator, self.pdev, self.displayTarget.surface); - - self.actual_extent = try vk_swapchain_helpers.findActualExtent(self.extent, self.caps); - - if (self.actual_extent.width == 0 or self.actual_extent.height == 0) { - return error.InvalidSurfaceDimensions; - } - - var image_count = @as(u32, @intCast(NumFrames)); - if (self.caps.max_image_count > 0) { - image_count = @min(image_count, self.caps.max_image_count); - } - - const qfi = [_]u32{ self.graphicsQueue.family, self.presentQueue.family }; - - const sharing_mode: vk.SharingMode = if (self.graphicsQueue.family != self.presentQueue.family) - .concurrent - else - .exclusive; - - var scci = vk.SwapchainCreateInfoKHR{ - .flags = .{}, - .surface = self.displayTarget.surface, - .min_image_count = image_count, - .image_format = self.displayTarget.surfaceFormat.format, - .image_color_space = self.displayTarget.surfaceFormat.color_space, - .image_extent = self.actual_extent, - .image_array_layers = 1, - .image_usage = .{ .color_attachment_bit = true, .transfer_dst_bit = true }, - .image_sharing_mode = sharing_mode, - .queue_family_index_count = qfi.len, - .p_queue_family_indices = &qfi, - .pre_transform = self.caps.current_transform, - .composite_alpha = .{ .opaque_bit_khr = true }, - .present_mode = self.displayTarget.presentMode, - .clipped = vk.TRUE, - .old_swapchain = self.displayTarget.swapchain, - }; - - const newSwapchain = try vkd.createSwapchainKHR(self.dev, &scci, null); - errdefer vkd.destroySwapchainKHR(self.dev, newSwapchain, null); - - if (self.displayTarget.swapchain != .null_handle) { - vkd.destroySwapchainKHR(self.dev, self.displayTarget.swapchain, null); - } - - self.displayTarget.swapchain = newSwapchain; - try self.createSwapchainImagesAndViews(); - - self.displayTarget.viewport = vk.Viewport{ - .x = 0, - .y = 0, - .width = @as(f32, @floatFromInt(self.actual_extent.width)), - .height = @as(f32, @floatFromInt(self.actual_extent.height)), - .min_depth = 0.0, - .max_depth = 1.0, - }; - - self.displayTarget.scissor = .{ - .offset = .{ .x = 0, .y = 0 }, - .extent = self.actual_extent, - }; -} - -fn createSwapchainImagesAndViews(self: *@This()) !void { - var count: u32 = 0; - _ = try vkd.getSwapchainImagesKHR(self.dev, self.displayTarget.swapchain, &count, null); - if (count == 0) { - core.engine_errs("No swap chain image found"); - return error.NoSwapchainImagesFound; - } - core.graphics_log("Creating {d} swap images", .{count}); - self.displayTarget.swapImages = try self.allocator.alloc(NeonVkSwapImage, count); - - const images = try self.allocator.alloc(vk.Image, count); - defer self.allocator.free(images); - - _ = try vkd.getSwapchainImagesKHR(self.dev, self.displayTarget.swapchain, &count, images.ptr); - - for (0..NumFrames) |i| { - const image = images[i]; - - var ivci = vk.ImageViewCreateInfo{ - .flags = .{}, - .image = image, - .view_type = .@"2d", - .format = self.displayTarget.surfaceFormat.format, - .components = .{ .r = .r, .g = .g, .b = .b, .a = .a }, - .subresource_range = .{ - .aspect_mask = .{ - .color_bit = true, - }, - .base_mip_level = 0, - .level_count = 1, - .base_array_layer = 0, - .layer_count = 1, - }, - }; - - const imageView = try vkd.createImageView(self.dev, &ivci, null); - - const swapImage = NeonVkSwapImage{ - .image = image, - .view = imageView, - .imageIndex = i, - }; - - self.displayTarget.swapImages[i] = swapImage; - } - - const depthImageExtent = vk.Extent3D{ - .width = self.actual_extent.width, - .height = self.actual_extent.height, - .depth = 1, - }; - - const dimg_ici = vk.ImageCreateInfo{ - .flags = .{}, - .sharing_mode = .exclusive, - .queue_family_index_count = 0, - .p_queue_family_indices = undefined, - .initial_layout = .undefined, - .image_type = .@"2d", - .format = self.displayTarget.depthFormat, - .extent = depthImageExtent, - .mip_levels = 1, - .array_layers = 1, - .samples = .{ - .@"1_bit" = true, - }, - .tiling = .optimal, - .usage = .{ .depth_stencil_attachment_bit = true }, - }; - - const dimg_aci = vma.AllocationCreateInfo{ - .requiredFlags = .{ - .device_local_bit = true, - }, - .usage = .gpuOnly, - }; - - self.displayTarget.depthImage = try self.vkAllocator.createImage(dimg_ici, dimg_aci, @src().fn_name ++ " depth Image - rt"); - - var imageViewCreate = vk.ImageViewCreateInfo{ - .flags = .{}, - .image = self.displayTarget.depthImage.image, - .view_type = .@"2d", - .format = self.displayTarget.depthFormat, - .components = .{ .r = .identity, .g = .identity, .b = .identity, .a = .identity }, - .subresource_range = .{ - .aspect_mask = .{ - .depth_bit = true, - }, - .base_mip_level = 0, - .level_count = 1, - .base_array_layer = 0, - .layer_count = 1, - }, - }; - - self.displayTarget.depthImageView = try vkd.createImageView(self.dev, &imageViewCreate, null); -} - -fn initShared(self: *@This()) !void { - for (&self.sharedData) |*s| { - s.lock = .{}; - s.models = std.ArrayList(NeonVkObjectDataGpu).init(self.allocator); - s.objectData = std.ArrayList(ObjectSharedData).init(self.allocator); - } -} - -// init framebuffers -fn initFramebuffers(self: *@This()) !void { - self.displayTarget.framebuffers = try self.allocator.alloc(vk.Framebuffer, self.getImageCount()); - - var attachments: [2]vk.ImageView = undefined; - - var fbci = vk.FramebufferCreateInfo{ - .flags = .{}, - .render_pass = self.renderPass, - .attachment_count = 2, - .p_attachments = &attachments, - .width = self.actual_extent.width, - .height = self.actual_extent.height, - .layers = 1, - }; - - for (self.displayTarget.swapImages, 0..) |image, i| { - attachments[0] = image.view; - attachments[1] = self.displayTarget.depthImageView; - self.displayTarget.framebuffers[i] = try vkd.createFramebuffer(self.dev, &fbci, null); - } -} - -inline fn getImageCount(self: @This()) usize { - return self.displayTarget.swapImages.len; -} - -inline fn maxFramesInFlight() u32 { - return 1; -} - -pub fn installListener( - self: *@This(), - ptr: *anyopaque, - func: *const fn (*anyopaque) void, -) !void { - try self.listeners.append(self.allocator, .{ .ptr = ptr, .func = func }); -} - -const RenderThread = @This(); -const std = @import("std"); -const vk = @import("vulkan"); -const core = @import("core"); -const platform = @import("platform"); -const vma = @import("vma"); -const tracy = core.tracy; - -const vk_api = @import("../vk_api.zig"); -const vk_constants = @import("../vk_constants.zig"); -const vk_allocator = @import("../vk_allocator.zig"); -const render_objects = @import("../render_objects.zig"); - -const vk_renderer_types = @import("vk_renderer_types.zig"); -const vk_swapchain_helpers = @import("vk_swapchain_helpers.zig"); -const vk_renderer_camera_gpu = @import("vk_renderer_camera_gpu.zig"); - -const NeonVkAllocator = vk_allocator.NeonVkAllocator; -const NeonVkBuffer = vk_allocator.NeonVkBuffer; -const NeonVkImage = vk_allocator.NeonVkImage; - -const NumFrames = vk_constants.NUM_FRAMES; - -const NeonVkQueue = vk_renderer_types.NeonVkQueue; -const NeonVkSwapImage = vk_renderer_types.NeonVkSwapImage; -const NeonVkFrameData = vk_renderer_types.NeonVkFrameData; -const NeonVkSceneDataGpu = vk_renderer_types.NeonVkSceneDataGpu; -const NeonVkObjectDataGpu = vk_renderer_types.NeonVkObjectDataGpu; -const NeonVkSwapchain = vk_renderer_types.NeonVkSwapchain; - -const vk_renderer_interface = @import("vk_renderer_interface.zig"); -const RendererInterfaceRef = vk_renderer_interface.RendererInterfaceRef; - -const mesh = @import("../mesh.zig"); - -const mesh_pool = @import("vk_mesh_pool.zig"); -const MeshPoolBuffers = mesh_pool.MeshPoolBuffers; - -const graphics = @import("../graphics.zig"); -const NeonVkContext = graphics.NeonVkContext; - -const texture_list = @import("vk_texture_list.zig"); -const TextureList = texture_list.TextureList; - -const vkd_utils = @import("vkd_utils.zig"); -const vkinit = @import("../vk_init.zig"); -const animationSystem = @import("../animation/animationSystem.zig"); - -const SkyboxSystem = @import("../skybox.zig"); -// const vk_mesh_pool = @import("vk_mesh_pool.zig"); -// const MeshPool = vk_mesh_pool.MeshPool; - -// todo and documentation -// -// This struct is the root of the feature to have a seperate rendering thread for handling all vulkan IOs -// the way this will work is, instead of having all processing done on the main systems thread. -// the systems thread will send over a set of data required to render each given frame. -// this data is called sharedData. -// -// all plugins into the renderer will follow this arrangement as well. -// this includes the dynamicMeshManager and anything else. -// they will all have a similar setup to this. -// +// API dispatch functions +const vkd = vk_api.vkd; +const vki = vk_api.vki; +const vkb = vk_api.vkb; + +exitSignal: std.atomic.Value(bool) = std.atomic.Value(bool).init(false), +exitConfirmed: std.atomic.Value(bool) = std.atomic.Value(bool).init(false), +// allocators +allocator: std.mem.Allocator, +vkAllocator: *NeonVkAllocator, + +// device information and api handles +dev: vk.Device, +pdev: vk.PhysicalDevice, +pdevProperties: vk.PhysicalDeviceProperties, +caps: vk.SurfaceCapabilitiesKHR, +cmdPool: vk.CommandPool, +minUniformBufferAlignment: usize, + +// current extent of the window (raw values from platform) +extent: vk.Extent2D, + +dynamicMeshManager: *mesh.DynamicMeshManager, + +graphicsQueue: NeonVkQueue, +presentQueue: NeonVkQueue, +frameData: [NumFrames]NeonVkFrameData, + +displayTarget: DisplayTarget, + +// frame data to upload to gpu +framesInFlight: std.atomic.Value(u32), + +sharedData: [NumFrames]SharedData = undefined, + +actual_extent: vk.Extent2D = undefined, // actual_extent is the base extent used for active drawing, while extent is used +// for a specific frame +commandBuffers: [NumFrames]vk.CommandBuffer = undefined, +frameSync: [NumFrames]FrameSyncs = undefined, + +indirectStaging: graphics.NeonVkBuffer = undefined, +indirectGpu: graphics.NeonVkBuffer = undefined, + +isMinimized: std.atomic.Value(bool), + +// acquireNextFrame will prime an already allocated semaphore at the same time it +// returns an index. +// with double buffering we can't garutee which index will be acquired next. +// and we can't risk acquiring a semaphore that is already in flight. +// therefore this extraSemaphore shall act as an empty spot in the semaphore queue +emptyAcquireSemaphore: vk.Semaphore = undefined, + +// main renderpass information +renderPass: vk.RenderPass, +sceneParameterBuffer: NeonVkBuffer, +maxObjectCount: u32, + +plugins: *const std.ArrayListUnmanaged(RendererInterfaceRef), + +meshPool: *MeshPoolBuffers = undefined, + +listeners: std.ArrayListUnmanaged(ProcessEventListener) = .{}, + +const ProcessEventListener = struct { + ptr: *anyopaque, + func: *const fn (*anyopaque) void, +}; + +pub const ObjectSharedData = struct { + //textureSet: vk.DescriptorSet, + // textureId: u32, + indexedMesh: mesh_pool.IndexedMesh, +}; + +pub const SharedData = struct { + lock: std.Thread.Mutex, + cameraData: vk_renderer_camera_gpu.NeonVkCameraDataGpu, + sceneData: NeonVkSceneDataGpu, + pipeline: vk.Pipeline, + pipelineLayout: vk.PipelineLayout, + models: std.ArrayList(NeonVkObjectDataGpu) = .{}, + objectData: std.ArrayList(ObjectSharedData) = .{}, + skinning: std.ArrayList(core.Mat) = .{}, + extent: core.Vector2f, +}; + +const DisplayTarget = struct { + surface: vk.SurfaceKHR, + surfaceFormat: vk.SurfaceFormatKHR, + presentMode: vk.PresentModeKHR, + depthFormat: vk.Format, + + depthImage: NeonVkImage = undefined, + depthImageView: vk.ImageView = undefined, + scissor: vk.Rect2D = undefined, + viewport: vk.Viewport = undefined, + swapchain: vk.SwapchainKHR = .null_handle, + swapImages: []NeonVkSwapImage = undefined, + framebuffers: []vk.Framebuffer = undefined, + + pub fn deinit(self: *@This(), rt: *RenderThread) void { + var z1 = tracy.ZoneN(@src(), "RT - destroy displaytarget"); + defer z1.End(); + + var z2 = tracy.ZoneN(@src(), "RT - destroy swapimages"); + for (self.swapImages) |*swapImage| { + swapImage.deinit(vkd.*, rt.dev); + } + z2.End(); + rt.allocator.free(self.swapImages); + + var z3 = tracy.ZoneN(@src(), "RT - destroy framebuffers"); + for (self.framebuffers) |fb| { + vkd.destroyFramebuffer(rt.dev, fb, null); + } + rt.allocator.free(self.framebuffers); + z3.End(); + + var z4 = tracy.ZoneN(@src(), "RT - destroy swapchain"); + vkd.destroySwapchainKHR(rt.dev, self.swapchain, null); + self.swapchain = .null_handle; + z4.End(); + + var z5 = tracy.ZoneN(@src(), "RT - destroy imageviews"); + vkd.destroyImageView(rt.dev, self.depthImageView, null); + self.depthImage.deinit(rt.vkAllocator); + z5.End(); + } +}; + +// all the high level synchronization required for a frame +// task to be done with this engine +const FrameSyncs = struct { + // semaphore = resource dependency specification + // barrier = command and data flow completion specification + // fence = notification to host side + + acquire: vk.Semaphore, + renderComplete: vk.Semaphore, + cmdFence: vk.Fence, + + pub fn deinit(self: *@This(), dev: vk.Device) void { + var z1 = tracy.ZoneN(@src(), "RT - framesync deinit"); + defer z1.End(); + vkd.destroySemaphore(dev, self.acquire, null); + vkd.destroySemaphore(dev, self.renderComplete, null); + vkd.destroyFence(dev, self.cmdFence, null); + } +}; + +pub fn setup(self: *@This(), gc: *NeonVkContext) !void { + self.actual_extent = try vk_swapchain_helpers.findActualExtent(self.extent, self.caps); + self.meshPool = try MeshPoolBuffers.create(self.allocator, gc, .{}); + + try self.createSyncs(); + try self.initCommandBuffers(); + try self.initOrRecycleSwapchain(); + try self.initFramebuffers(); + try self.initIndirectBuffers(); + try self.initShared(); +} + +pub fn uploadIndirectCommands(self: *@This(), cmd: vk.CommandBuffer, count: u32) void { + vkd_utils.copyStagingSlice(vk.DrawIndexedIndirectCommand, cmd, .{ + .src = &self.indirectStaging, + .dst = &self.indirectGpu, + .size = count, + }); +} + +pub fn initIndirectBuffers(self: *@This()) !void { + self.indirectStaging = try self.vkAllocator.createStagingBuffer(8192 * @sizeOf(vk.DrawIndexedIndirectCommand), "main systems indirect staging buffer"); + self.indirectGpu = try self.vkAllocator.createIndirectCommandBuffer(8192 * @sizeOf(vk.DrawIndexedIndirectCommand), "main systems indirect command buffer"); +} + +fn deinitExtras(self: *@This()) void { + _ = self; +} + +pub fn onExitSignal(self: *@This()) void { + self.exitSignal.store(true, .seq_cst); +} + +fn destroySyncs(self: *@This()) void { + var z1 = tracy.ZoneN(@src(), "RT - destroy syncs"); + defer z1.End(); + + for (&self.frameSync) |*frameSync| { + frameSync.deinit(self.dev); + } + vkd.destroySemaphore(self.dev, self.emptyAcquireSemaphore, null); +} + +fn deinitCommandBuffers(self: *@This()) void { + + // no-op + _ = self; +} + +fn deinitSwapchain(_: *@This()) void {} + +fn deinitShared(self: *@This()) void { + var z1 = tracy.ZoneN(@src(), "RT - deinit shared"); + defer z1.End(); + + for (&self.sharedData) |*s| { + s.models.deinit(); + s.objectData.deinit(); + } +} + +fn processExitSignal(self: *@This()) void { + var z1 = tracy.ZoneN(@src(), "RT - destruction"); + defer z1.End(); + + core.engine_logs("RT - Process Exit Signal"); + + self.vkAllocator.destroyBuffer(&self.indirectGpu); + self.vkAllocator.destroyBuffer(&self.indirectStaging); + + vkd.queueWaitIdle(self.graphicsQueue.handle) catch {}; + + self.deinitShared(); + self.destroySyncs(); + self.deinitCommandBuffers(); + + self.displayTarget.deinit(self); + self.deinitExtras(); + self.listeners.deinit(self.allocator); + self.meshPool.destroy(); + + self.exitConfirmed.store(true, .seq_cst); +} + +pub fn acquireNextFrame(self: *@This()) !u32 { + var z1 = tracy.ZoneNC(@src(), "Waiting for frame", 0x111111); + defer z1.End(); + + const nextFrameIndex = try self.getNextSwapImage(); + + _ = try vkd.waitForFences( + self.dev, + 1, + @as([*]const vk.Fence, @ptrCast(&self.frameSync[nextFrameIndex].cmdFence)), + 1, + vk_constants.FrameTimeout, + ); + try vkd.resetFences(self.dev, 1, @as([*]const vk.Fence, @ptrCast(&self.frameSync[nextFrameIndex].cmdFence))); + + return nextFrameIndex; +} + +pub fn spinProcessExitSignal(self: *@This()) void { + while (self.framesInFlight.load(.acquire) > 0) {} + vkd.deviceWaitIdle(self.dev) catch {}; + self.processExitSignal(); + return; +} + +pub fn updateMeshImages(self: *@This()) !void { + if (graphics.getContext().newMeshImages.count() > 0) { + graphics.getContext().newMeshImages.lock(); + defer graphics.getContext().newMeshImages.unlock(); + while (graphics.getContext().newMeshImages.popFromUnlocked()) |new| { + var imageBufferInfo = new.bufferInfo; + for (0..self.frameData.len) |i| { + var writeDescriptorSet = vkinit.writeDescriptorImage( + .combined_image_sampler, + self.frameData[i].globalDescriptorSet, + &imageBufferInfo, + 2, + ); + writeDescriptorSet.dst_array_element = new.textureId; + vkd.updateDescriptorSets(self.dev, 1, @ptrCast(&writeDescriptorSet), 0, undefined); + } + } + } +} + +// can be called from any thread. +// queues up a render job for the next frame +pub fn dispatchNextFrame(self: *@This(), deltaTime: f64, frameIndex: u32) !void { + var z2 = tracy.ZoneN(@src(), "rendering job request"); + defer z2.End(); + + const L = struct { + r: *RenderThread, + dt: f64, + frameIndex: u32, + + pub fn func(ctx: *@This(), _: *core.JobContext) void { + // check for mesh pool updates + ctx.r.updateMeshImages() catch unreachable; + ctx.r.meshPool.checkUpdates() catch unreachable; + ctx.r.draw(ctx.dt, ctx.frameIndex) catch unreachable; + while (ctx.r.framesInFlight.cmpxchgStrong(1, 0, .seq_cst, .acquire) != null) {} + } + }; + + try core.dispatchJob(L{ + .r = self, + .dt = deltaTime, + .frameIndex = frameIndex, + }); +} + +pub fn getFrameData(self: *@This(), index: u32) *NeonVkFrameData { + return &self.frameData[index]; +} + +pub fn getShared(self: *@This(), index: u32) *SharedData { + return &self.sharedData[index]; +} + +pub fn pad_uniform_buffer_size(self: @This(), originalSize: usize) usize { + const alignment = @as(usize, @intCast(self.pdevProperties.limits.min_uniform_buffer_offset_alignment)); + + var alignedSize: usize = originalSize; + if (alignment > 0) { + alignedSize = (alignedSize + alignment - 1) & ~(alignment - 1); + } + + return alignedSize; +} + +pub fn renderMeshes(self: *@This(), cmd: vk.CommandBuffer, fi: u32) void { + const shared = self.getShared(fi); + + const offset: vk.DeviceSize = 0; + const paddedSceneSize = @as(u32, @intCast(self.pad_uniform_buffer_size(@sizeOf(NeonVkSceneDataGpu)))); + const startOffset: u32 = paddedSceneSize * fi; + + const frameData = self.getFrameData(fi); + const layout = shared.pipelineLayout; + const pipeline = shared.pipeline; + + var buffers = graphics.getMeshPoolBuffers(); + vkd.cmdBindVertexBuffers(cmd, 0, 1, @ptrCast(&buffers.vertex.buffer), @ptrCast(&offset)); + vkd.cmdBindIndexBuffer(cmd, buffers.index.buffer, 0, .uint32); + + // skybox + const skybox = SkyboxSystem.gSkybox; + if (skybox.cubeMapShared[fi] != null and skybox.mesh != null) { + vkd.cmdBindPipeline(cmd, .graphics, skybox.material.pipeline); + vkd.cmdBindDescriptorSets(cmd, .graphics, skybox.material.layout, 0, 1, @ptrCast(&frameData.globalDescriptorSet), 1, @ptrCast(&startOffset)); + vkd.cmdBindDescriptorSets(cmd, .graphics, skybox.material.layout, 1, 1, @ptrCast(&skybox.cubeMapShared[fi]), 0, undefined); + const skyboxMesh = skybox.mesh.?; + vkd.cmdDrawIndexed(cmd, skyboxMesh.index.size, 1, skyboxMesh.index.start, 0, 0); + } + + // all regular meshes + vkd.cmdBindPipeline(cmd, .graphics, pipeline); + vkd.cmdBindDescriptorSets(cmd, .graphics, layout, 0, 1, @ptrCast(&frameData.globalDescriptorSet), 1, @ptrCast(&startOffset)); + vkd.cmdBindDescriptorSets(cmd, .graphics, layout, 1, 1, @ptrCast(&frameData.objectDescriptorSet), 0, undefined); + + const count = shared.objectData.items.len; + vkd.cmdDrawIndexedIndirect(cmd, self.indirectGpu.buffer, 0, @intCast(count), @sizeOf(vk.DrawIndexedIndirectCommand)); +} + +pub fn updateIndirectBuffers(self: *@This(), cmd: vk.CommandBuffer, fi: u32) !void { + const shared = self.getShared(fi); + + const count = shared.objectData.items.len; + if (count == 0) + return; + + const mapped = self.vkAllocator.mapBuffer(vk.DrawIndexedIndirectCommand, self.indirectStaging) catch unreachable; + defer self.vkAllocator.unmapMemory(self.indirectStaging); + + for (shared.objectData.items, 0..) |object, i| { + const meshBuffer = object.indexedMesh; + mapped[i] = .{ + .index_count = meshBuffer.index.size, + .instance_count = 1, + .first_index = meshBuffer.index.start, + .vertex_offset = 0, + .first_instance = @intCast(i), + }; + } + + self.uploadIndirectCommands(cmd, @intCast(count)); +} + +// fi = frameIndex +pub fn draw(self: *@This(), deltaTime: f64, fi: u32) !void { + _ = deltaTime; + var z1 = tracy.ZoneNC(@src(), "draw", 0x00FF1111); + defer z1.End(); + + if (!self.isMinimized.load(.acquire)) { + const syncIndex = self.acquireNextFrame() catch |err| { + switch (err) { + error.OutOfDateKHR => { + if (self.updateExtentIfDirty()) { + try self.resizeToNewExtents(); + } + return; + }, + else => { + return err; + }, + } + }; + try self.preFrameUpdate(fi); + const cmd = try self.startFrameCommands(fi); + + // try self.meshPool.updateRequests(cmd); + var z = tracy.ZoneNC(@src(), "Main RenderPass", 0x00FF1111); + const time = core.getEngineTime(); + + try self.updateIndirectBuffers(cmd, fi); + self.preDrawPlugins(cmd, fi); + try self.beginMainRenderpass(cmd, syncIndex); + + self.renderMeshes(cmd, fi); + self.postDrawPlugins(cmd, fi); + + try self.finishMainRenderpass(cmd, fi); + try self.dynamicMeshManager.updateMeshes(cmd); + + const delta = core.getEngineTime() - time; + + core.rollingAverage(&core.getEngine().renderThreadTime, delta, 60); + + z.End(); + try vkd.endCommandBuffer(cmd); + try self.finishFrame(fi, syncIndex); + } else { + if (self.updateExtentIfDirty()) { + try self.resizeToNewExtents(); + + std.time.sleep(300 * 1000 * 1000); + } + } + // self.dynamicMeshManager.finishUpload() catch unreachable; +} + +fn preDrawPlugins(self: *@This(), cmd: vk.CommandBuffer, fi: u32) void { + for (self.plugins.items) |interface| { + if (interface.vtable.rtPreDraw) |rtPreDraw| { + rtPreDraw(interface.ptr, self, cmd, fi); + } + } +} + +fn postDrawPlugins(self: *@This(), cmd: vk.CommandBuffer, fi: u32) void { + for (self.plugins.items) |interface| { + if (interface.vtable.rtPostDraw) |rtPostDraw| { + rtPostDraw(interface.ptr, self, cmd, fi); + } + } +} + +fn finishMainRenderpass(self: *@This(), cmd: vk.CommandBuffer, fi: u32) !void { + _ = self; + _ = fi; + vkd.cmdEndRenderPass(cmd); +} + +fn preFrameUpdate(self: *@This(), fi: u32) !void { + for (self.listeners.items) |entry| { + entry.func(entry.ptr); + } + + // upload camera data + const shared = self.getShared(fi); + shared.lock.lock(); + defer shared.lock.unlock(); + + shared.extent = .{ + .x = @as(f32, @floatFromInt(platform.getInstance().extent().x)), + .y = @as(f32, @floatFromInt(platform.getInstance().extent().y)), + }; + + { + const data = try self.vkAllocator.vmaAllocator.mapMemory(self.frameData[fi].cameraBuffer.allocation, u8); + shared.cameraData.upload(data); + self.vkAllocator.vmaAllocator.unmapMemory(self.frameData[fi].cameraBuffer.allocation); + } + + // upload scene global data + { + const paddedSceneSize = self.padUniformBufferSize(@sizeOf(NeonVkSceneDataGpu)); + const startOffset = paddedSceneSize * fi; + const data = try self.vkAllocator.vmaAllocator.mapMemory(self.sceneParameterBuffer.allocation, u8); + + var dataSlice: []u8 = undefined; + dataSlice.ptr = data + startOffset; + dataSlice.len = @sizeOf(@TypeOf(shared.sceneData)); + + var inputSlice: []const u8 = undefined; + inputSlice.ptr = @as([*]const u8, @ptrCast(&shared.sceneData)); + inputSlice.len = dataSlice.len; + + @memcpy(dataSlice, inputSlice); + + self.vkAllocator.vmaAllocator.unmapMemory(self.sceneParameterBuffer.allocation); + } + + try self.uploadObjectData(shared, fi); +} + +fn uploadObjectData(self: *@This(), shared: *SharedData, fi: u32) !void { + var z1 = tracy.ZoneN(@src(), "uploading ssbo data"); + defer z1.End(); + { + const allocation = self.frameData[fi].objectBuffer.allocation; + const data = try self.vkAllocator.vmaAllocator.mapMemory(allocation, NeonVkObjectDataGpu); + var ssbo: []NeonVkObjectDataGpu = undefined; + ssbo.ptr = @as([*]NeonVkObjectDataGpu, @ptrCast(data)); + ssbo.len = self.maxObjectCount; + + for (shared.models.items, 0..) |model, i| { + ssbo[i] = model; + } + + self.vkAllocator.vmaAllocator.unmapMemory(allocation); + } + + // animations + { + const finals = try self.vkAllocator.mapBuffer(core.Mat, self.frameData[fi].animationsBuffer); + defer self.vkAllocator.unmapMemory(self.frameData[fi].animationsBuffer); + + const as = animationSystem.gAnimationSys; + as.sharedLocks[fi].lock(); + defer as.sharedLocks[fi].unlock(); + + const sharedFinals = as.getShared(fi); + + for (sharedFinals) |upload| { + for (upload.matrices.items, 0..) |final, i| { + finals[upload.offset + i] = final; + } + } + } +} + +fn padUniformBufferSize(self: @This(), originalSize: usize) usize { + var alignedSize: usize = originalSize; + if (self.minUniformBufferAlignment > 0) { + alignedSize = (alignedSize + self.minUniformBufferAlignment - 1) & ~(self.minUniformBufferAlignment - 1); + } + + return alignedSize; +} + +fn startFrameCommands(self: *@This(), fi: u32) !vk.CommandBuffer { + const cmd = self.commandBuffers[fi]; + + try vkd.resetCommandBuffer(cmd, .{}); + + var cbi = vk.CommandBufferBeginInfo{ + .p_inheritance_info = null, + .flags = .{ .one_time_submit_bit = true }, + }; + + try vkd.beginCommandBuffer(cmd, &cbi); + + return cmd; +} + +fn beginMainRenderpass(self: *@This(), cmd: vk.CommandBuffer, syncIndex: u32) !void { + var z = tracy.ZoneNC(@src(), "Begin RenderPass", 0xFFBBBB); + defer z.End(); + + var clearValues = [2]vk.ClearValue{ + .{ + .color = .{ .float_32 = [4]f32{ 0.005, 0.005, 0.005, 1.0 } }, + }, + .{ + .depth_stencil = .{ + .depth = 1.0, + .stencil = 0.0, + }, + }, + }; + + var rpbi = vk.RenderPassBeginInfo{ + .render_area = .{ + .extent = self.actual_extent, + .offset = .{ .x = 0, .y = 0 }, + }, + .framebuffer = self.displayTarget.framebuffers[syncIndex], + .render_pass = self.renderPass, + .clear_value_count = 2, + .p_clear_values = @as([*]const vk.ClearValue, @ptrCast(&clearValues)), + }; + + vkd.cmdBeginRenderPass(cmd, &rpbi, .@"inline"); + + vkd.cmdSetViewport(cmd, 0, 1, @ptrCast(&self.displayTarget.viewport)); + vkd.cmdSetScissor(cmd, 0, 1, @ptrCast(&self.displayTarget.scissor)); +} + +fn finishFrame(self: *@This(), frameIndex: u32, syncIndex: u32) !void { + var waitStage = vk.PipelineStageFlags{ .color_attachment_output_bit = true }; + + var submit = vk.SubmitInfo{ + .p_wait_dst_stage_mask = @as([*]const vk.PipelineStageFlags, @ptrCast(&waitStage)), + .wait_semaphore_count = 1, + .p_wait_semaphores = @as([*]const vk.Semaphore, @ptrCast(&self.frameSync[syncIndex].acquire)), + .signal_semaphore_count = 1, + .p_signal_semaphores = @as([*]const vk.Semaphore, @ptrCast(&self.frameSync[syncIndex].renderComplete)), + .command_buffer_count = 1, + .p_command_buffers = @as([*]const vk.CommandBuffer, @ptrCast(&self.commandBuffers[frameIndex])), + }; + + try vkd.queueSubmit( + self.graphicsQueue.handle, + 1, + @as([*]const vk.SubmitInfo, @ptrCast(&submit)), + self.frameSync[syncIndex].cmdFence, + ); + + var presentInfo = vk.PresentInfoKHR{ + .p_swapchains = @as([*]const vk.SwapchainKHR, @ptrCast(&self.displayTarget.swapchain)), + .swapchain_count = 1, + .p_wait_semaphores = @as([*]const vk.Semaphore, @ptrCast(&self.frameSync[syncIndex].renderComplete)), + .wait_semaphore_count = 1, + .p_image_indices = @as([*]const u32, @ptrCast(&syncIndex)), + .p_results = null, + }; + + // todo re-implement handling out of date KHR + var outOfDate: bool = false; + _ = vkd.queuePresentKHR(self.graphicsQueue.handle, &presentInfo) catch |err| switch (err) { + error.OutOfDateKHR => { + outOfDate = true; + }, + else => |narrow| return narrow, + }; + + if (outOfDate and self.updateExtentIfDirty()) { + try self.resizeToNewExtents(); + } +} + +fn resizeToNewExtents(self: *@This()) !void { + var z1 = tracy.ZoneN(@src(), "resizing to new extents"); + defer z1.End(); + self.isMinimized.store(false, .seq_cst); + try vkd.deviceWaitIdle(self.dev); + self.displayTarget.deinit(self); + + try self.initOrRecycleSwapchain(); + try self.initFramebuffers(); +} + +pub fn minimized(self: @This()) bool { + return self.isMinimized.load(.acquire); +} + +pub fn checkIfStillMinimized() bool { + var w: c_int = undefined; + var h: c_int = undefined; + platform.glfw3.glfwGetWindowSize(platform.getInstance().window, &w, &h); + + if (w > 0 and h > 0) { + return true; + } + return false; +} + +pub fn updateExtentIfDirty(self: *@This()) bool { + var w: c_int = undefined; + var h: c_int = undefined; + platform.glfw3.glfwGetWindowSize(platform.getInstance().window, &w, &h); + + if (((self.extent.width != @as(u32, @intCast(w)) or self.extent.height != @as(u32, @intCast(h))) and w > 0 and h > 0)) { + self.extent = .{ .width = @as(u32, @intCast(w)), .height = @as(u32, @intCast(h)) }; + platform.getInstance().updateExtent(.{ .x = w, .y = h }); + + return true; + } + + if (w <= 0 or h <= 0) { + self.extent.width = 0; + self.extent.height = 0; + self.isMinimized.store(true, .seq_cst); + } else { + self.isMinimized.store(false, .seq_cst); + } + + return false; +} + +fn getNextSwapImage(self: *@This()) !u32 { + const imageIndex = (try vkd.acquireNextImageKHR( + self.dev, + self.displayTarget.swapchain, + 1000000000, + self.emptyAcquireSemaphore, + .null_handle, + )).image_index; + + // core.assert(imageIndex < 2) catch @panic("swap index > 2??"); + // load the newly primed semaphore for the acquire operation into the next slot + std.mem.swap( + vk.Semaphore, + &self.emptyAcquireSemaphore, + &self.frameSync[imageIndex].acquire, + ); + + return imageIndex; +} + +// -- initSyncs -- +fn createSyncs(self: *@This()) !void { + const semaphoreCreateInfo = vk.SemaphoreCreateInfo{ + .flags = .{}, + }; + + var fci = vk.FenceCreateInfo{ + .flags = .{ .signaled_bit = true }, + }; + + for (0..NumFrames) |i| { + self.frameSync[i].acquire = try vkd.createSemaphore(self.dev, &semaphoreCreateInfo, null); + self.frameSync[i].renderComplete = try vkd.createSemaphore(self.dev, &semaphoreCreateInfo, null); + self.frameSync[i].cmdFence = try vkd.createFence(self.dev, &fci, null); + } + + self.emptyAcquireSemaphore = try vkd.createSemaphore(self.dev, &semaphoreCreateInfo, null); +} + +// -- init command buffers -- +fn initCommandBuffers(self: *@This()) !void { + var cbai = vk.CommandBufferAllocateInfo{ + .command_pool = self.cmdPool, + .level = vk.CommandBufferLevel.primary, + .command_buffer_count = NumFrames, + }; + try vkd.allocateCommandBuffers(self.dev, &cbai, &self.commandBuffers); +} + +// -- Swapchain initialization -- +fn initOrRecycleSwapchain(self: *@This()) !void { + self.caps = try vki.getPhysicalDeviceSurfaceCapabilitiesKHR(self.pdev, self.displayTarget.surface); + + self.displayTarget.presentMode = try vk_swapchain_helpers.findPresentMode(self.allocator, self.pdev, self.displayTarget.surface); + + self.actual_extent = try vk_swapchain_helpers.findActualExtent(self.extent, self.caps); + + if (self.actual_extent.width == 0 or self.actual_extent.height == 0) { + return error.InvalidSurfaceDimensions; + } + + var image_count = @as(u32, @intCast(NumFrames)); + if (self.caps.max_image_count > 0) { + image_count = @min(image_count, self.caps.max_image_count); + } + + const qfi = [_]u32{ self.graphicsQueue.family, self.presentQueue.family }; + + const sharing_mode: vk.SharingMode = if (self.graphicsQueue.family != self.presentQueue.family) + .concurrent + else + .exclusive; + + var scci = vk.SwapchainCreateInfoKHR{ + .flags = .{}, + .surface = self.displayTarget.surface, + .min_image_count = image_count, + .image_format = self.displayTarget.surfaceFormat.format, + .image_color_space = self.displayTarget.surfaceFormat.color_space, + .image_extent = self.actual_extent, + .image_array_layers = 1, + .image_usage = .{ .color_attachment_bit = true, .transfer_dst_bit = true }, + .image_sharing_mode = sharing_mode, + .queue_family_index_count = qfi.len, + .p_queue_family_indices = &qfi, + .pre_transform = self.caps.current_transform, + .composite_alpha = .{ .opaque_bit_khr = true }, + .present_mode = self.displayTarget.presentMode, + .clipped = vk.TRUE, + .old_swapchain = self.displayTarget.swapchain, + }; + + const newSwapchain = try vkd.createSwapchainKHR(self.dev, &scci, null); + errdefer vkd.destroySwapchainKHR(self.dev, newSwapchain, null); + + if (self.displayTarget.swapchain != .null_handle) { + vkd.destroySwapchainKHR(self.dev, self.displayTarget.swapchain, null); + } + + self.displayTarget.swapchain = newSwapchain; + try self.createSwapchainImagesAndViews(); + + self.displayTarget.viewport = vk.Viewport{ + .x = 0, + .y = 0, + .width = @as(f32, @floatFromInt(self.actual_extent.width)), + .height = @as(f32, @floatFromInt(self.actual_extent.height)), + .min_depth = 0.0, + .max_depth = 1.0, + }; + + self.displayTarget.scissor = .{ + .offset = .{ .x = 0, .y = 0 }, + .extent = self.actual_extent, + }; +} + +fn createSwapchainImagesAndViews(self: *@This()) !void { + var count: u32 = 0; + _ = try vkd.getSwapchainImagesKHR(self.dev, self.displayTarget.swapchain, &count, null); + if (count == 0) { + core.engine_errs("No swap chain image found"); + return error.NoSwapchainImagesFound; + } + core.graphics_log("Creating {d} swap images", .{count}); + self.displayTarget.swapImages = try self.allocator.alloc(NeonVkSwapImage, count); + + const images = try self.allocator.alloc(vk.Image, count); + defer self.allocator.free(images); + + _ = try vkd.getSwapchainImagesKHR(self.dev, self.displayTarget.swapchain, &count, images.ptr); + + for (0..NumFrames) |i| { + const image = images[i]; + + var ivci = vk.ImageViewCreateInfo{ + .flags = .{}, + .image = image, + .view_type = .@"2d", + .format = self.displayTarget.surfaceFormat.format, + .components = .{ .r = .r, .g = .g, .b = .b, .a = .a }, + .subresource_range = .{ + .aspect_mask = .{ + .color_bit = true, + }, + .base_mip_level = 0, + .level_count = 1, + .base_array_layer = 0, + .layer_count = 1, + }, + }; + + const imageView = try vkd.createImageView(self.dev, &ivci, null); + + const swapImage = NeonVkSwapImage{ + .image = image, + .view = imageView, + .imageIndex = i, + }; + + self.displayTarget.swapImages[i] = swapImage; + } + + const depthImageExtent = vk.Extent3D{ + .width = self.actual_extent.width, + .height = self.actual_extent.height, + .depth = 1, + }; + + const dimg_ici = vk.ImageCreateInfo{ + .flags = .{}, + .sharing_mode = .exclusive, + .queue_family_index_count = 0, + .p_queue_family_indices = undefined, + .initial_layout = .undefined, + .image_type = .@"2d", + .format = self.displayTarget.depthFormat, + .extent = depthImageExtent, + .mip_levels = 1, + .array_layers = 1, + .samples = .{ + .@"1_bit" = true, + }, + .tiling = .optimal, + .usage = .{ .depth_stencil_attachment_bit = true }, + }; + + const dimg_aci = vma.AllocationCreateInfo{ + .requiredFlags = .{ + .device_local_bit = true, + }, + .usage = .gpuOnly, + }; + + self.displayTarget.depthImage = try self.vkAllocator.createImage(dimg_ici, dimg_aci, @src().fn_name ++ " depth Image - rt"); + + var imageViewCreate = vk.ImageViewCreateInfo{ + .flags = .{}, + .image = self.displayTarget.depthImage.image, + .view_type = .@"2d", + .format = self.displayTarget.depthFormat, + .components = .{ .r = .identity, .g = .identity, .b = .identity, .a = .identity }, + .subresource_range = .{ + .aspect_mask = .{ + .depth_bit = true, + }, + .base_mip_level = 0, + .level_count = 1, + .base_array_layer = 0, + .layer_count = 1, + }, + }; + + self.displayTarget.depthImageView = try vkd.createImageView(self.dev, &imageViewCreate, null); +} + +fn initShared(self: *@This()) !void { + for (&self.sharedData) |*s| { + s.lock = .{}; + s.models = std.ArrayList(NeonVkObjectDataGpu).init(self.allocator); + s.objectData = std.ArrayList(ObjectSharedData).init(self.allocator); + } +} + +// init framebuffers +fn initFramebuffers(self: *@This()) !void { + self.displayTarget.framebuffers = try self.allocator.alloc(vk.Framebuffer, self.getImageCount()); + + var attachments: [2]vk.ImageView = undefined; + + var fbci = vk.FramebufferCreateInfo{ + .flags = .{}, + .render_pass = self.renderPass, + .attachment_count = 2, + .p_attachments = &attachments, + .width = self.actual_extent.width, + .height = self.actual_extent.height, + .layers = 1, + }; + + for (self.displayTarget.swapImages, 0..) |image, i| { + attachments[0] = image.view; + attachments[1] = self.displayTarget.depthImageView; + self.displayTarget.framebuffers[i] = try vkd.createFramebuffer(self.dev, &fbci, null); + } +} + +inline fn getImageCount(self: @This()) usize { + return self.displayTarget.swapImages.len; +} + +inline fn maxFramesInFlight() u32 { + return 1; +} + +pub fn installListener( + self: *@This(), + ptr: *anyopaque, + func: *const fn (*anyopaque) void, +) !void { + try self.listeners.append(self.allocator, .{ .ptr = ptr, .func = func }); +} + +const RenderThread = @This(); +const std = @import("std"); +const vk = @import("vulkan"); +const core = @import("core"); +const platform = @import("platform"); +const vma = @import("vma"); +const tracy = core.tracy; + +const vk_api = @import("../vk_api.zig"); +const vk_constants = @import("../vk_constants.zig"); +const vk_allocator = @import("../vk_allocator.zig"); +const render_objects = @import("../render_objects.zig"); + +const vk_renderer_types = @import("vk_renderer_types.zig"); +const vk_swapchain_helpers = @import("vk_swapchain_helpers.zig"); +const vk_renderer_camera_gpu = @import("vk_renderer_camera_gpu.zig"); + +const NeonVkAllocator = vk_allocator.NeonVkAllocator; +const NeonVkBuffer = vk_allocator.NeonVkBuffer; +const NeonVkImage = vk_allocator.NeonVkImage; + +const NumFrames = vk_constants.NUM_FRAMES; + +const NeonVkQueue = vk_renderer_types.NeonVkQueue; +const NeonVkSwapImage = vk_renderer_types.NeonVkSwapImage; +const NeonVkFrameData = vk_renderer_types.NeonVkFrameData; +const NeonVkSceneDataGpu = vk_renderer_types.NeonVkSceneDataGpu; +const NeonVkObjectDataGpu = vk_renderer_types.NeonVkObjectDataGpu; +const NeonVkSwapchain = vk_renderer_types.NeonVkSwapchain; + +const vk_renderer_interface = @import("vk_renderer_interface.zig"); +const RendererInterfaceRef = vk_renderer_interface.RendererInterfaceRef; + +const mesh = @import("../mesh.zig"); + +const mesh_pool = @import("vk_mesh_pool.zig"); +const MeshPoolBuffers = mesh_pool.MeshPoolBuffers; + +const graphics = @import("../graphics.zig"); +const NeonVkContext = graphics.NeonVkContext; + +const texture_list = @import("vk_texture_list.zig"); +const TextureList = texture_list.TextureList; + +const vkd_utils = @import("vkd_utils.zig"); +const vkinit = @import("../vk_init.zig"); +const animationSystem = @import("../animation/animationSystem.zig"); + +const SkyboxSystem = @import("../skybox.zig"); +// const vk_mesh_pool = @import("vk_mesh_pool.zig"); +// const MeshPool = vk_mesh_pool.MeshPool; + +// todo and documentation +// +// This struct is the root of the feature to have a seperate rendering thread for handling all vulkan IOs +// the way this will work is, instead of having all processing done on the main systems thread. +// the systems thread will send over a set of data required to render each given frame. +// this data is called sharedData. +// +// all plugins into the renderer will follow this arrangement as well. +// this includes the dynamicMeshManager and anything else. +// they will all have a similar setup to this. +// diff --git a/engine/graphics/src/vk_renderer/vk_cubemap.zig b/engine/_archive/graphics/src/vk_renderer/vk_cubemap.zig similarity index 96% rename from engine/graphics/src/vk_renderer/vk_cubemap.zig rename to engine/_archive/graphics/src/vk_renderer/vk_cubemap.zig index 995a9d9..c8e4b82 100644 --- a/engine/graphics/src/vk_renderer/vk_cubemap.zig +++ b/engine/_archive/graphics/src/vk_renderer/vk_cubemap.zig @@ -1,174 +1,174 @@ -pub fn MakeCubeMapList( - comptime left: []const u8, - comptime up: []const u8, - comptime down: []const u8, - comptime front: []const u8, - comptime back: []const u8, -) []const []const u8 { - return &.{ - left, - up, - down, - front, - back, - }; -} - -pub const CubeMapDirs = enum(u8) { - right, - left, - up, - down, - front, - back, -}; - -const vk_utils = @import("../vk_utils.zig"); -const LoadAndStageImage = vk_utils.LoadAndStageImage; - -pub fn stageCubeTexture(list: []const []const u8) !LoadAndStageImage { - try core.assert(list.len == 6); - - const gc = graphics.getContext(); - const allocator = gc.allocator; - - var pngs: [6]core.png.PngContents = undefined; - - for (0..6) |i| { - pngs[i] = try core.png.PngContents.initFromPathSpec(list[i], allocator); - } - defer { - for (&pngs) |*png| { - png.deinit(); - } - } - - const width = pngs[0].size.x; - const height = pngs[0].size.y; - try core.assert(width == height); - core.engine_log("cubemap dimensionss {d}x{d}", .{ width, height }); - - var totalLen: u32 = 0; - for (pngs) |png| { - try core.assertf(width == png.size.x, "inconsistent cubemap dimensions", .{}); - try core.assertf(height == png.size.y, "inconsistent cubemap dimensions", .{}); - totalLen += @intCast(png.pixels.len); - } - - const stagingBuffer = try gc.vkAllocator.createStagingBuffer(totalLen, "cubemap creation staging texture map"); - const pixelBuffer = try gc.vkAllocator.mapBuffer(u8, stagingBuffer); - - var offset: u32 = 0; - - var bufferOffsets: [6]u32 = undefined; - for (pngs, 0..) |png, i| { - const dest = pixelBuffer[offset .. offset + png.pixels.len]; - bufferOffsets[i] = offset; - offset += @intCast(png.pixels.len); - @memcpy(dest, png.pixels); - } - - const imageExtent = vk.Extent3D{ - .width = @as(u32, @intCast(width)), - .height = @as(u32, @intCast(height)), - .depth = 1, - }; - //const mipLevel = std.math.log2(@max(imageExtent.width, imageExtent.height)) + 1; - const mipLevel = 1; - - var imgCreateInfo = vkinit.imageCreateInfo(.r8g8b8a8_srgb, .{ - .sampled_bit = true, - .transfer_dst_bit = true, - }, imageExtent, mipLevel); - imgCreateInfo.array_layers = 6; - imgCreateInfo.flags.cube_compatible_bit = true; - - if (mipLevel > 1) { - imgCreateInfo.usage.transfer_src_bit = true; - } - - const imgAllocInfo = vma.AllocationCreateInfo{ - .requiredFlags = .{}, - .usage = .gpuOnly, - }; - const newImage = try gc.vkAllocator.createImage(imgCreateInfo, imgAllocInfo, "cubemap creation image"); - - gc.vkAllocator.unmapMemory(stagingBuffer); - - return .{ - .stagingBuffer = stagingBuffer, - .image = newImage, - .mipLevel = mipLevel, - .cubeOffsets = bufferOffsets, - }; -} - -pub fn submitTextureCube(uploader: *vk_utils.NeonVkUploader, state: *const LoadAndStageImage) !void { - try core.assert(state.cubeOffsets != null); - - if (state.cubeOffsets) |cubeOffsets| { - try uploader.startUploadContext(); - { - const newImage = state.image; - const mipLevel = state.mipLevel; - const cmd = uploader.commandBuffer; - transitions.into_transferDst(cmd, newImage.image, mipLevel, 0, 6); - for (cubeOffsets, 0..) |offset, face| { - var copyRegion = vk.BufferImageCopy{ - .buffer_offset = offset, - .buffer_row_length = 0, - .buffer_image_height = 0, - .image_offset = std.mem.zeroes(vk.Offset3D), - .image_subresource = .{ - .aspect_mask = .{ .color_bit = true }, - .mip_level = 0, - .base_array_layer = @intCast(face), - .layer_count = 1, - }, - .image_extent = .{ - .width = newImage.pixelWidth, - .height = newImage.pixelHeight, - .depth = 1, - }, - }; - - vkd.cmdCopyBufferToImage( - cmd, - state.stagingBuffer.buffer, - newImage.image, - .transfer_dst_optimal, - 1, - @ptrCast(©Region), - ); - - try vk_utils.generateMipMaps(cmd, newImage, mipLevel, 0); - } - - transitions.transferDst_into_shaderReadOnly(cmd, newImage.image, mipLevel, 0, 6); - } - try uploader.finishUploadContext(); - } -} - -pub fn createDescriptorSet( - dev: vk.Device, -) struct { - layout: vk.DescriptorSetLayout, - descriptorSet: vk.DescriptorSet, -} { - _ = dev; -} - -const core = @import("core"); -const vk_renderer = @import("../vk_renderer.zig"); - -const vma = @import("vma"); -const graphics = @import("../graphics.zig"); -const vk = @import("vulkan"); -const vkinit = @import("../vk_init.zig"); -const vk_constants = @import("../vk_constants.zig"); -const std = @import("std"); -const vkd = vk_api.vkd; -const vk_api = @import("../vk_api.zig"); - -const transitions = @import("../vk_transitions.zig"); +pub fn MakeCubeMapList( + comptime left: []const u8, + comptime up: []const u8, + comptime down: []const u8, + comptime front: []const u8, + comptime back: []const u8, +) []const []const u8 { + return &.{ + left, + up, + down, + front, + back, + }; +} + +pub const CubeMapDirs = enum(u8) { + right, + left, + up, + down, + front, + back, +}; + +const vk_utils = @import("../vk_utils.zig"); +const LoadAndStageImage = vk_utils.LoadAndStageImage; + +pub fn stageCubeTexture(list: []const []const u8) !LoadAndStageImage { + try core.assert(list.len == 6); + + const gc = graphics.getContext(); + const allocator = gc.allocator; + + var pngs: [6]core.png.PngContents = undefined; + + for (0..6) |i| { + pngs[i] = try core.png.PngContents.initFromPathSpec(list[i], allocator); + } + defer { + for (&pngs) |*png| { + png.deinit(); + } + } + + const width = pngs[0].size.x; + const height = pngs[0].size.y; + try core.assert(width == height); + core.engine_log("cubemap dimensionss {d}x{d}", .{ width, height }); + + var totalLen: u32 = 0; + for (pngs) |png| { + try core.assertf(width == png.size.x, "inconsistent cubemap dimensions", .{}); + try core.assertf(height == png.size.y, "inconsistent cubemap dimensions", .{}); + totalLen += @intCast(png.pixels.len); + } + + const stagingBuffer = try gc.vkAllocator.createStagingBuffer(totalLen, "cubemap creation staging texture map"); + const pixelBuffer = try gc.vkAllocator.mapBuffer(u8, stagingBuffer); + + var offset: u32 = 0; + + var bufferOffsets: [6]u32 = undefined; + for (pngs, 0..) |png, i| { + const dest = pixelBuffer[offset .. offset + png.pixels.len]; + bufferOffsets[i] = offset; + offset += @intCast(png.pixels.len); + @memcpy(dest, png.pixels); + } + + const imageExtent = vk.Extent3D{ + .width = @as(u32, @intCast(width)), + .height = @as(u32, @intCast(height)), + .depth = 1, + }; + //const mipLevel = std.math.log2(@max(imageExtent.width, imageExtent.height)) + 1; + const mipLevel = 1; + + var imgCreateInfo = vkinit.imageCreateInfo(.r8g8b8a8_srgb, .{ + .sampled_bit = true, + .transfer_dst_bit = true, + }, imageExtent, mipLevel); + imgCreateInfo.array_layers = 6; + imgCreateInfo.flags.cube_compatible_bit = true; + + if (mipLevel > 1) { + imgCreateInfo.usage.transfer_src_bit = true; + } + + const imgAllocInfo = vma.AllocationCreateInfo{ + .requiredFlags = .{}, + .usage = .gpuOnly, + }; + const newImage = try gc.vkAllocator.createImage(imgCreateInfo, imgAllocInfo, "cubemap creation image"); + + gc.vkAllocator.unmapMemory(stagingBuffer); + + return .{ + .stagingBuffer = stagingBuffer, + .image = newImage, + .mipLevel = mipLevel, + .cubeOffsets = bufferOffsets, + }; +} + +pub fn submitTextureCube(uploader: *vk_utils.NeonVkUploader, state: *const LoadAndStageImage) !void { + try core.assert(state.cubeOffsets != null); + + if (state.cubeOffsets) |cubeOffsets| { + try uploader.startUploadContext(); + { + const newImage = state.image; + const mipLevel = state.mipLevel; + const cmd = uploader.commandBuffer; + transitions.into_transferDst(cmd, newImage.image, mipLevel, 0, 6); + for (cubeOffsets, 0..) |offset, face| { + var copyRegion = vk.BufferImageCopy{ + .buffer_offset = offset, + .buffer_row_length = 0, + .buffer_image_height = 0, + .image_offset = std.mem.zeroes(vk.Offset3D), + .image_subresource = .{ + .aspect_mask = .{ .color_bit = true }, + .mip_level = 0, + .base_array_layer = @intCast(face), + .layer_count = 1, + }, + .image_extent = .{ + .width = newImage.pixelWidth, + .height = newImage.pixelHeight, + .depth = 1, + }, + }; + + vkd.cmdCopyBufferToImage( + cmd, + state.stagingBuffer.buffer, + newImage.image, + .transfer_dst_optimal, + 1, + @ptrCast(©Region), + ); + + try vk_utils.generateMipMaps(cmd, newImage, mipLevel, 0); + } + + transitions.transferDst_into_shaderReadOnly(cmd, newImage.image, mipLevel, 0, 6); + } + try uploader.finishUploadContext(); + } +} + +pub fn createDescriptorSet( + dev: vk.Device, +) struct { + layout: vk.DescriptorSetLayout, + descriptorSet: vk.DescriptorSet, +} { + _ = dev; +} + +const core = @import("core"); +const vk_renderer = @import("../vk_renderer.zig"); + +const vma = @import("vma"); +const graphics = @import("../graphics.zig"); +const vk = @import("vulkan"); +const vkinit = @import("../vk_init.zig"); +const vk_constants = @import("../vk_constants.zig"); +const std = @import("std"); +const vkd = vk_api.vkd; +const vk_api = @import("../vk_api.zig"); + +const transitions = @import("../vk_transitions.zig"); diff --git a/engine/graphics/src/vk_renderer/vk_mesh_pool.zig b/engine/_archive/graphics/src/vk_renderer/vk_mesh_pool.zig similarity index 97% rename from engine/graphics/src/vk_renderer/vk_mesh_pool.zig rename to engine/_archive/graphics/src/vk_renderer/vk_mesh_pool.zig index fb4b9c1..f714195 100644 --- a/engine/graphics/src/vk_renderer/vk_mesh_pool.zig +++ b/engine/_archive/graphics/src/vk_renderer/vk_mesh_pool.zig @@ -1,821 +1,821 @@ -const std = @import("std"); -const vk = @import("vulkan"); -const core = @import("core"); -const zgltf = core.zgltf; - -pub const MeshPoolCreationSettings = struct { - vertexCount: u32 = 4_000_000, - indexCount: u32 = 16_000_000, -}; - -pub const MeshUpdate = union(enum(u8)) { - new: struct { - vertices: []MeshVertex, - indices: []u32, - jointNames: []JointNameEntry, - name: core.Name, - skeletonName: ?core.Name, - }, - free: struct { - vertices: Span, - indices: Span, - name: core.Name, - }, - - pub fn deinit(self: @This(), allocator: std.mem.Allocator) void { - switch (self) { - .new => |new| { - allocator.free(new.vertices); - allocator.free(new.indices); - for (new.jointNames) |entry| { - entry.deinit(); - } - allocator.free(new.jointNames); - }, - .free => {}, - } - } -}; - -const UploadList = struct { - ctx: *MeshPoolBuffers, - uploads: std.ArrayList(Transfer), - destination: NeonVkBuffer, - - pub const Transfer = struct { - staging: NeonVkBuffer, - destination: Span, - }; - - pub fn init(ctx: *MeshPoolBuffers, destination: NeonVkBuffer) @This() { - return .{ - .ctx = ctx, - .uploads = std.ArrayList(Transfer).init(ctx.allocator), - .destination = destination, - }; - } - - pub fn issueCopy(self: *@This(), uploader: *NeonVkUploader, index: u32, elementSize: u32) !void { - try core.assert(uploader.isActive); - - const upload = self.uploads.items[index]; - var copy = vk.BufferCopy{ - .dst_offset = upload.destination.start * elementSize, - .src_offset = 0, - .size = upload.destination.size * elementSize, - }; - - const cmd = uploader.commandBuffer; - - vkd.cmdCopyBuffer( - cmd, - upload.staging.buffer, - self.destination.buffer, - 1, - @as([*]const vk.BufferCopy, @ptrCast(©)), - ); - } - - pub fn deinit(self: *@This()) void { - for (self.uploads.items) |*up| { - up.staging.deinit(self.ctx.vkAllocator); - } - - self.uploads.deinit(); - } -}; - -// should be owned by renderthread -// -// operation per frame -// -// 1. async loading of vertices push model load results into a queue -// 2. these results ar ethen installed into the vertex pool - -var gMeshPoolBuffer: *MeshPoolBuffers = undefined; - -pub fn getMeshPoolAllocator() std.mem.Allocator { - return gMeshPoolBuffer.allocator; -} - -const MeshVertexTransmute = extern struct { data: [@sizeOf(MeshVertex)]u8 }; - -pub const IndexedMesh = struct { - vertex: Span, - index: Span, - name: core.Name, - jointRemap: ?[]u8, // this is NOT a string, they're joint indices.. which happen to be u8s -}; - -pub fn getIndexedMeshByName(_name: core.Name) ?IndexedMesh { - var name = _name; - gMeshPoolBuffer.vertexMapLock.lock(); - defer gMeshPoolBuffer.vertexMapLock.unlock(); - return gMeshPoolBuffer.vertexMap.get(name.handle()); -} - -pub const MeshPoolBuffers = struct { - vertexBuffer: NeonVkBuffer, // gpu sided vertex buffer - indexBuffer: NeonVkBuffer, // gpu sided vertex buffer - - allocator: std.mem.Allocator, - vkAllocator: *NeonVkAllocator, - - gc: *NeonVkContext, - - uploader: NeonVkUploader, - updateRequests: Requests, - - indexSpans: MergedSpans, - vertexSpans: MergedSpans, - - vertexMapLock: std.Thread.Mutex, - vertexMap: std.AutoHashMapUnmanaged(u32, IndexedMesh), - jointMaps: std.AutoHashMapUnmanaged(u32, JointMapEntry), - - const JointMapEntry = std.AutoHashMapUnmanaged(u32, u32); - - const Requests = core.RingQueue(MeshUpdate); - - pub fn create( - allocator: std.mem.Allocator, - gc: *NeonVkContext, - opt: MeshPoolCreationSettings, - ) !*@This() { - const self = try allocator.create(@This()); - self.allocator = allocator; - self.updateRequests = try Requests.init(allocator, 4096); - - self.vertexMap = .{}; - self.vertexMapLock = .{}; - self.jointMaps = .{}; - - self.indexSpans = try MergedSpans.init(allocator, opt.indexCount); - self.vertexSpans = try MergedSpans.init(allocator, opt.vertexCount); - - self.vertexBuffer = try gc.vkAllocator.createGpuBuffer(opt.vertexCount * @sizeOf(MeshVertex), .{ - .vertex_buffer_bit = true, - }, "Mesh Pool gpu vertex buffer"); - - self.indexBuffer = try gc.vkAllocator.createGpuBuffer(opt.indexCount * @sizeOf(u32), .{ - .index_buffer_bit = true, - }, "Mesh Pool gpu vertex buffer"); - - self.gc = gc; - self.vkAllocator = gc.vkAllocator; - self.uploader = try NeonVkUploader.init(gc, "Mesh Pool uploader"); - - gMeshPoolBuffer = self; - - return self; - } - - pub fn checkUpdates(self: *@This()) !void { - if (self.updateRequests.count() <= 0) { - return; - } - - self.updateRequests.lock(); - defer self.updateRequests.unlock(); - - var vertexUploadList = UploadList.init(self, self.vertexBuffer); - defer vertexUploadList.deinit(); - var indexUploadList = UploadList.init(self, self.indexBuffer); - defer indexUploadList.deinit(); - - while (self.updateRequests.popFromUnlocked()) |update| { - switch (update) { - .new => |new| { - const indexSpan = try self.indexSpans.allocate(@intCast(new.indices.len)); - const vertexSpan = try self.vertexSpans.allocate(@intCast(new.vertices.len)); - - const stagingVertex = try self.vkAllocator.createStagingBuffer( - @intCast(new.vertices.len * @sizeOf(MeshVertex)), - "staging vertex buffer", - ); - { - const stagingVertexMapped = try self.vkAllocator.mapBuffer(MeshVertex, stagingVertex); - defer self.vkAllocator.unmapMemory(stagingVertex); - std.mem.copyForwards(MeshVertex, stagingVertexMapped, new.vertices); - } - - const stagingIndex = try self.vkAllocator.createStagingBuffer( - @intCast(new.indices.len * @sizeOf(u32)), - "staging index buffer", - ); - { - const stagingMapped = try self.vkAllocator.mapBuffer(u32, stagingIndex); - defer self.vkAllocator.unmapMemory(stagingIndex); - for (new.indices, 0..) |index, i| { - stagingMapped[i] = index + vertexSpan.start; - } - } - try vertexUploadList.uploads.append(.{ .staging = stagingVertex, .destination = vertexSpan }); - try indexUploadList.uploads.append(.{ .staging = stagingIndex, .destination = indexSpan }); - - var jointMap: JointMapEntry = .{}; - - for (new.jointNames) |entry| { - var entryName = core.MakeName(entry.name); - // core.engine_log("gtlf bone found {s} -> {d}", .{ entry.name, entry.index }); - try jointMap.put(self.allocator, entryName.handle(), entry.index); - } - - var newName = new.name; - try gMeshPoolBuffer.jointMaps.put(self.allocator, newName.handle(), jointMap); - - var jointRemap: ?[]u8 = null; - - if (new.skeletonName) |skName| { - if (animationSystem.getSkeletonByName(skName)) |sk| { - // build the joint remap - // this is a map from ozz's index to gltf's index - var iter = sk.jointMapping.iterator(); - jointRemap = try graphics.getContext().allocator.alloc(u8, sk.jointMapping.count()); - - while (iter.next()) |i| { - const jointName = i.key_ptr.*; - const ozzIndex = i.value_ptr.*; - var jn = core.MakeName(jointName); - var gltfIndex = jointMap.get(jn.handle()); - if (gltfIndex == null) { - gltfIndex = 0; - // core.engine_log("ERROR REMAPPING BONE setting to zero {s}", .{jointName}); - } - - // core.engine_log("remapping bone from {s} ozz {d} -> {d} gltf", .{ jointName, ozzIndex, gltfIndex.? }); - - jointRemap.?[ozzIndex] = @intCast(gltfIndex.?); - } - } - } - - gMeshPoolBuffer.vertexMapLock.lock(); - try gMeshPoolBuffer.vertexMap.put(self.allocator, newName.handle(), .{ .index = indexSpan, .vertex = vertexSpan, .name = newName, .jointRemap = jointRemap }); - - gMeshPoolBuffer.vertexMapLock.unlock(); - }, - .free => |free| { - self.vertexSpans.removeSpan(free.vertices); - self.indexSpans.removeSpan(free.indices); - }, - } - - update.deinit(self.allocator); - } - - try self.uploader.startUploadContext(); - // iterate over both upload lists and isssue uploads. - - for (indexUploadList.uploads.items, 0..) |_, i| { - try indexUploadList.issueCopy(&self.uploader, @intCast(i), @sizeOf(u32)); - try vertexUploadList.issueCopy(&self.uploader, @intCast(i), @sizeOf(MeshVertex)); - } - // Insert Barrier for indexBuffer - var indexMemoryBarrier = vk.BufferMemoryBarrier{ - .buffer = self.indexBuffer.buffer, - .src_access_mask = .{ .transfer_read_bit = true }, - .dst_access_mask = .{ .index_read_bit = true }, - .src_queue_family_index = 0, - .dst_queue_family_index = 0, - .offset = 0, - .size = vk.WHOLE_SIZE, - }; - vkd.cmdPipelineBarrier( - self.uploader.commandBuffer, // - .{ .transfer_bit = true }, // - .{ .vertex_input_bit = true }, // - .{}, // - 0, - undefined, - 1, - @ptrCast(&indexMemoryBarrier), - 0, - undefined, - ); - - // Insert Barrier for vertexBuffer - var vertexMemoryBarrier = vk.BufferMemoryBarrier{ - .buffer = self.vertexBuffer.buffer, - .src_access_mask = .{ .transfer_read_bit = true }, - .dst_access_mask = .{ - .vertex_attribute_read_bit = true, - }, - .src_queue_family_index = 0, - .dst_queue_family_index = 0, - .offset = 0, - .size = vk.WHOLE_SIZE, - }; - - vkd.cmdPipelineBarrier( - self.uploader.commandBuffer, - .{ .transfer_bit = true }, - .{ .vertex_input_bit = true }, - .{}, - 0, - undefined, - 1, - @ptrCast(&vertexMemoryBarrier), - 0, - undefined, - ); - - try self.uploader.finishUploadContext(); - } - - pub fn destroy(self: *@This()) void { - { - self.updateRequests.lock(); - defer self.updateRequests.unlock(); - while (self.updateRequests.popFromUnlocked()) |x| { - x.deinit(self.allocator); - } - } - - { - var iter = self.vertexMap.valueIterator(); - while (iter.next()) |p| { - if (p.jointRemap) |jr| { - graphics.getContext().allocator.free(jr); - } - } - } - self.vertexMap.deinit(self.allocator); - self.indexSpans.deinit(); - self.vertexSpans.deinit(); - { - var iter = self.jointMaps.valueIterator(); - while (iter.next()) |p| { - p.deinit(self.allocator); - } - } - - self.jointMaps.deinit(self.allocator); - - self.vertexBuffer.deinit(self.gc.vkAllocator); - - self.indexBuffer.deinit(self.gc.vkAllocator); - self.uploader.deinit(); - - self.updateRequests.deinit(); - self.allocator.destroy(self); - } -}; - -pub const PoolMesh = struct { - vertexSpan: Span, - indexSpan: Span, -}; - -pub fn getMeshPoolBuffers() struct { index: NeonVkBuffer, vertex: NeonVkBuffer } { - return .{ - .index = gMeshPoolBuffer.indexBuffer, - .vertex = gMeshPoolBuffer.vertexBuffer, - }; -} - -pub const MeshSourceType = enum { obj, gltf }; - -pub const LoadMeshSettings = struct { - path: []const u8, - sourceType: ?MeshSourceType = null, - skeletonName: ?core.Name, -}; - -pub fn loadIndexedMeshForPooling(meshName: core.Name, opt: LoadMeshSettings) !void { - var sourceType = MeshSourceType.gltf; - if (opt.sourceType) |st| { - sourceType = st; - } - - // check if we have a cooked version of that file, if so just load that instead. - - // otherwise, load the file - switch (sourceType) { - .obj => { - try loadIndexedMeshForPoolingObj(meshName, opt.path); - }, - .gltf => { - try loadIndexedMeshForPoolingGltf(meshName, opt.skeletonName, opt.path); - }, - } -} - -pub fn loadIndexedMeshForPoolingGltf(meshName: core.Name, skeletonName: ?core.Name, path: []const u8) !void { - const file = try core.fs().loadFile(path); - defer core.fs().unmap(file); - - const allocator = gMeshPoolBuffer.allocator; - - var parser = zgltf.init(allocator); - defer parser.deinit(); - - const ext = core.getFileExtension(path); - if (std.mem.eql(u8, ".gltf", ext)) { - try parser.parse(@alignCast(file.bytes[0 .. file.bytes.len - 1])); - } else { - try parser.parse(@alignCast(file.bytes)); - } - - // std.debug.print("\n", .{}); - // parser.debugPrint(); - - if (parser.data.meshes.items.len > 1) { - return error.OnlyOneMeshPerGltfImplemented; - } - - if (parser.data.skins.items.len > 1) { - return error.TooManySkins; - } - - var binaryFile: ?core.packer.PackerBytesMapping = null; - var binaryBytes: []const u8 = undefined; - - if (std.mem.eql(u8, ext, ".glb")) { - binaryBytes = parser.glb_binary.?; - } else { - const binaryPath = try std.fmt.allocPrint(allocator, "{s}bin", .{path[0 .. path.len - 4]}); - defer allocator.free(binaryPath); - core.engine_log("{s}", .{binaryPath}); - binaryFile = try core.fs().loadFile(binaryPath); - binaryBytes = binaryFile.?.bytes; - } - - defer if (binaryFile) |f| core.fs().unmap(f); - - const m = parser.data.meshes.items[0]; - core.engine_log("mesh name {s} number of primitives = {d}", .{ m.name, m.primitives.items.len }); - - var positions = std.ArrayList(f32).init(allocator); - defer positions.deinit(); - - var texcoords = std.ArrayList(f32).init(allocator); - defer texcoords.deinit(); - - var normals = std.ArrayList(f32).init(allocator); - defer normals.deinit(); - - var joints = std.ArrayList(u16).init(allocator); - defer joints.deinit(); - // add a different joint format one, todo- i need to fix up zgltf - - var useJoints8: bool = false; - var joints8 = std.ArrayList(u8).init(allocator); - defer joints8.deinit(); - - var weights = std.ArrayList(f32).init(allocator); - defer weights.deinit(); - - var weightCount: usize = 4; - - if (m.primitives.items.len > 1) { - @panic("sorry, havent implemented support for multiple primitives yet, would require more work on the way i handle materials"); - } - - var indexList = std.ArrayList(u32).init(allocator); - for (m.primitives.items) |primitive| { - if (primitive.indices) |indices| { - const accessor = parser.data.accessors.items[indices]; - // core.engine_log("index accessor info: {any}", .{accessor}); - - if (accessor.component_type == .unsigned_short) { - var temp = std.ArrayList(u16).init(allocator); - defer temp.deinit(); - parser.getDataFromBufferView(u16, &temp, accessor, @alignCast(binaryBytes)); - for (temp.items) |t| { - try indexList.append(@intCast(t)); - } - } else if (accessor.component_type == .unsigned_integer) { - parser.getDataFromBufferView(u32, &indexList, accessor, @alignCast(binaryBytes)); - } - } - - for (primitive.attributes.items) |attribute| { - // core.engine_log("attribute: {any}", .{attribute}); - - switch (attribute) { - .position => |x| { - const accessor = parser.data.accessors.items[x]; - // core.engine_log("accessor info: {any}", .{accessor}); - - parser.getDataFromBufferView(f32, &positions, accessor, @alignCast(binaryBytes)); - // core.engine_log("positions loaded: {d}", .{positions.items.len}); - }, - .normal => |x| { - const accessor = parser.data.accessors.items[x]; - // core.engine_log("accessor info: {any}", .{accessor}); - - parser.getDataFromBufferView(f32, &normals, accessor, @alignCast(binaryBytes)); - // core.engine_log("normals loaded: {d}", .{normals.items.len}); - }, - .texcoord => |x| { - const accessor = parser.data.accessors.items[x]; - // core.engine_log("accessor info: {any}", .{accessor}); - - parser.getDataFromBufferView(f32, &texcoords, accessor, @alignCast(binaryBytes)); - // core.engine_log("texcoords loaded: {d}", .{texcoords.items.len}); - }, - .joints => |x| { - const accessor = parser.data.accessors.items[x]; - // core.engine_log("accessor info: {any} acecssor index {d}", .{ accessor, x }); - - if (accessor.component_type == .unsigned_byte) { - useJoints8 = true; - parser.getDataFromBufferView(u8, &joints8, accessor, @alignCast(binaryBytes)); - // core.engine_log("joints8 loaded: {d} - {d} {d} {d} {d}", .{ joints8.items.len, joints8.items[0], joints8.items[1], joints8.items[2], joints8.items[3] }); - } else { - parser.getDataFromBufferView(u16, &joints, accessor, @alignCast(binaryBytes)); - // core.engine_log("joints loaded: {d} - {d} {d} {d} {d}", .{ joints.items.len, joints.items[0], joints.items[1], joints.items[2], joints.items[3] }); - } - }, - .weights => |x| { - const accessor = parser.data.accessors.items[x]; - // core.engine_log("accessor info: {any}", .{accessor}); - - parser.getDataFromBufferView(f32, &weights, accessor, @alignCast(binaryBytes)); - - if (accessor.type == .vec3) { - weightCount = 3; - } - - // core.engine_log("weights loaded: {d} - {d} {d} {d} {d}", .{ weights.items.len, weights.items[0], weights.items[1], weights.items[2], weights.items[3] }); - }, - .tangent => |x| { - const accessor = parser.data.accessors.items[x]; - core.engine_log("accessor info: {any} NOT PARSED", .{accessor}); - }, - .color => |x| { - const accessor = parser.data.accessors.items[x]; - core.engine_log("accessor info: {any} NOT PARSED", .{accessor}); - }, - } - } - } - - if (parser.data.skins.items.len > 1) { - @panic("too many skins, not supported"); - } - - var jointNameList: std.ArrayList(JointNameEntry) = std.ArrayList(JointNameEntry).init(allocator); - - if (weights.items.len > 0) { - core.engine_log("skin found, building joint map", .{}); - if (parser.data.skins.items[0].skeleton) |skeletonIndex| { - for (parser.data.nodes.items[skeletonIndex..], 0..) |node, i| { - // core.engine_log("gltf: {s} -> {d} (skeleton index)", .{ node.name, i }); - const gcAllocator = graphics.getContext().allocator; - try jointNameList.append(.{ .index = @intCast(i), .name = try gcAllocator.dupe(u8, node.name) }); - } - } else { - if (parser.data.skins.items[0].joints.items.len > 0) { - for (parser.data.skins.items[0].joints.items, 0..) |i, j| { - const node = parser.data.nodes.items[i]; - // core.engine_log("gltf: {s} -> {d} (joints map)", .{ node.name, j }); - const gcAllocator = graphics.getContext().allocator; - try jointNameList.append(.{ .index = @intCast(j), .name = try gcAllocator.dupe(u8, node.name) }); - } - } else { - for (parser.data.nodes.items, 0..) |node, i| { - // core.engine_log("gltf: {s} -> {d} (fallback)", .{ node.name, i }); - const gcAllocator = graphics.getContext().allocator; - try jointNameList.append(.{ .index = @intCast(i), .name = try gcAllocator.dupe(u8, node.name) }); - } - } - } - } - - var vertexList = std.ArrayList(MeshVertex).init(allocator); - - var i: usize = 0; - const vertexCount = positions.items.len / 3; - while (i < vertexCount) : (i += 1) { - const normalIndex = i * 3; - const positionIndex = i * 3; - const uvIndex = i * 2; - - const uv: core.Vector2f = if (uvIndex < texcoords.items.len) .{ - .x = texcoords.items[uvIndex], - .y = texcoords.items[uvIndex + 1], - } else core.Vector2f{}; - - const normal = if (normalIndex < normals.items.len) core.Vectorf{ - .x = normals.items[i], - .y = normals.items[i + 1], - .z = normals.items[i + 2], - } else core.Vectorf{}; - - try vertexList.append(.{ - .position = .{ - .x = positions.items[positionIndex], - .y = positions.items[positionIndex + 1], - .z = positions.items[positionIndex + 2], - }, - .normal = normal, - .color = .{}, - .uv = uv, - }); - - const jointsIndex = weightCount * i; - if (weightCount == 4) { - if (useJoints8) { - if (jointsIndex < joints8.items.len) { - vertexList.items[vertexList.items.len - 1].bones = .{ - @intCast(joints8.items[jointsIndex + 0]), - @intCast(joints8.items[jointsIndex + 1]), - @intCast(joints8.items[jointsIndex + 2]), - @intCast(joints8.items[jointsIndex + 3]), - }; - vertexList.items[vertexList.items.len - 1].weights = .{ - @intFromFloat(weights.items[jointsIndex + 0] * 255), - @intFromFloat(weights.items[jointsIndex + 1] * 255), - @intFromFloat(weights.items[jointsIndex + 2] * 255), - @intFromFloat(weights.items[jointsIndex + 3] * 255), - }; - } - } else { - if (jointsIndex < joints.items.len) { - vertexList.items[vertexList.items.len - 1].bones = .{ - @intCast(joints.items[jointsIndex + 0]), - @intCast(joints.items[jointsIndex + 1]), - @intCast(joints.items[jointsIndex + 2]), - @intCast(joints.items[jointsIndex + 3]), - }; - vertexList.items[vertexList.items.len - 1].weights = .{ - @intFromFloat(weights.items[jointsIndex + 0] * 255), - @intFromFloat(weights.items[jointsIndex + 1] * 255), - @intFromFloat(weights.items[jointsIndex + 2] * 255), - @intFromFloat(weights.items[jointsIndex + 3] * 255), - }; - } - } - } else { - return error.NotImplementedYet; - } - } - - if (indexList.items.len == 0) { - for (0..vertexList.items.len) |x| { - try indexList.append(@intCast(x)); - } - } - - const rv: MeshUpdate = .{ - .new = .{ - .vertices = try vertexList.toOwnedSlice(), - .indices = try indexList.toOwnedSlice(), - .jointNames = try jointNameList.toOwnedSlice(), - .skeletonName = skeletonName, - .name = meshName, - }, - }; - - core.graphics_log("[{s}] gltf loaded vertex count vertices={d} indices={d}", .{ path, rv.new.vertices.len, rv.new.indices.len }); - - try gMeshPoolBuffer.updateRequests.pushLocked(rv); - - // return error.NotImplementedYet; - - // var vertexList = std.ArrayList(MeshVertex).init(allocator); - // var indexList = std.ArrayList(u32).init(allocator); - - // const rv: MeshUpdate = .{ - // .new = .{ - // .vertices = try vertexList.toOwnedSlice(), - // .indices = try indexList.toOwnedSlice(), - // .name = meshName, - // }, - // }; - - // core.graphics_log("[{s}] vertex count vertices={d} indices={d}", .{ path, rv.new.vertices.len, rv.new.indices.len }); - - // try gMeshPoolBuffer.updateRequests.pushLocked(rv); -} - -pub fn pushMeshUpdateRequest(update: MeshUpdate) !void { - try gMeshPoolBuffer.updateRequests.pushLocked(update); -} - -pub fn loadIndexedMeshForPoolingObj(meshName: core.Name, path: []const u8) !void { - const file = try core.fs().loadFile(path); - defer core.fs().unmap(file); - - const allocator = gMeshPoolBuffer.allocator; - - var Objs = try objLoader.loadObjBytes(file.bytes, allocator); - defer Objs.deinit(); - - var vertexMap = std.AutoHashMap(MeshVertexTransmute, u32).init(allocator); - defer vertexMap.deinit(); - var vertexList = std.ArrayList(MeshVertex).init(allocator); - var indexList = std.ArrayList(u32).init(allocator); - - const m: *objLoader.ObjMesh = &Objs.meshes.items[0]; - - // only thing i care about right now is normal and position - for (m.v_faces.items) |f| { - const face: objLoader.ObjFace = f; - - if (face.count == 3) { - for (0..face.count) |i| { - const p = m.v_positions.items[face.vertex[i] - 1]; - const n = m.v_normals.items[face.normal[i] - 1]; - const u = m.v_uvs.items[face.texture[i] - 1]; - const meshVertex: MeshVertex = .{ - .position = .{ .x = p.x, .y = p.y, .z = p.z }, - .normal = .{ .x = n.x, .y = n.y, .z = n.z }, - .color = .{ .r = n.x, .g = n.y, .b = n.z, .a = 1.0 }, - .uv = .{ .x = u.x, .y = 1 - u.y }, - }; - - var index: u32 = @intCast(vertexList.items.len); - - const transmute: MeshVertexTransmute = @bitCast(meshVertex); - if (vertexMap.get(transmute)) |cachedIndex| { - index = cachedIndex; - } else { - try vertexMap.put(transmute, index); - try vertexList.append(meshVertex); - } - try indexList.append(index); - } - } - - if (face.count == 4) { - const il: []const usize = &.{ 0, 1, 2, 2, 3, 0 }; - for (il) |i| { - const p = m.v_positions.items[face.vertex[i] - 1]; - const n = m.v_normals.items[face.normal[i] - 1]; - const u = m.v_uvs.items[face.texture[i] - 1]; - const meshVertex: MeshVertex = .{ - .position = .{ .x = p.x, .y = p.y, .z = p.z }, - .normal = .{ .x = n.x, .y = n.y, .z = n.z }, - .color = .{ .r = n.x, .g = n.y, .b = n.z, .a = 1.0 }, - .uv = .{ .x = u.x, .y = 1 - u.y }, - }; - - var index: u32 = @intCast(vertexList.items.len); - - const transmute: MeshVertexTransmute = @bitCast(meshVertex); - if (vertexMap.get(transmute)) |cachedIndex| { - index = cachedIndex; - } else { - try vertexMap.put(transmute, index); - try vertexList.append(meshVertex); - } - try indexList.append(index); - } - } - } - - var jointNames = std.ArrayList(JointNameEntry).init(allocator); - - const rv: MeshUpdate = .{ - .new = .{ - .vertices = try vertexList.toOwnedSlice(), - .indices = try indexList.toOwnedSlice(), - .jointNames = try jointNames.toOwnedSlice(), - .skeletonName = null, - .name = meshName, - }, - }; - - core.graphics_log("[{s}] vertex count vertices={d} indices={d}", .{ path, rv.new.vertices.len, rv.new.indices.len }); - - try gMeshPoolBuffer.updateRequests.pushLocked(rv); -} - -pub const JointNameEntry = struct { - name: []u8 = undefined, - index: u32 = 0, - - pub fn deinit(self: @This()) void { - const allocator = graphics.getContext().allocator; - allocator.free(self.name); - } -}; - -const objLoader = @import("objLoader"); - -const vk_allocator = @import("../vk_allocator.zig"); -const NeonVkAllocator = vk_allocator.NeonVkAllocator; -const NeonVkBuffer = vk_allocator.NeonVkBuffer; - -const mesh = @import("../mesh.zig"); -const MeshVertex = mesh.MeshVertex; - -const Span = core.Span; -const MergedSpans = core.MergedSpans; - -const vk_utils = @import("../vk_utils.zig"); -const NeonVkUploader = vk_utils.NeonVkUploader; - -const vk_renderer = @import("../vk_renderer.zig"); -const NeonVkContext = vk_renderer.NeonVkContext; - -const animationSystem = @import("../animation/animationSystem.zig"); -const vk_constants = @import("../vk_constants.zig"); -const vk_api = @import("../vk_api.zig"); -const vkd = vk_api.vkd; -const vki = vk_api.vki; -const vkb = vk_api.vkb; -const graphics = @import("../graphics.zig"); +const std = @import("std"); +const vk = @import("vulkan"); +const core = @import("core"); +const zgltf = core.zgltf; + +pub const MeshPoolCreationSettings = struct { + vertexCount: u32 = 4_000_000, + indexCount: u32 = 16_000_000, +}; + +pub const MeshUpdate = union(enum(u8)) { + new: struct { + vertices: []MeshVertex, + indices: []u32, + jointNames: []JointNameEntry, + name: core.Name, + skeletonName: ?core.Name, + }, + free: struct { + vertices: Span, + indices: Span, + name: core.Name, + }, + + pub fn deinit(self: @This(), allocator: std.mem.Allocator) void { + switch (self) { + .new => |new| { + allocator.free(new.vertices); + allocator.free(new.indices); + for (new.jointNames) |entry| { + entry.deinit(); + } + allocator.free(new.jointNames); + }, + .free => {}, + } + } +}; + +const UploadList = struct { + ctx: *MeshPoolBuffers, + uploads: std.ArrayList(Transfer), + destination: NeonVkBuffer, + + pub const Transfer = struct { + staging: NeonVkBuffer, + destination: Span, + }; + + pub fn init(ctx: *MeshPoolBuffers, destination: NeonVkBuffer) @This() { + return .{ + .ctx = ctx, + .uploads = std.ArrayList(Transfer).init(ctx.allocator), + .destination = destination, + }; + } + + pub fn issueCopy(self: *@This(), uploader: *NeonVkUploader, index: u32, elementSize: u32) !void { + try core.assert(uploader.isActive); + + const upload = self.uploads.items[index]; + var copy = vk.BufferCopy{ + .dst_offset = upload.destination.start * elementSize, + .src_offset = 0, + .size = upload.destination.size * elementSize, + }; + + const cmd = uploader.commandBuffer; + + vkd.cmdCopyBuffer( + cmd, + upload.staging.buffer, + self.destination.buffer, + 1, + @as([*]const vk.BufferCopy, @ptrCast(©)), + ); + } + + pub fn deinit(self: *@This()) void { + for (self.uploads.items) |*up| { + up.staging.deinit(self.ctx.vkAllocator); + } + + self.uploads.deinit(); + } +}; + +// should be owned by renderthread +// +// operation per frame +// +// 1. async loading of vertices push model load results into a queue +// 2. these results ar ethen installed into the vertex pool + +var gMeshPoolBuffer: *MeshPoolBuffers = undefined; + +pub fn getMeshPoolAllocator() std.mem.Allocator { + return gMeshPoolBuffer.allocator; +} + +const MeshVertexTransmute = extern struct { data: [@sizeOf(MeshVertex)]u8 }; + +pub const IndexedMesh = struct { + vertex: Span, + index: Span, + name: core.Name, + jointRemap: ?[]u8, // this is NOT a string, they're joint indices.. which happen to be u8s +}; + +pub fn getIndexedMeshByName(_name: core.Name) ?IndexedMesh { + var name = _name; + gMeshPoolBuffer.vertexMapLock.lock(); + defer gMeshPoolBuffer.vertexMapLock.unlock(); + return gMeshPoolBuffer.vertexMap.get(name.handle()); +} + +pub const MeshPoolBuffers = struct { + vertexBuffer: NeonVkBuffer, // gpu sided vertex buffer + indexBuffer: NeonVkBuffer, // gpu sided vertex buffer + + allocator: std.mem.Allocator, + vkAllocator: *NeonVkAllocator, + + gc: *NeonVkContext, + + uploader: NeonVkUploader, + updateRequests: Requests, + + indexSpans: MergedSpans, + vertexSpans: MergedSpans, + + vertexMapLock: std.Thread.Mutex, + vertexMap: std.AutoHashMapUnmanaged(u32, IndexedMesh), + jointMaps: std.AutoHashMapUnmanaged(u32, JointMapEntry), + + const JointMapEntry = std.AutoHashMapUnmanaged(u32, u32); + + const Requests = core.RingQueue(MeshUpdate); + + pub fn create( + allocator: std.mem.Allocator, + gc: *NeonVkContext, + opt: MeshPoolCreationSettings, + ) !*@This() { + const self = try allocator.create(@This()); + self.allocator = allocator; + self.updateRequests = try Requests.init(allocator, 4096); + + self.vertexMap = .{}; + self.vertexMapLock = .{}; + self.jointMaps = .{}; + + self.indexSpans = try MergedSpans.init(allocator, opt.indexCount); + self.vertexSpans = try MergedSpans.init(allocator, opt.vertexCount); + + self.vertexBuffer = try gc.vkAllocator.createGpuBuffer(opt.vertexCount * @sizeOf(MeshVertex), .{ + .vertex_buffer_bit = true, + }, "Mesh Pool gpu vertex buffer"); + + self.indexBuffer = try gc.vkAllocator.createGpuBuffer(opt.indexCount * @sizeOf(u32), .{ + .index_buffer_bit = true, + }, "Mesh Pool gpu vertex buffer"); + + self.gc = gc; + self.vkAllocator = gc.vkAllocator; + self.uploader = try NeonVkUploader.init(gc, "Mesh Pool uploader"); + + gMeshPoolBuffer = self; + + return self; + } + + pub fn checkUpdates(self: *@This()) !void { + if (self.updateRequests.count() <= 0) { + return; + } + + self.updateRequests.lock(); + defer self.updateRequests.unlock(); + + var vertexUploadList = UploadList.init(self, self.vertexBuffer); + defer vertexUploadList.deinit(); + var indexUploadList = UploadList.init(self, self.indexBuffer); + defer indexUploadList.deinit(); + + while (self.updateRequests.popFromUnlocked()) |update| { + switch (update) { + .new => |new| { + const indexSpan = try self.indexSpans.allocate(@intCast(new.indices.len)); + const vertexSpan = try self.vertexSpans.allocate(@intCast(new.vertices.len)); + + const stagingVertex = try self.vkAllocator.createStagingBuffer( + @intCast(new.vertices.len * @sizeOf(MeshVertex)), + "staging vertex buffer", + ); + { + const stagingVertexMapped = try self.vkAllocator.mapBuffer(MeshVertex, stagingVertex); + defer self.vkAllocator.unmapMemory(stagingVertex); + std.mem.copyForwards(MeshVertex, stagingVertexMapped, new.vertices); + } + + const stagingIndex = try self.vkAllocator.createStagingBuffer( + @intCast(new.indices.len * @sizeOf(u32)), + "staging index buffer", + ); + { + const stagingMapped = try self.vkAllocator.mapBuffer(u32, stagingIndex); + defer self.vkAllocator.unmapMemory(stagingIndex); + for (new.indices, 0..) |index, i| { + stagingMapped[i] = index + vertexSpan.start; + } + } + try vertexUploadList.uploads.append(.{ .staging = stagingVertex, .destination = vertexSpan }); + try indexUploadList.uploads.append(.{ .staging = stagingIndex, .destination = indexSpan }); + + var jointMap: JointMapEntry = .{}; + + for (new.jointNames) |entry| { + var entryName = core.MakeName(entry.name); + // core.engine_log("gtlf bone found {s} -> {d}", .{ entry.name, entry.index }); + try jointMap.put(self.allocator, entryName.handle(), entry.index); + } + + var newName = new.name; + try gMeshPoolBuffer.jointMaps.put(self.allocator, newName.handle(), jointMap); + + var jointRemap: ?[]u8 = null; + + if (new.skeletonName) |skName| { + if (animationSystem.getSkeletonByName(skName)) |sk| { + // build the joint remap + // this is a map from ozz's index to gltf's index + var iter = sk.jointMapping.iterator(); + jointRemap = try graphics.getContext().allocator.alloc(u8, sk.jointMapping.count()); + + while (iter.next()) |i| { + const jointName = i.key_ptr.*; + const ozzIndex = i.value_ptr.*; + var jn = core.MakeName(jointName); + var gltfIndex = jointMap.get(jn.handle()); + if (gltfIndex == null) { + gltfIndex = 0; + // core.engine_log("ERROR REMAPPING BONE setting to zero {s}", .{jointName}); + } + + // core.engine_log("remapping bone from {s} ozz {d} -> {d} gltf", .{ jointName, ozzIndex, gltfIndex.? }); + + jointRemap.?[ozzIndex] = @intCast(gltfIndex.?); + } + } + } + + gMeshPoolBuffer.vertexMapLock.lock(); + try gMeshPoolBuffer.vertexMap.put(self.allocator, newName.handle(), .{ .index = indexSpan, .vertex = vertexSpan, .name = newName, .jointRemap = jointRemap }); + + gMeshPoolBuffer.vertexMapLock.unlock(); + }, + .free => |free| { + self.vertexSpans.removeSpan(free.vertices); + self.indexSpans.removeSpan(free.indices); + }, + } + + update.deinit(self.allocator); + } + + try self.uploader.startUploadContext(); + // iterate over both upload lists and isssue uploads. + + for (indexUploadList.uploads.items, 0..) |_, i| { + try indexUploadList.issueCopy(&self.uploader, @intCast(i), @sizeOf(u32)); + try vertexUploadList.issueCopy(&self.uploader, @intCast(i), @sizeOf(MeshVertex)); + } + // Insert Barrier for indexBuffer + var indexMemoryBarrier = vk.BufferMemoryBarrier{ + .buffer = self.indexBuffer.buffer, + .src_access_mask = .{ .transfer_read_bit = true }, + .dst_access_mask = .{ .index_read_bit = true }, + .src_queue_family_index = 0, + .dst_queue_family_index = 0, + .offset = 0, + .size = vk.WHOLE_SIZE, + }; + vkd.cmdPipelineBarrier( + self.uploader.commandBuffer, // + .{ .transfer_bit = true }, // + .{ .vertex_input_bit = true }, // + .{}, // + 0, + undefined, + 1, + @ptrCast(&indexMemoryBarrier), + 0, + undefined, + ); + + // Insert Barrier for vertexBuffer + var vertexMemoryBarrier = vk.BufferMemoryBarrier{ + .buffer = self.vertexBuffer.buffer, + .src_access_mask = .{ .transfer_read_bit = true }, + .dst_access_mask = .{ + .vertex_attribute_read_bit = true, + }, + .src_queue_family_index = 0, + .dst_queue_family_index = 0, + .offset = 0, + .size = vk.WHOLE_SIZE, + }; + + vkd.cmdPipelineBarrier( + self.uploader.commandBuffer, + .{ .transfer_bit = true }, + .{ .vertex_input_bit = true }, + .{}, + 0, + undefined, + 1, + @ptrCast(&vertexMemoryBarrier), + 0, + undefined, + ); + + try self.uploader.finishUploadContext(); + } + + pub fn destroy(self: *@This()) void { + { + self.updateRequests.lock(); + defer self.updateRequests.unlock(); + while (self.updateRequests.popFromUnlocked()) |x| { + x.deinit(self.allocator); + } + } + + { + var iter = self.vertexMap.valueIterator(); + while (iter.next()) |p| { + if (p.jointRemap) |jr| { + graphics.getContext().allocator.free(jr); + } + } + } + self.vertexMap.deinit(self.allocator); + self.indexSpans.deinit(); + self.vertexSpans.deinit(); + { + var iter = self.jointMaps.valueIterator(); + while (iter.next()) |p| { + p.deinit(self.allocator); + } + } + + self.jointMaps.deinit(self.allocator); + + self.vertexBuffer.deinit(self.gc.vkAllocator); + + self.indexBuffer.deinit(self.gc.vkAllocator); + self.uploader.deinit(); + + self.updateRequests.deinit(); + self.allocator.destroy(self); + } +}; + +pub const PoolMesh = struct { + vertexSpan: Span, + indexSpan: Span, +}; + +pub fn getMeshPoolBuffers() struct { index: NeonVkBuffer, vertex: NeonVkBuffer } { + return .{ + .index = gMeshPoolBuffer.indexBuffer, + .vertex = gMeshPoolBuffer.vertexBuffer, + }; +} + +pub const MeshSourceType = enum { obj, gltf }; + +pub const LoadMeshSettings = struct { + path: []const u8, + sourceType: ?MeshSourceType = null, + skeletonName: ?core.Name, +}; + +pub fn loadIndexedMeshForPooling(meshName: core.Name, opt: LoadMeshSettings) !void { + var sourceType = MeshSourceType.gltf; + if (opt.sourceType) |st| { + sourceType = st; + } + + // check if we have a cooked version of that file, if so just load that instead. + + // otherwise, load the file + switch (sourceType) { + .obj => { + try loadIndexedMeshForPoolingObj(meshName, opt.path); + }, + .gltf => { + try loadIndexedMeshForPoolingGltf(meshName, opt.skeletonName, opt.path); + }, + } +} + +pub fn loadIndexedMeshForPoolingGltf(meshName: core.Name, skeletonName: ?core.Name, path: []const u8) !void { + const file = try core.fs().loadFile(path); + defer core.fs().unmap(file); + + const allocator = gMeshPoolBuffer.allocator; + + var parser = zgltf.init(allocator); + defer parser.deinit(); + + const ext = core.getFileExtension(path); + if (std.mem.eql(u8, ".gltf", ext)) { + try parser.parse(@alignCast(file.bytes[0 .. file.bytes.len - 1])); + } else { + try parser.parse(@alignCast(file.bytes)); + } + + // std.debug.print("\n", .{}); + // parser.debugPrint(); + + if (parser.data.meshes.items.len > 1) { + return error.OnlyOneMeshPerGltfImplemented; + } + + if (parser.data.skins.items.len > 1) { + return error.TooManySkins; + } + + var binaryFile: ?core.packer.PackerBytesMapping = null; + var binaryBytes: []const u8 = undefined; + + if (std.mem.eql(u8, ext, ".glb")) { + binaryBytes = parser.glb_binary.?; + } else { + const binaryPath = try std.fmt.allocPrint(allocator, "{s}bin", .{path[0 .. path.len - 4]}); + defer allocator.free(binaryPath); + core.engine_log("{s}", .{binaryPath}); + binaryFile = try core.fs().loadFile(binaryPath); + binaryBytes = binaryFile.?.bytes; + } + + defer if (binaryFile) |f| core.fs().unmap(f); + + const m = parser.data.meshes.items[0]; + core.engine_log("mesh name {s} number of primitives = {d}", .{ m.name, m.primitives.items.len }); + + var positions = std.ArrayList(f32).init(allocator); + defer positions.deinit(); + + var texcoords = std.ArrayList(f32).init(allocator); + defer texcoords.deinit(); + + var normals = std.ArrayList(f32).init(allocator); + defer normals.deinit(); + + var joints = std.ArrayList(u16).init(allocator); + defer joints.deinit(); + // add a different joint format one, todo- i need to fix up zgltf + + var useJoints8: bool = false; + var joints8 = std.ArrayList(u8).init(allocator); + defer joints8.deinit(); + + var weights = std.ArrayList(f32).init(allocator); + defer weights.deinit(); + + var weightCount: usize = 4; + + if (m.primitives.items.len > 1) { + @panic("sorry, havent implemented support for multiple primitives yet, would require more work on the way i handle materials"); + } + + var indexList = std.ArrayList(u32).init(allocator); + for (m.primitives.items) |primitive| { + if (primitive.indices) |indices| { + const accessor = parser.data.accessors.items[indices]; + // core.engine_log("index accessor info: {any}", .{accessor}); + + if (accessor.component_type == .unsigned_short) { + var temp = std.ArrayList(u16).init(allocator); + defer temp.deinit(); + parser.getDataFromBufferView(u16, &temp, accessor, @alignCast(binaryBytes)); + for (temp.items) |t| { + try indexList.append(@intCast(t)); + } + } else if (accessor.component_type == .unsigned_integer) { + parser.getDataFromBufferView(u32, &indexList, accessor, @alignCast(binaryBytes)); + } + } + + for (primitive.attributes.items) |attribute| { + // core.engine_log("attribute: {any}", .{attribute}); + + switch (attribute) { + .position => |x| { + const accessor = parser.data.accessors.items[x]; + // core.engine_log("accessor info: {any}", .{accessor}); + + parser.getDataFromBufferView(f32, &positions, accessor, @alignCast(binaryBytes)); + // core.engine_log("positions loaded: {d}", .{positions.items.len}); + }, + .normal => |x| { + const accessor = parser.data.accessors.items[x]; + // core.engine_log("accessor info: {any}", .{accessor}); + + parser.getDataFromBufferView(f32, &normals, accessor, @alignCast(binaryBytes)); + // core.engine_log("normals loaded: {d}", .{normals.items.len}); + }, + .texcoord => |x| { + const accessor = parser.data.accessors.items[x]; + // core.engine_log("accessor info: {any}", .{accessor}); + + parser.getDataFromBufferView(f32, &texcoords, accessor, @alignCast(binaryBytes)); + // core.engine_log("texcoords loaded: {d}", .{texcoords.items.len}); + }, + .joints => |x| { + const accessor = parser.data.accessors.items[x]; + // core.engine_log("accessor info: {any} acecssor index {d}", .{ accessor, x }); + + if (accessor.component_type == .unsigned_byte) { + useJoints8 = true; + parser.getDataFromBufferView(u8, &joints8, accessor, @alignCast(binaryBytes)); + // core.engine_log("joints8 loaded: {d} - {d} {d} {d} {d}", .{ joints8.items.len, joints8.items[0], joints8.items[1], joints8.items[2], joints8.items[3] }); + } else { + parser.getDataFromBufferView(u16, &joints, accessor, @alignCast(binaryBytes)); + // core.engine_log("joints loaded: {d} - {d} {d} {d} {d}", .{ joints.items.len, joints.items[0], joints.items[1], joints.items[2], joints.items[3] }); + } + }, + .weights => |x| { + const accessor = parser.data.accessors.items[x]; + // core.engine_log("accessor info: {any}", .{accessor}); + + parser.getDataFromBufferView(f32, &weights, accessor, @alignCast(binaryBytes)); + + if (accessor.type == .vec3) { + weightCount = 3; + } + + // core.engine_log("weights loaded: {d} - {d} {d} {d} {d}", .{ weights.items.len, weights.items[0], weights.items[1], weights.items[2], weights.items[3] }); + }, + .tangent => |x| { + const accessor = parser.data.accessors.items[x]; + core.engine_log("accessor info: {any} NOT PARSED", .{accessor}); + }, + .color => |x| { + const accessor = parser.data.accessors.items[x]; + core.engine_log("accessor info: {any} NOT PARSED", .{accessor}); + }, + } + } + } + + if (parser.data.skins.items.len > 1) { + @panic("too many skins, not supported"); + } + + var jointNameList: std.ArrayList(JointNameEntry) = std.ArrayList(JointNameEntry).init(allocator); + + if (weights.items.len > 0) { + core.engine_log("skin found, building joint map", .{}); + if (parser.data.skins.items[0].skeleton) |skeletonIndex| { + for (parser.data.nodes.items[skeletonIndex..], 0..) |node, i| { + // core.engine_log("gltf: {s} -> {d} (skeleton index)", .{ node.name, i }); + const gcAllocator = graphics.getContext().allocator; + try jointNameList.append(.{ .index = @intCast(i), .name = try gcAllocator.dupe(u8, node.name) }); + } + } else { + if (parser.data.skins.items[0].joints.items.len > 0) { + for (parser.data.skins.items[0].joints.items, 0..) |i, j| { + const node = parser.data.nodes.items[i]; + // core.engine_log("gltf: {s} -> {d} (joints map)", .{ node.name, j }); + const gcAllocator = graphics.getContext().allocator; + try jointNameList.append(.{ .index = @intCast(j), .name = try gcAllocator.dupe(u8, node.name) }); + } + } else { + for (parser.data.nodes.items, 0..) |node, i| { + // core.engine_log("gltf: {s} -> {d} (fallback)", .{ node.name, i }); + const gcAllocator = graphics.getContext().allocator; + try jointNameList.append(.{ .index = @intCast(i), .name = try gcAllocator.dupe(u8, node.name) }); + } + } + } + } + + var vertexList = std.ArrayList(MeshVertex).init(allocator); + + var i: usize = 0; + const vertexCount = positions.items.len / 3; + while (i < vertexCount) : (i += 1) { + const normalIndex = i * 3; + const positionIndex = i * 3; + const uvIndex = i * 2; + + const uv: core.Vector2f = if (uvIndex < texcoords.items.len) .{ + .x = texcoords.items[uvIndex], + .y = texcoords.items[uvIndex + 1], + } else core.Vector2f{}; + + const normal = if (normalIndex < normals.items.len) core.Vectorf{ + .x = normals.items[i], + .y = normals.items[i + 1], + .z = normals.items[i + 2], + } else core.Vectorf{}; + + try vertexList.append(.{ + .position = .{ + .x = positions.items[positionIndex], + .y = positions.items[positionIndex + 1], + .z = positions.items[positionIndex + 2], + }, + .normal = normal, + .color = .{}, + .uv = uv, + }); + + const jointsIndex = weightCount * i; + if (weightCount == 4) { + if (useJoints8) { + if (jointsIndex < joints8.items.len) { + vertexList.items[vertexList.items.len - 1].bones = .{ + @intCast(joints8.items[jointsIndex + 0]), + @intCast(joints8.items[jointsIndex + 1]), + @intCast(joints8.items[jointsIndex + 2]), + @intCast(joints8.items[jointsIndex + 3]), + }; + vertexList.items[vertexList.items.len - 1].weights = .{ + @intFromFloat(weights.items[jointsIndex + 0] * 255), + @intFromFloat(weights.items[jointsIndex + 1] * 255), + @intFromFloat(weights.items[jointsIndex + 2] * 255), + @intFromFloat(weights.items[jointsIndex + 3] * 255), + }; + } + } else { + if (jointsIndex < joints.items.len) { + vertexList.items[vertexList.items.len - 1].bones = .{ + @intCast(joints.items[jointsIndex + 0]), + @intCast(joints.items[jointsIndex + 1]), + @intCast(joints.items[jointsIndex + 2]), + @intCast(joints.items[jointsIndex + 3]), + }; + vertexList.items[vertexList.items.len - 1].weights = .{ + @intFromFloat(weights.items[jointsIndex + 0] * 255), + @intFromFloat(weights.items[jointsIndex + 1] * 255), + @intFromFloat(weights.items[jointsIndex + 2] * 255), + @intFromFloat(weights.items[jointsIndex + 3] * 255), + }; + } + } + } else { + return error.NotImplementedYet; + } + } + + if (indexList.items.len == 0) { + for (0..vertexList.items.len) |x| { + try indexList.append(@intCast(x)); + } + } + + const rv: MeshUpdate = .{ + .new = .{ + .vertices = try vertexList.toOwnedSlice(), + .indices = try indexList.toOwnedSlice(), + .jointNames = try jointNameList.toOwnedSlice(), + .skeletonName = skeletonName, + .name = meshName, + }, + }; + + core.graphics_log("[{s}] gltf loaded vertex count vertices={d} indices={d}", .{ path, rv.new.vertices.len, rv.new.indices.len }); + + try gMeshPoolBuffer.updateRequests.pushLocked(rv); + + // return error.NotImplementedYet; + + // var vertexList = std.ArrayList(MeshVertex).init(allocator); + // var indexList = std.ArrayList(u32).init(allocator); + + // const rv: MeshUpdate = .{ + // .new = .{ + // .vertices = try vertexList.toOwnedSlice(), + // .indices = try indexList.toOwnedSlice(), + // .name = meshName, + // }, + // }; + + // core.graphics_log("[{s}] vertex count vertices={d} indices={d}", .{ path, rv.new.vertices.len, rv.new.indices.len }); + + // try gMeshPoolBuffer.updateRequests.pushLocked(rv); +} + +pub fn pushMeshUpdateRequest(update: MeshUpdate) !void { + try gMeshPoolBuffer.updateRequests.pushLocked(update); +} + +pub fn loadIndexedMeshForPoolingObj(meshName: core.Name, path: []const u8) !void { + const file = try core.fs().loadFile(path); + defer core.fs().unmap(file); + + const allocator = gMeshPoolBuffer.allocator; + + var Objs = try objLoader.loadObjBytes(file.bytes, allocator); + defer Objs.deinit(); + + var vertexMap = std.AutoHashMap(MeshVertexTransmute, u32).init(allocator); + defer vertexMap.deinit(); + var vertexList = std.ArrayList(MeshVertex).init(allocator); + var indexList = std.ArrayList(u32).init(allocator); + + const m: *objLoader.ObjMesh = &Objs.meshes.items[0]; + + // only thing i care about right now is normal and position + for (m.v_faces.items) |f| { + const face: objLoader.ObjFace = f; + + if (face.count == 3) { + for (0..face.count) |i| { + const p = m.v_positions.items[face.vertex[i] - 1]; + const n = m.v_normals.items[face.normal[i] - 1]; + const u = m.v_uvs.items[face.texture[i] - 1]; + const meshVertex: MeshVertex = .{ + .position = .{ .x = p.x, .y = p.y, .z = p.z }, + .normal = .{ .x = n.x, .y = n.y, .z = n.z }, + .color = .{ .r = n.x, .g = n.y, .b = n.z, .a = 1.0 }, + .uv = .{ .x = u.x, .y = 1 - u.y }, + }; + + var index: u32 = @intCast(vertexList.items.len); + + const transmute: MeshVertexTransmute = @bitCast(meshVertex); + if (vertexMap.get(transmute)) |cachedIndex| { + index = cachedIndex; + } else { + try vertexMap.put(transmute, index); + try vertexList.append(meshVertex); + } + try indexList.append(index); + } + } + + if (face.count == 4) { + const il: []const usize = &.{ 0, 1, 2, 2, 3, 0 }; + for (il) |i| { + const p = m.v_positions.items[face.vertex[i] - 1]; + const n = m.v_normals.items[face.normal[i] - 1]; + const u = m.v_uvs.items[face.texture[i] - 1]; + const meshVertex: MeshVertex = .{ + .position = .{ .x = p.x, .y = p.y, .z = p.z }, + .normal = .{ .x = n.x, .y = n.y, .z = n.z }, + .color = .{ .r = n.x, .g = n.y, .b = n.z, .a = 1.0 }, + .uv = .{ .x = u.x, .y = 1 - u.y }, + }; + + var index: u32 = @intCast(vertexList.items.len); + + const transmute: MeshVertexTransmute = @bitCast(meshVertex); + if (vertexMap.get(transmute)) |cachedIndex| { + index = cachedIndex; + } else { + try vertexMap.put(transmute, index); + try vertexList.append(meshVertex); + } + try indexList.append(index); + } + } + } + + var jointNames = std.ArrayList(JointNameEntry).init(allocator); + + const rv: MeshUpdate = .{ + .new = .{ + .vertices = try vertexList.toOwnedSlice(), + .indices = try indexList.toOwnedSlice(), + .jointNames = try jointNames.toOwnedSlice(), + .skeletonName = null, + .name = meshName, + }, + }; + + core.graphics_log("[{s}] vertex count vertices={d} indices={d}", .{ path, rv.new.vertices.len, rv.new.indices.len }); + + try gMeshPoolBuffer.updateRequests.pushLocked(rv); +} + +pub const JointNameEntry = struct { + name: []u8 = undefined, + index: u32 = 0, + + pub fn deinit(self: @This()) void { + const allocator = graphics.getContext().allocator; + allocator.free(self.name); + } +}; + +const objLoader = @import("objLoader"); + +const vk_allocator = @import("../vk_allocator.zig"); +const NeonVkAllocator = vk_allocator.NeonVkAllocator; +const NeonVkBuffer = vk_allocator.NeonVkBuffer; + +const mesh = @import("../mesh.zig"); +const MeshVertex = mesh.MeshVertex; + +const Span = core.Span; +const MergedSpans = core.MergedSpans; + +const vk_utils = @import("../vk_utils.zig"); +const NeonVkUploader = vk_utils.NeonVkUploader; + +const vk_renderer = @import("../vk_renderer.zig"); +const NeonVkContext = vk_renderer.NeonVkContext; + +const animationSystem = @import("../animation/animationSystem.zig"); +const vk_constants = @import("../vk_constants.zig"); +const vk_api = @import("../vk_api.zig"); +const vkd = vk_api.vkd; +const vki = vk_api.vki; +const vkb = vk_api.vkb; +const graphics = @import("../graphics.zig"); diff --git a/engine/graphics/src/vk_renderer/vk_pool_mesh.zig b/engine/_archive/graphics/src/vk_renderer/vk_pool_mesh.zig similarity index 100% rename from engine/graphics/src/vk_renderer/vk_pool_mesh.zig rename to engine/_archive/graphics/src/vk_renderer/vk_pool_mesh.zig diff --git a/engine/graphics/src/vk_renderer/vk_renderer_camera_gpu.zig b/engine/_archive/graphics/src/vk_renderer/vk_renderer_camera_gpu.zig similarity index 100% rename from engine/graphics/src/vk_renderer/vk_renderer_camera_gpu.zig rename to engine/_archive/graphics/src/vk_renderer/vk_renderer_camera_gpu.zig diff --git a/engine/graphics/src/vk_renderer/vk_renderer_interface.zig b/engine/_archive/graphics/src/vk_renderer/vk_renderer_interface.zig similarity index 100% rename from engine/graphics/src/vk_renderer/vk_renderer_interface.zig rename to engine/_archive/graphics/src/vk_renderer/vk_renderer_interface.zig diff --git a/engine/graphics/src/vk_renderer/vk_renderer_types.zig b/engine/_archive/graphics/src/vk_renderer/vk_renderer_types.zig similarity index 97% rename from engine/graphics/src/vk_renderer/vk_renderer_types.zig rename to engine/_archive/graphics/src/vk_renderer/vk_renderer_types.zig index 33ffd3d..7d9a26d 100644 --- a/engine/graphics/src/vk_renderer/vk_renderer_types.zig +++ b/engine/_archive/graphics/src/vk_renderer/vk_renderer_types.zig @@ -1,72 +1,72 @@ -const std = @import("std"); -const vk = @import("vulkan"); - -const core = @import("core"); - -const vk_renderer = @import("../vk_renderer.zig"); -const NeonVkContext = vk_renderer.NeonVkContext; - -const vk_allocator = @import("../vk_allocator.zig"); -const vk_constants = @import("../vk_constants.zig"); - -pub const NeonVkQueue = struct { - handle: vk.Queue, - family: u32, - - pub fn init(vkd: vk_constants.DeviceDispatch, dev: vk.Device, family: u32, index: u32) @This() { - return .{ - .handle = vkd.getDeviceQueue(dev, family, index), - .family = family, - }; - } -}; - -pub const NeonVkFrameData = struct { - // descriptors - globalDescriptorSet: vk.DescriptorSet, - objectDescriptorSet: vk.DescriptorSet, - spriteDescriptorSet: vk.DescriptorSet, - - // buffers - spriteBuffer: vk_allocator.NeonVkBuffer, - objectBuffer: vk_allocator.NeonVkBuffer, - animationsBuffer: vk_allocator.NeonVkBuffer, - cameraBuffer: vk_allocator.NeonVkBuffer, -}; - -pub const triangle_mesh_vert = @import("triangle_mesh_vert"); -pub const NeonVkObjectDataGpu = triangle_mesh_vert.ObjectData; -pub const VertexBoneData = triangle_mesh_vert.VertexBoneData; - -pub const NeonVkSceneDataGpu = struct { - fogColor: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, - fogDistances: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, - ambientColor: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, - sunlightDirection: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, - sunlightColor: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, -}; - -pub const descriptorPoolSizes = [_]vk.DescriptorPoolSize{ - .{ .type = .uniform_buffer, .descriptor_count = 1000 }, - .{ .type = .uniform_buffer_dynamic, .descriptor_count = 1000 }, - .{ .type = .storage_buffer, .descriptor_count = 1000 }, - .{ .type = .combined_image_sampler, .descriptor_count = 2000 }, - .{ .type = .sampler, .descriptor_count = 1000 }, - .{ .type = .sampled_image, .descriptor_count = 1000 }, - .{ .type = .storage_image, .descriptor_count = 1000 }, - - // .{ .type = .sampler, .descriptor_count = 1000 }, - // .{ .type = .combined_image_sampler, .descriptor_count = 1000 }, - // .{ .type = .sampled_image, .descriptor_count = 1000 }, - // .{ .type = .storage_image, .descriptor_count = 1000 }, -}; - -pub const NeonVkSwapImage = struct { - image: vk.Image, - view: vk.ImageView, - imageIndex: usize, - - pub fn deinit(self: *NeonVkSwapImage, vkd: vk_constants.DeviceDispatch, dev: vk.Device) void { - vkd.destroyImageView(dev, self.view, null); - } -}; +const std = @import("std"); +const vk = @import("vulkan"); + +const core = @import("core"); + +const vk_renderer = @import("../vk_renderer.zig"); +const NeonVkContext = vk_renderer.NeonVkContext; + +const vk_allocator = @import("../vk_allocator.zig"); +const vk_constants = @import("../vk_constants.zig"); + +pub const NeonVkQueue = struct { + handle: vk.Queue, + family: u32, + + pub fn init(vkd: vk_constants.DeviceDispatch, dev: vk.Device, family: u32, index: u32) @This() { + return .{ + .handle = vkd.getDeviceQueue(dev, family, index), + .family = family, + }; + } +}; + +pub const NeonVkFrameData = struct { + // descriptors + globalDescriptorSet: vk.DescriptorSet, + objectDescriptorSet: vk.DescriptorSet, + spriteDescriptorSet: vk.DescriptorSet, + + // buffers + spriteBuffer: vk_allocator.NeonVkBuffer, + objectBuffer: vk_allocator.NeonVkBuffer, + animationsBuffer: vk_allocator.NeonVkBuffer, + cameraBuffer: vk_allocator.NeonVkBuffer, +}; + +pub const triangle_mesh_vert = @import("triangle_mesh_vert"); +pub const NeonVkObjectDataGpu = triangle_mesh_vert.ObjectData; +pub const VertexBoneData = triangle_mesh_vert.VertexBoneData; + +pub const NeonVkSceneDataGpu = struct { + fogColor: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, + fogDistances: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, + ambientColor: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, + sunlightDirection: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, + sunlightColor: core.zm.Vec = .{ 0.0, 0.0, 0.0, 0.0 }, +}; + +pub const descriptorPoolSizes = [_]vk.DescriptorPoolSize{ + .{ .type = .uniform_buffer, .descriptor_count = 1000 }, + .{ .type = .uniform_buffer_dynamic, .descriptor_count = 1000 }, + .{ .type = .storage_buffer, .descriptor_count = 1000 }, + .{ .type = .combined_image_sampler, .descriptor_count = 2000 }, + .{ .type = .sampler, .descriptor_count = 1000 }, + .{ .type = .sampled_image, .descriptor_count = 1000 }, + .{ .type = .storage_image, .descriptor_count = 1000 }, + + // .{ .type = .sampler, .descriptor_count = 1000 }, + // .{ .type = .combined_image_sampler, .descriptor_count = 1000 }, + // .{ .type = .sampled_image, .descriptor_count = 1000 }, + // .{ .type = .storage_image, .descriptor_count = 1000 }, +}; + +pub const NeonVkSwapImage = struct { + image: vk.Image, + view: vk.ImageView, + imageIndex: usize, + + pub fn deinit(self: *NeonVkSwapImage, vkd: vk_constants.DeviceDispatch, dev: vk.Device) void { + vkd.destroyImageView(dev, self.view, null); + } +}; diff --git a/engine/graphics/src/vk_renderer/vk_skeletal.zig b/engine/_archive/graphics/src/vk_renderer/vk_skeletal.zig similarity index 97% rename from engine/graphics/src/vk_renderer/vk_skeletal.zig rename to engine/_archive/graphics/src/vk_renderer/vk_skeletal.zig index 74a1bcd..9c879cb 100644 --- a/engine/graphics/src/vk_renderer/vk_skeletal.zig +++ b/engine/_archive/graphics/src/vk_renderer/vk_skeletal.zig @@ -1,44 +1,44 @@ -pub const SkeletalBuffers = struct { - descriptorSet: vk.DescriptorSet, - gc: *NeonVkContext, - vkAllocator: *NeonVkAllocator, - allocator: std.mem.Allocator, - - finalsBuffer: [2]NeonVkBuffer = undefined, - - pub fn init(gc: *NeonVkContext) !*@This() { - const self = try gc.allocator.create(@This()); - - self.* = .{ - .gc = gc, - .allocator = gc.allocator, - .vkAllocator = gc.vkAllocator, - .skeletalPipeData = undefined, - }; - - self.buildBuffers(); - return self; - } - - pub fn buildBuffers(self: *@This()) !void { - const vkAllocator: *NeonVkAllocator = self.vkAllocator; - - // 100k animated skeletal mesh vertices ought to be enough for anyone right? - for (0..2) |i| { - self.finalsBuffer[i] = try vkAllocator.createSsboBuffer(@sizeOf(core.Mat) * vk_constants.MAX_SKIN_SLOTS, "bones buffer."); - } - } -}; - -const std = @import("std"); -const core = @import("core"); -const assets = @import("assets"); -const graphics = @import("../graphics.zig"); -const vk_renderer_types = @import("vk_renderer_types.zig"); -const VertexBoneData = vk_renderer_types.VertexBoneData; -const gpd = graphics.gpu_pipe_data; -const NeonVkContext = graphics.NeonVkContext; -const NeonVkBuffer = graphics.NeonVkBuffer; -const NeonVkAllocator = graphics.NeonVkAllocator; -const vk = @import("vulkan"); -const vk_constants = @import("../vk_constants.zig"); +pub const SkeletalBuffers = struct { + descriptorSet: vk.DescriptorSet, + gc: *NeonVkContext, + vkAllocator: *NeonVkAllocator, + allocator: std.mem.Allocator, + + finalsBuffer: [2]NeonVkBuffer = undefined, + + pub fn init(gc: *NeonVkContext) !*@This() { + const self = try gc.allocator.create(@This()); + + self.* = .{ + .gc = gc, + .allocator = gc.allocator, + .vkAllocator = gc.vkAllocator, + .skeletalPipeData = undefined, + }; + + self.buildBuffers(); + return self; + } + + pub fn buildBuffers(self: *@This()) !void { + const vkAllocator: *NeonVkAllocator = self.vkAllocator; + + // 100k animated skeletal mesh vertices ought to be enough for anyone right? + for (0..2) |i| { + self.finalsBuffer[i] = try vkAllocator.createSsboBuffer(@sizeOf(core.Mat) * vk_constants.MAX_SKIN_SLOTS, "bones buffer."); + } + } +}; + +const std = @import("std"); +const core = @import("core"); +const assets = @import("assets"); +const graphics = @import("../graphics.zig"); +const vk_renderer_types = @import("vk_renderer_types.zig"); +const VertexBoneData = vk_renderer_types.VertexBoneData; +const gpd = graphics.gpu_pipe_data; +const NeonVkContext = graphics.NeonVkContext; +const NeonVkBuffer = graphics.NeonVkBuffer; +const NeonVkAllocator = graphics.NeonVkAllocator; +const vk = @import("vulkan"); +const vk_constants = @import("../vk_constants.zig"); diff --git a/engine/graphics/src/vk_renderer/vk_swapchain_helpers.zig b/engine/_archive/graphics/src/vk_renderer/vk_swapchain_helpers.zig similarity index 96% rename from engine/graphics/src/vk_renderer/vk_swapchain_helpers.zig rename to engine/_archive/graphics/src/vk_renderer/vk_swapchain_helpers.zig index af88ee6..7e3e89f 100644 --- a/engine/graphics/src/vk_renderer/vk_swapchain_helpers.zig +++ b/engine/_archive/graphics/src/vk_renderer/vk_swapchain_helpers.zig @@ -1,87 +1,87 @@ -const std = @import("std"); -const vk = @import("vulkan"); -const core = @import("core"); -const vk_constants = @import("../vk_constants.zig"); -const vk_renderer_types = @import("vk_renderer_types.zig"); - -const vk_api = @import("../vk_api.zig"); -const vkd = vk_api.vkd; -const vki = vk_api.vki; -const vkb = vk_api.vkb; - -const force_mailbox = core.BuildOption("force_mailbox"); - -pub fn findSurfaceFormat( - allocator: std.mem.Allocator, - pdev: vk.PhysicalDevice, - surface: vk.SurfaceKHR, -) !vk.SurfaceFormatKHR { - const preferred = vk.SurfaceFormatKHR{ - .format = .b8g8r8a8_srgb, - .color_space = .srgb_nonlinear_khr, - }; - - var count: u32 = 0; - - _ = try vki.getPhysicalDeviceSurfaceFormatsKHR(pdev, surface, &count, null); - - const surface_formats = try allocator.alloc(vk.SurfaceFormatKHR, count); - defer allocator.free(surface_formats); - - _ = try vki.getPhysicalDeviceSurfaceFormatsKHR(pdev, surface, &count, surface_formats.ptr); - - for (surface_formats) |sfmt| { - if (std.meta.eql(sfmt, preferred)) { - return preferred; - } - } - - const rv = surface_formats[0]; - - core.graphics_log("Selected surface format\n {any}", .{rv}); - return rv; -} - -pub fn findPresentMode( - allocator: std.mem.Allocator, - pdev: vk.PhysicalDevice, - surface: vk.SurfaceKHR, -) !vk.PresentModeKHR { - var count: u32 = undefined; - _ = try vki.getPhysicalDeviceSurfacePresentModesKHR(pdev, surface, &count, null); - const present_modes = try allocator.alloc(vk.PresentModeKHR, count); - defer allocator.free(present_modes); - _ = try vki.getPhysicalDeviceSurfacePresentModesKHR(pdev, surface, &count, present_modes.ptr); - - const preferred = [_]vk.PresentModeKHR{ - .fifo_khr, - .mailbox_khr, - .immediate_khr, - }; - - if (force_mailbox) { - return .mailbox_khr; - } - - for (preferred) |mode| { - if (std.mem.indexOfScalar(vk.PresentModeKHR, present_modes, mode) != null) { - return mode; - } - } - - return error.UnableToFindPresentMode; -} - -pub fn findActualExtent( - extent: vk.Extent2D, - caps: vk.SurfaceCapabilitiesKHR, -) !vk.Extent2D { - if (caps.current_extent.width != 0xFFFF_FFFF) { - return caps.current_extent; - } else { - return .{ - .width = std.math.clamp(extent.width, caps.min_image_extent.width, caps.max_image_extent.width), - .height = std.math.clamp(extent.height, caps.min_image_extent.height, caps.max_image_extent.height), - }; - } -} +const std = @import("std"); +const vk = @import("vulkan"); +const core = @import("core"); +const vk_constants = @import("../vk_constants.zig"); +const vk_renderer_types = @import("vk_renderer_types.zig"); + +const vk_api = @import("../vk_api.zig"); +const vkd = vk_api.vkd; +const vki = vk_api.vki; +const vkb = vk_api.vkb; + +const force_mailbox = core.BuildOption("force_mailbox"); + +pub fn findSurfaceFormat( + allocator: std.mem.Allocator, + pdev: vk.PhysicalDevice, + surface: vk.SurfaceKHR, +) !vk.SurfaceFormatKHR { + const preferred = vk.SurfaceFormatKHR{ + .format = .b8g8r8a8_srgb, + .color_space = .srgb_nonlinear_khr, + }; + + var count: u32 = 0; + + _ = try vki.getPhysicalDeviceSurfaceFormatsKHR(pdev, surface, &count, null); + + const surface_formats = try allocator.alloc(vk.SurfaceFormatKHR, count); + defer allocator.free(surface_formats); + + _ = try vki.getPhysicalDeviceSurfaceFormatsKHR(pdev, surface, &count, surface_formats.ptr); + + for (surface_formats) |sfmt| { + if (std.meta.eql(sfmt, preferred)) { + return preferred; + } + } + + const rv = surface_formats[0]; + + core.graphics_log("Selected surface format\n {any}", .{rv}); + return rv; +} + +pub fn findPresentMode( + allocator: std.mem.Allocator, + pdev: vk.PhysicalDevice, + surface: vk.SurfaceKHR, +) !vk.PresentModeKHR { + var count: u32 = undefined; + _ = try vki.getPhysicalDeviceSurfacePresentModesKHR(pdev, surface, &count, null); + const present_modes = try allocator.alloc(vk.PresentModeKHR, count); + defer allocator.free(present_modes); + _ = try vki.getPhysicalDeviceSurfacePresentModesKHR(pdev, surface, &count, present_modes.ptr); + + const preferred = [_]vk.PresentModeKHR{ + .fifo_khr, + .mailbox_khr, + .immediate_khr, + }; + + if (force_mailbox) { + return .mailbox_khr; + } + + for (preferred) |mode| { + if (std.mem.indexOfScalar(vk.PresentModeKHR, present_modes, mode) != null) { + return mode; + } + } + + return error.UnableToFindPresentMode; +} + +pub fn findActualExtent( + extent: vk.Extent2D, + caps: vk.SurfaceCapabilitiesKHR, +) !vk.Extent2D { + if (caps.current_extent.width != 0xFFFF_FFFF) { + return caps.current_extent; + } else { + return .{ + .width = std.math.clamp(extent.width, caps.min_image_extent.width, caps.max_image_extent.width), + .height = std.math.clamp(extent.height, caps.min_image_extent.height, caps.max_image_extent.height), + }; + } +} diff --git a/engine/graphics/src/vk_renderer/vk_texture_list.zig b/engine/_archive/graphics/src/vk_renderer/vk_texture_list.zig similarity index 97% rename from engine/graphics/src/vk_renderer/vk_texture_list.zig rename to engine/_archive/graphics/src/vk_renderer/vk_texture_list.zig index fc5f28d..64c366a 100644 --- a/engine/graphics/src/vk_renderer/vk_texture_list.zig +++ b/engine/_archive/graphics/src/vk_renderer/vk_texture_list.zig @@ -1,128 +1,128 @@ -// this implements the global texture list - -const gTextureList: *TextureList = undefined; - -pub const ArrayedTexture = struct {}; - -pub const TextureList = struct { - allocator: std.mem.Allocator, - textures: std.AutoHashMapUnmanaged(u32, *Texture), - gc: *NeonVkContext, - listSet: vk.DescriptorSet = undefined, - dsl: vk.DescriptorSetLayout = undefined, - // descriptorPool: vk.DescriptorPool = undefined, - - // const descriptorPoolSizes = [_]vk.DescriptorPoolSize{ - // .{ .type = .sampler, .descriptor_count = 1000 }, - // .{ .type = .combined_image_sampler, .descriptor_count = 1000 }, - // .{ .type = .sampled_image, .descriptor_count = 1000 }, - // .{ .type = .storage_image, .descriptor_count = 1000 }, - // }; - - pub fn create(gc: *NeonVkContext) !*@This() { - const self = try gc.allocator.create(@This()); - - self.* = .{ - .allocator = gc.allocator, - .textures = .{}, - .gc = gc, - }; - - try self.initTextureList(); - - return self; - } - - pub fn initTextureList(self: *@This()) !void { - // var poolInfo = vk.DescriptorPoolCreateInfo{ - // .flags = .{}, - // .max_sets = 1000, - // .pool_size_count = @intCast(descriptorPoolSizes.len), - // .p_pool_sizes = &descriptorPoolSizes, - // }; - - // self.descriptorPool = try vkd.createDescriptorPool(self.gc.dev, &poolInfo, null); - - const bindings = [_]vk.DescriptorSetLayoutBinding{ - .{ - .binding = 0, - .descriptor_type = .storage_buffer, - .descriptor_count = 500, - .stage_flags = .{ - .vertex_bit = true, - .geometry_bit = true, - .compute_bit = true, - .fragment_bit = true, - }, - .p_immutable_samplers = null, - }, - .{ - .binding = 1, - .descriptor_type = .combined_image_sampler, - .descriptor_count = 500, - .stage_flags = .{ - .vertex_bit = true, - .geometry_bit = true, - .compute_bit = true, - .fragment_bit = true, - }, - .p_immutable_samplers = null, - }, - .{ - .binding = 2, - .descriptor_type = .storage_image, - .descriptor_count = 500, - .stage_flags = .{ - .vertex_bit = true, - .geometry_bit = true, - .compute_bit = true, - .fragment_bit = true, - }, - .p_immutable_samplers = null, - }, - }; - const flags = [_]vk.DescriptorBindingFlags{ - .{ .partially_bound_bit = true }, - .{ .partially_bound_bit = true }, - .{ .partially_bound_bit = true }, - }; - const fci = vk.DescriptorSetLayoutBindingFlagsCreateInfo{ .binding_count = 3, .p_binding_flags = @ptrCast(&flags) }; - - const dsci = vk.DescriptorSetLayoutCreateInfo{ - .flags = .{}, - .binding_count = bindings.len, - .p_bindings = @ptrCast(&bindings), - .p_next = &fci, - }; - - self.dsl = try vkd.createDescriptorSetLayout(self.gc.dev, &dsci, null); - - const dsai = vk.DescriptorSetAllocateInfo{ - .descriptor_pool = self.gc.descriptorPool, - .descriptor_set_count = 1, - .p_set_layouts = @ptrCast(&self.dsl), - }; - - try vkd.allocateDescriptorSets(self.gc.dev, &dsai, @ptrCast(&self.listSet)); - } - - pub fn destroy(self: *@This()) void { - vkd.destroyDescriptorSetLayout(self.gc.dev, self.dsl, null); - // vkd.destroyDescriptorPool(self.gc.dev, self.descriptorPool, null); - self.textures.deinit(self.allocator); - self.allocator.destroy(self); - } -}; - -const graphics = @import("../graphics.zig"); -const NeonVkContext = graphics.NeonVkContext; - -const texture = @import("../texture.zig"); -const Texture = texture.Texture; - -const vk = @import("vulkan"); - -const std = @import("std"); - -const vk_api = @import("../vk_api.zig"); -const vkd = vk_api.vkd; +// this implements the global texture list + +const gTextureList: *TextureList = undefined; + +pub const ArrayedTexture = struct {}; + +pub const TextureList = struct { + allocator: std.mem.Allocator, + textures: std.AutoHashMapUnmanaged(u32, *Texture), + gc: *NeonVkContext, + listSet: vk.DescriptorSet = undefined, + dsl: vk.DescriptorSetLayout = undefined, + // descriptorPool: vk.DescriptorPool = undefined, + + // const descriptorPoolSizes = [_]vk.DescriptorPoolSize{ + // .{ .type = .sampler, .descriptor_count = 1000 }, + // .{ .type = .combined_image_sampler, .descriptor_count = 1000 }, + // .{ .type = .sampled_image, .descriptor_count = 1000 }, + // .{ .type = .storage_image, .descriptor_count = 1000 }, + // }; + + pub fn create(gc: *NeonVkContext) !*@This() { + const self = try gc.allocator.create(@This()); + + self.* = .{ + .allocator = gc.allocator, + .textures = .{}, + .gc = gc, + }; + + try self.initTextureList(); + + return self; + } + + pub fn initTextureList(self: *@This()) !void { + // var poolInfo = vk.DescriptorPoolCreateInfo{ + // .flags = .{}, + // .max_sets = 1000, + // .pool_size_count = @intCast(descriptorPoolSizes.len), + // .p_pool_sizes = &descriptorPoolSizes, + // }; + + // self.descriptorPool = try vkd.createDescriptorPool(self.gc.dev, &poolInfo, null); + + const bindings = [_]vk.DescriptorSetLayoutBinding{ + .{ + .binding = 0, + .descriptor_type = .storage_buffer, + .descriptor_count = 500, + .stage_flags = .{ + .vertex_bit = true, + .geometry_bit = true, + .compute_bit = true, + .fragment_bit = true, + }, + .p_immutable_samplers = null, + }, + .{ + .binding = 1, + .descriptor_type = .combined_image_sampler, + .descriptor_count = 500, + .stage_flags = .{ + .vertex_bit = true, + .geometry_bit = true, + .compute_bit = true, + .fragment_bit = true, + }, + .p_immutable_samplers = null, + }, + .{ + .binding = 2, + .descriptor_type = .storage_image, + .descriptor_count = 500, + .stage_flags = .{ + .vertex_bit = true, + .geometry_bit = true, + .compute_bit = true, + .fragment_bit = true, + }, + .p_immutable_samplers = null, + }, + }; + const flags = [_]vk.DescriptorBindingFlags{ + .{ .partially_bound_bit = true }, + .{ .partially_bound_bit = true }, + .{ .partially_bound_bit = true }, + }; + const fci = vk.DescriptorSetLayoutBindingFlagsCreateInfo{ .binding_count = 3, .p_binding_flags = @ptrCast(&flags) }; + + const dsci = vk.DescriptorSetLayoutCreateInfo{ + .flags = .{}, + .binding_count = bindings.len, + .p_bindings = @ptrCast(&bindings), + .p_next = &fci, + }; + + self.dsl = try vkd.createDescriptorSetLayout(self.gc.dev, &dsci, null); + + const dsai = vk.DescriptorSetAllocateInfo{ + .descriptor_pool = self.gc.descriptorPool, + .descriptor_set_count = 1, + .p_set_layouts = @ptrCast(&self.dsl), + }; + + try vkd.allocateDescriptorSets(self.gc.dev, &dsai, @ptrCast(&self.listSet)); + } + + pub fn destroy(self: *@This()) void { + vkd.destroyDescriptorSetLayout(self.gc.dev, self.dsl, null); + // vkd.destroyDescriptorPool(self.gc.dev, self.descriptorPool, null); + self.textures.deinit(self.allocator); + self.allocator.destroy(self); + } +}; + +const graphics = @import("../graphics.zig"); +const NeonVkContext = graphics.NeonVkContext; + +const texture = @import("../texture.zig"); +const Texture = texture.Texture; + +const vk = @import("vulkan"); + +const std = @import("std"); + +const vk_api = @import("../vk_api.zig"); +const vkd = vk_api.vkd; diff --git a/engine/graphics/src/vk_renderer/vkd_utils.zig b/engine/_archive/graphics/src/vk_renderer/vkd_utils.zig similarity index 96% rename from engine/graphics/src/vk_renderer/vkd_utils.zig rename to engine/_archive/graphics/src/vk_renderer/vkd_utils.zig index e08b430..738d892 100644 --- a/engine/graphics/src/vk_renderer/vkd_utils.zig +++ b/engine/_archive/graphics/src/vk_renderer/vkd_utils.zig @@ -1,35 +1,35 @@ -const vk_constants = @import("../vk_constants.zig"); -const vk_api = @import("../vk_api.zig"); -const vkd = vk_api.vkd; -const vki = vk_api.vki; -const vkb = vk_api.vkb; -const vk = @import("vulkan"); - -const graphics = @import("../graphics.zig"); -const NeonVkBuffer = graphics.NeonVkBuffer; - -pub fn copyStagingSlice( - comptime Element: type, - cmd: vk.CommandBuffer, - params: struct { - src: *NeonVkBuffer, - dst: *NeonVkBuffer, - size: u32, // in element count - src_offset: u32 = 0, // in element counts - dst_offset: u32 = 0, // in element counts - }, -) void { - const elementSize = @sizeOf(Element); - var copy = vk.BufferCopy{ - .dst_offset = params.dst_offset * elementSize, - .src_offset = params.src_offset * elementSize, - .size = params.size * elementSize, - }; - vkd.cmdCopyBuffer( - cmd, - params.src.buffer, - params.dst.buffer, - 1, - @as([*]const vk.BufferCopy, @ptrCast(©)), - ); -} +const vk_constants = @import("../vk_constants.zig"); +const vk_api = @import("../vk_api.zig"); +const vkd = vk_api.vkd; +const vki = vk_api.vki; +const vkb = vk_api.vkb; +const vk = @import("vulkan"); + +const graphics = @import("../graphics.zig"); +const NeonVkBuffer = graphics.NeonVkBuffer; + +pub fn copyStagingSlice( + comptime Element: type, + cmd: vk.CommandBuffer, + params: struct { + src: *NeonVkBuffer, + dst: *NeonVkBuffer, + size: u32, // in element count + src_offset: u32 = 0, // in element counts + dst_offset: u32 = 0, // in element counts + }, +) void { + const elementSize = @sizeOf(Element); + var copy = vk.BufferCopy{ + .dst_offset = params.dst_offset * elementSize, + .src_offset = params.src_offset * elementSize, + .size = params.size * elementSize, + }; + vkd.cmdCopyBuffer( + cmd, + params.src.buffer, + params.dst.buffer, + 1, + @as([*]const vk.BufferCopy, @ptrCast(©)), + ); +} diff --git a/engine/graphics/src/vk_renderer_public.zig b/engine/_archive/graphics/src/vk_renderer_public.zig similarity index 96% rename from engine/graphics/src/vk_renderer_public.zig rename to engine/_archive/graphics/src/vk_renderer_public.zig index 45a7984..9cf8c58 100644 --- a/engine/graphics/src/vk_renderer_public.zig +++ b/engine/_archive/graphics/src/vk_renderer_public.zig @@ -1,11 +1,11 @@ -const std = @import("std"); -const core = @import("core"); -const graphics = @import("graphics.zig"); -const PixelBufferRGA8 = @import("PixelBufferRGBA8.zig"); - -pub fn updateTextureFromPixelsSync( - textureName: core.Name, - pixelBuffer: PixelBufferRGA8, -) void { - graphics.getContext().updateTextureFromPixelsSync(textureName, pixelBuffer); -} +const std = @import("std"); +const core = @import("core"); +const graphics = @import("graphics.zig"); +const PixelBufferRGA8 = @import("PixelBufferRGBA8.zig"); + +pub fn updateTextureFromPixelsSync( + textureName: core.Name, + pixelBuffer: PixelBufferRGA8, +) void { + graphics.getContext().updateTextureFromPixelsSync(textureName, pixelBuffer); +} diff --git a/engine/graphics/src/vk_shaders.zig b/engine/_archive/graphics/src/vk_shaders.zig similarity index 93% rename from engine/graphics/src/vk_shaders.zig rename to engine/_archive/graphics/src/vk_shaders.zig index 1f96b34..706e01c 100644 --- a/engine/graphics/src/vk_shaders.zig +++ b/engine/_archive/graphics/src/vk_shaders.zig @@ -1 +1 @@ -// vk_virtual +// vk_virtual diff --git a/engine/graphics/src/vk_transitions.zig b/engine/_archive/graphics/src/vk_transitions.zig similarity index 96% rename from engine/graphics/src/vk_transitions.zig rename to engine/_archive/graphics/src/vk_transitions.zig index 6bd664d..30635d1 100644 --- a/engine/graphics/src/vk_transitions.zig +++ b/engine/_archive/graphics/src/vk_transitions.zig @@ -1,95 +1,95 @@ -// REEEEEEEEEEEEEE - -const std = @import("std"); -const core = @import("core"); -const vk = @import("vulkan"); -const vma = @import("vma"); -const vk_constants = @import("vk_constants.zig"); -const vk_api = @import("vk_api.zig"); -const vkd = vk_api.vkd; - -pub fn transferDst_into_shaderReadOnly( - cmd: vk.CommandBuffer, - image: vk.Image, - mipLevel: u32, - baseArrayLayer: u32, - layerCount: u32, -) void { - if (mipLevel == 0) { - core.engine_logs("mipLevel 0 detected into_shaderReadOnly"); - } - - const range = vk.ImageSubresourceRange{ - .aspect_mask = .{ .color_bit = true }, - .base_mip_level = 0, - .level_count = mipLevel, - .base_array_layer = baseArrayLayer, - .layer_count = layerCount, - }; - - var imageBarrier_toReadable = vk.ImageMemoryBarrier{ - .old_layout = .undefined, - .new_layout = .shader_read_only_optimal, - .image = image, - .subresource_range = range, - .src_access_mask = .{ .transfer_write_bit = true }, - .dst_access_mask = .{ .shader_read_bit = false }, - .src_queue_family_index = 0, - .dst_queue_family_index = 0, - }; - vkd.cmdPipelineBarrier( - cmd, - .{ .transfer_bit = true }, - .{ .fragment_shader_bit = true }, - .{}, - 0, - undefined, - 0, - undefined, - 1, - @ptrCast(&imageBarrier_toReadable), - ); -} - -pub fn into_transferDst( - cmd: vk.CommandBuffer, - image: vk.Image, - mipLevel: u32, - baseArrayLayer: u32, - layerCount: u32, -) void { - if (mipLevel == 0) { - core.engine_logs("mipLevel 0 detected into_transferDst"); - } - const range = vk.ImageSubresourceRange{ - .aspect_mask = .{ .color_bit = true }, - .base_mip_level = 0, - .level_count = mipLevel, - .base_array_layer = baseArrayLayer, - .layer_count = layerCount, - }; - - var imageBarrier_toTransfer = vk.ImageMemoryBarrier{ - .old_layout = .undefined, - .new_layout = .transfer_dst_optimal, - .image = image, - .subresource_range = range, - .src_access_mask = .{}, - .dst_access_mask = .{ .transfer_write_bit = true }, - .src_queue_family_index = 0, - .dst_queue_family_index = 0, - }; - - vkd.cmdPipelineBarrier( - cmd, - .{ .top_of_pipe_bit = true }, - .{ .transfer_bit = true }, - .{}, - 0, - undefined, - 0, - undefined, - 1, - @ptrCast(&imageBarrier_toTransfer), - ); -} +// REEEEEEEEEEEEEE + +const std = @import("std"); +const core = @import("core"); +const vk = @import("vulkan"); +const vma = @import("vma"); +const vk_constants = @import("vk_constants.zig"); +const vk_api = @import("vk_api.zig"); +const vkd = vk_api.vkd; + +pub fn transferDst_into_shaderReadOnly( + cmd: vk.CommandBuffer, + image: vk.Image, + mipLevel: u32, + baseArrayLayer: u32, + layerCount: u32, +) void { + if (mipLevel == 0) { + core.engine_logs("mipLevel 0 detected into_shaderReadOnly"); + } + + const range = vk.ImageSubresourceRange{ + .aspect_mask = .{ .color_bit = true }, + .base_mip_level = 0, + .level_count = mipLevel, + .base_array_layer = baseArrayLayer, + .layer_count = layerCount, + }; + + var imageBarrier_toReadable = vk.ImageMemoryBarrier{ + .old_layout = .undefined, + .new_layout = .shader_read_only_optimal, + .image = image, + .subresource_range = range, + .src_access_mask = .{ .transfer_write_bit = true }, + .dst_access_mask = .{ .shader_read_bit = false }, + .src_queue_family_index = 0, + .dst_queue_family_index = 0, + }; + vkd.cmdPipelineBarrier( + cmd, + .{ .transfer_bit = true }, + .{ .fragment_shader_bit = true }, + .{}, + 0, + undefined, + 0, + undefined, + 1, + @ptrCast(&imageBarrier_toReadable), + ); +} + +pub fn into_transferDst( + cmd: vk.CommandBuffer, + image: vk.Image, + mipLevel: u32, + baseArrayLayer: u32, + layerCount: u32, +) void { + if (mipLevel == 0) { + core.engine_logs("mipLevel 0 detected into_transferDst"); + } + const range = vk.ImageSubresourceRange{ + .aspect_mask = .{ .color_bit = true }, + .base_mip_level = 0, + .level_count = mipLevel, + .base_array_layer = baseArrayLayer, + .layer_count = layerCount, + }; + + var imageBarrier_toTransfer = vk.ImageMemoryBarrier{ + .old_layout = .undefined, + .new_layout = .transfer_dst_optimal, + .image = image, + .subresource_range = range, + .src_access_mask = .{}, + .dst_access_mask = .{ .transfer_write_bit = true }, + .src_queue_family_index = 0, + .dst_queue_family_index = 0, + }; + + vkd.cmdPipelineBarrier( + cmd, + .{ .top_of_pipe_bit = true }, + .{ .transfer_bit = true }, + .{}, + 0, + undefined, + 0, + undefined, + 1, + @ptrCast(&imageBarrier_toTransfer), + ); +} diff --git a/engine/graphics/src/vk_utils.zig b/engine/_archive/graphics/src/vk_utils.zig similarity index 100% rename from engine/graphics/src/vk_utils.zig rename to engine/_archive/graphics/src/vk_utils.zig diff --git a/engine/graphics/tests/testmap.map b/engine/_archive/graphics/tests/testmap.map similarity index 97% rename from engine/graphics/tests/testmap.map rename to engine/_archive/graphics/tests/testmap.map index 883e510..f3f6353 100644 --- a/engine/graphics/tests/testmap.map +++ b/engine/_archive/graphics/tests/testmap.map @@ -1,143 +1,143 @@ -// Game: Deathwish -// Format: Standard -// entity 0 -{ -"classname" "worldspawn" -// brush 0 -{ -( -224 -32 -16 ) ( -224 -31 -16 ) ( -224 -32 -15 ) ProtoFloor 0 -16 0 1 1 -( -224 -32 -16 ) ( -224 -32 -15 ) ( -223 -32 -16 ) ProtoFloor 0 -16 0 1 1 -( -224 -32 -16 ) ( -223 -32 -16 ) ( -224 -31 -16 ) ProtoFloor 0 0 0 1 1 -( -192 32 0 ) ( -192 33 0 ) ( -191 32 0 ) ProtoFloor 0 0 0 1 1 -( -192 32 0 ) ( -191 32 0 ) ( -192 32 1 ) ProtoFloor 0 -16 0 1 1 -( -64 32 0 ) ( -64 32 1 ) ( -64 33 0 ) ProtoFloor 0 -16 0 1 1 -} -// brush 1 -{ -( -576 -160 -32 ) ( -576 -159 -32 ) ( -576 -160 -31 ) ProtoGrass 16 -16 0 1 1 -( 0 -400 -32 ) ( 0 -400 -31 ) ( 1 -400 -32 ) ProtoGrass -16 -16 0 1 1 -( 0 -160 -32 ) ( 1 -160 -32 ) ( 0 -159 -32 ) ProtoGrass -16 -16 0 1 1 -( 48 -144 -16 ) ( 48 -143 -16 ) ( 49 -144 -16 ) ProtoGrass -16 -16 0 1 1 -( 48 224 -16 ) ( 49 224 -16 ) ( 48 224 -15 ) ProtoGrass -16 -16 0 1 1 -( 224 -144 -16 ) ( 224 -144 -15 ) ( 224 -143 -16 ) ProtoGrass 16 -16 0 1 1 -} -// brush 2 -{ -( -48 -144 -32 ) ( -48 -143 -32 ) ( -48 -144 -31 ) ProtoFloor 0 -32 0 1 1 -( -48 -144 -32 ) ( -48 -144 -31 ) ( -47 -144 -32 ) ProtoFloor 0 -32 0 1 1 -( -48 -144 -32 ) ( -47 -144 -32 ) ( -48 -143 -32 ) ProtoFloor 0 0 0 1 1 -( 80 -64 0 ) ( 80 -63 0 ) ( 81 -64 0 ) ProtoFloor 0 0 0 1 1 -( 80 -64 -16 ) ( 81 -64 -16 ) ( 80 -64 -15 ) ProtoFloor 0 -32 0 1 1 -( 80 -64 -16 ) ( 80 -64 -15 ) ( 80 -63 -16 ) ProtoFloor 0 -32 0 1 1 -} -// brush 3 -{ -( -48 -48 -32 ) ( -48 -47 -32 ) ( -48 -48 -31 ) ProtoFloor 32 -32 0 1 1 -( -48 -48 -32 ) ( -48 -48 -31 ) ( -47 -48 -32 ) ProtoFloor 0 -32 0 1 1 -( -48 -48 -32 ) ( -47 -48 -32 ) ( -48 -47 -32 ) ProtoFloor 0 -32 0 1 1 -( 80 32 16 ) ( 80 33 16 ) ( 81 32 16 ) ProtoFloor 0 -32 0 1 1 -( 80 32 -16 ) ( 81 32 -16 ) ( 80 32 -15 ) ProtoFloor 0 -32 0 1 1 -( 80 32 -16 ) ( 80 32 -15 ) ( 80 33 -16 ) ProtoFloor 32 -32 0 1 1 -} -// brush 4 -{ -( -448 -96 -16 ) ( -448 -95 -16 ) ( -448 -96 -15 ) ProtoWallsGrey 0 0 0 1 1 -( -448 -96 -16 ) ( -448 -96 -15 ) ( -447 -96 -16 ) ProtoWallsGrey 0 0 0 1 1 -( -448 -96 -16 ) ( -447 -96 -16 ) ( -448 -95 -16 ) ProtoWallsGrey 0 0 0 1 1 -( -432 80 48 ) ( -432 81 48 ) ( -431 80 48 ) ProtoWallsGrey 0 0 0 1 1 -( -432 80 0 ) ( -431 80 0 ) ( -432 80 1 ) ProtoWallsGrey 0 0 0 1 1 -( -432 80 0 ) ( -432 80 1 ) ( -432 81 0 ) ProtoWallsGrey 0 0 0 1 1 -} -// brush 5 -{ -( -416 -256 -16 ) ( -416 -255 -16 ) ( -416 -256 -15 ) ProtoWallsOrange 0 0 0 1 1 -( -496 -256 -16 ) ( -496 -256 -15 ) ( -495 -256 -16 ) ProtoWallsOrange 0 0 0 1 1 -( -496 -256 -16 ) ( -495 -256 -16 ) ( -496 -255 -16 ) ProtoWallsOrange 0 0 0 1 1 -( -304 -240 96 ) ( -304 -239 96 ) ( -303 -240 96 ) ProtoWallsOrange 0 0 0 1 1 -( -304 -240 0 ) ( -303 -240 0 ) ( -304 -240 1 ) ProtoWallsOrange 0 0 0 1 1 -( -304 -240 0 ) ( -304 -240 1 ) ( -304 -239 0 ) ProtoWallsOrange 0 0 0 1 1 -} -// brush 6 -{ -( -320 -384 -16 ) ( -320 -383 -16 ) ( -320 -384 -15 ) ProtoWallsOrange 0 0 0 1 1 -( -320 -320 -16 ) ( -320 -320 -15 ) ( -319 -320 -16 ) ProtoWallsOrange 0 0 0 1 1 -( -320 -384 -16 ) ( -319 -384 -16 ) ( -320 -383 -16 ) ProtoWallsOrange 0 0 0 1 1 -( -304 -256 96 ) ( -304 -255 96 ) ( -303 -256 96 ) ProtoWallsOrange 0 0 0 1 1 -( -304 -256 0 ) ( -303 -256 0 ) ( -304 -256 1 ) ProtoWallsOrange 0 0 0 1 1 -( -304 -256 0 ) ( -304 -256 1 ) ( -304 -255 0 ) ProtoWallsOrange 0 0 0 1 1 -} -// brush 7 -{ -( -480 -256 80 ) ( -480 -255 80 ) ( -480 -256 81 ) ProtoWallsOrange 0 0 0 1 1 -( -432 -256 80 ) ( -432 -256 81 ) ( -431 -256 80 ) ProtoWallsOrange 0 0 0 1 1 -( -432 -256 64 ) ( -431 -256 64 ) ( -432 -255 64 ) ProtoWallsOrange 0 0 0 1 1 -( -416 -240 96 ) ( -416 -239 96 ) ( -415 -240 96 ) ProtoWallsOrange 0 0 0 1 1 -( -416 -240 96 ) ( -415 -240 96 ) ( -416 -240 97 ) ProtoWallsOrange 0 0 0 1 1 -( -416 -240 96 ) ( -416 -240 97 ) ( -416 -239 96 ) ProtoWallsOrange 0 0 0 1 1 -} -// brush 8 -{ -( -576 -256 -16 ) ( -576 -255 -16 ) ( -576 -256 -15 ) ProtoWallsOrange 0 0 0 1 1 -( -672 -256 -16 ) ( -672 -256 -15 ) ( -671 -256 -16 ) ProtoWallsOrange -16 0 0 1 1 -( -672 -256 -16 ) ( -671 -256 -16 ) ( -672 -255 -16 ) ProtoWallsOrange -16 0 0 1 1 -( -480 -240 96 ) ( -480 -239 96 ) ( -479 -240 96 ) ProtoWallsOrange -16 0 0 1 1 -( -480 -240 0 ) ( -479 -240 0 ) ( -480 -240 1 ) ProtoWallsOrange -16 0 0 1 1 -( -480 -240 0 ) ( -480 -240 1 ) ( -480 -239 0 ) ProtoWallsOrange 0 0 0 1 1 -} -// brush 9 -{ -( -416 -400 -16 ) ( -416 -399 -16 ) ( -416 -400 -15 ) ProtoWallsOrange 16 0 0 1 1 -( -496 -400 -16 ) ( -496 -400 -15 ) ( -495 -400 -16 ) ProtoWallsOrange 0 0 0 1 1 -( -496 -400 -16 ) ( -495 -400 -16 ) ( -496 -399 -16 ) ProtoWallsOrange 0 -16 0 1 1 -( -304 -384 96 ) ( -304 -383 96 ) ( -303 -384 96 ) ProtoWallsOrange 0 -16 0 1 1 -( -304 -384 0 ) ( -303 -384 0 ) ( -304 -384 1 ) ProtoWallsOrange 0 0 0 1 1 -( -304 -384 0 ) ( -304 -384 1 ) ( -304 -383 0 ) ProtoWallsOrange 16 0 0 1 1 -} -// brush 10 -{ -( -320 -384 80 ) ( -320 -383 80 ) ( -320 -384 81 ) ProtoWallsOrange 0 0 0 1 1 -( -320 -384 80 ) ( -320 -384 81 ) ( -319 -384 80 ) ProtoWallsOrange 0 0 0 1 1 -( -320 -384 64 ) ( -319 -384 64 ) ( -320 -383 64 ) ProtoWallsOrange 0 0 0 1 1 -( -288 -352 96 ) ( -288 -351 96 ) ( -287 -352 96 ) ProtoWallsOrange 0 0 0 1 1 -( -288 -320 96 ) ( -287 -320 96 ) ( -288 -320 97 ) ProtoWallsOrange 0 0 0 1 1 -( -304 -352 96 ) ( -304 -352 97 ) ( -304 -351 96 ) ProtoWallsOrange 0 0 0 1 1 -} -// brush 11 -{ -( -208 -304 -16 ) ( -208 -303 -16 ) ( -208 -304 -15 ) ProtoWallsGrey 32 0 0 1 1 -( -208 -304 -16 ) ( -208 -304 -15 ) ( -207 -304 -16 ) ProtoWallsGrey -16 0 0 1 1 -( -208 -304 -16 ) ( -207 -304 -16 ) ( -208 -303 -16 ) ProtoWallsGrey -16 -32 0 1 1 -( -144 -256 80 ) ( -144 -255 80 ) ( -143 -256 80 ) ProtoWallsGrey -16 -32 0 1 1 -( -144 -208 0 ) ( -143 -208 0 ) ( -144 -208 1 ) ProtoWallsGrey -16 0 0 1 1 -( -32 -256 0 ) ( -32 -256 1 ) ( -32 -255 0 ) ProtoWallsGrey 32 0 0 1 1 -} -// brush 12 -{ -( -544 -384 96 ) ( -544 -383 96 ) ( -544 -384 97 ) ProtoWallsGrey 0 0 0 1 1 -( -544 -384 96 ) ( -544 -384 97 ) ( -543 -384 96 ) ProtoWallsGrey 0 0 0 1 1 -( -544 -384 96 ) ( -543 -384 96 ) ( -544 -383 96 ) ProtoWallsGrey 0 0 0 1 1 -( -304 -256 112 ) ( -304 -255 112 ) ( -303 -256 112 ) ProtoWallsGrey 0 0 0 1 1 -( -304 -256 112 ) ( -303 -256 112 ) ( -304 -256 113 ) ProtoWallsGrey 0 0 0 1 1 -( -304 -256 112 ) ( -304 -256 113 ) ( -304 -255 112 ) ProtoWallsGrey 0 0 0 1 1 -} -} -// entity 1 -{ -"classname" "enemy_spawn" -"origin" "-480 64 8" -} -// entity 2 -{ -"classname" "info_player_start" -"origin" "176 -224 8" -} -// entity 3 -{ -"classname" "enemy_spawn" -"origin" "-480 -16 8" -} -// entity 4 -{ -"classname" "enemy_spawn" -"origin" "-352 -288 8" -} +// Game: Deathwish +// Format: Standard +// entity 0 +{ +"classname" "worldspawn" +// brush 0 +{ +( -224 -32 -16 ) ( -224 -31 -16 ) ( -224 -32 -15 ) ProtoFloor 0 -16 0 1 1 +( -224 -32 -16 ) ( -224 -32 -15 ) ( -223 -32 -16 ) ProtoFloor 0 -16 0 1 1 +( -224 -32 -16 ) ( -223 -32 -16 ) ( -224 -31 -16 ) ProtoFloor 0 0 0 1 1 +( -192 32 0 ) ( -192 33 0 ) ( -191 32 0 ) ProtoFloor 0 0 0 1 1 +( -192 32 0 ) ( -191 32 0 ) ( -192 32 1 ) ProtoFloor 0 -16 0 1 1 +( -64 32 0 ) ( -64 32 1 ) ( -64 33 0 ) ProtoFloor 0 -16 0 1 1 +} +// brush 1 +{ +( -576 -160 -32 ) ( -576 -159 -32 ) ( -576 -160 -31 ) ProtoGrass 16 -16 0 1 1 +( 0 -400 -32 ) ( 0 -400 -31 ) ( 1 -400 -32 ) ProtoGrass -16 -16 0 1 1 +( 0 -160 -32 ) ( 1 -160 -32 ) ( 0 -159 -32 ) ProtoGrass -16 -16 0 1 1 +( 48 -144 -16 ) ( 48 -143 -16 ) ( 49 -144 -16 ) ProtoGrass -16 -16 0 1 1 +( 48 224 -16 ) ( 49 224 -16 ) ( 48 224 -15 ) ProtoGrass -16 -16 0 1 1 +( 224 -144 -16 ) ( 224 -144 -15 ) ( 224 -143 -16 ) ProtoGrass 16 -16 0 1 1 +} +// brush 2 +{ +( -48 -144 -32 ) ( -48 -143 -32 ) ( -48 -144 -31 ) ProtoFloor 0 -32 0 1 1 +( -48 -144 -32 ) ( -48 -144 -31 ) ( -47 -144 -32 ) ProtoFloor 0 -32 0 1 1 +( -48 -144 -32 ) ( -47 -144 -32 ) ( -48 -143 -32 ) ProtoFloor 0 0 0 1 1 +( 80 -64 0 ) ( 80 -63 0 ) ( 81 -64 0 ) ProtoFloor 0 0 0 1 1 +( 80 -64 -16 ) ( 81 -64 -16 ) ( 80 -64 -15 ) ProtoFloor 0 -32 0 1 1 +( 80 -64 -16 ) ( 80 -64 -15 ) ( 80 -63 -16 ) ProtoFloor 0 -32 0 1 1 +} +// brush 3 +{ +( -48 -48 -32 ) ( -48 -47 -32 ) ( -48 -48 -31 ) ProtoFloor 32 -32 0 1 1 +( -48 -48 -32 ) ( -48 -48 -31 ) ( -47 -48 -32 ) ProtoFloor 0 -32 0 1 1 +( -48 -48 -32 ) ( -47 -48 -32 ) ( -48 -47 -32 ) ProtoFloor 0 -32 0 1 1 +( 80 32 16 ) ( 80 33 16 ) ( 81 32 16 ) ProtoFloor 0 -32 0 1 1 +( 80 32 -16 ) ( 81 32 -16 ) ( 80 32 -15 ) ProtoFloor 0 -32 0 1 1 +( 80 32 -16 ) ( 80 32 -15 ) ( 80 33 -16 ) ProtoFloor 32 -32 0 1 1 +} +// brush 4 +{ +( -448 -96 -16 ) ( -448 -95 -16 ) ( -448 -96 -15 ) ProtoWallsGrey 0 0 0 1 1 +( -448 -96 -16 ) ( -448 -96 -15 ) ( -447 -96 -16 ) ProtoWallsGrey 0 0 0 1 1 +( -448 -96 -16 ) ( -447 -96 -16 ) ( -448 -95 -16 ) ProtoWallsGrey 0 0 0 1 1 +( -432 80 48 ) ( -432 81 48 ) ( -431 80 48 ) ProtoWallsGrey 0 0 0 1 1 +( -432 80 0 ) ( -431 80 0 ) ( -432 80 1 ) ProtoWallsGrey 0 0 0 1 1 +( -432 80 0 ) ( -432 80 1 ) ( -432 81 0 ) ProtoWallsGrey 0 0 0 1 1 +} +// brush 5 +{ +( -416 -256 -16 ) ( -416 -255 -16 ) ( -416 -256 -15 ) ProtoWallsOrange 0 0 0 1 1 +( -496 -256 -16 ) ( -496 -256 -15 ) ( -495 -256 -16 ) ProtoWallsOrange 0 0 0 1 1 +( -496 -256 -16 ) ( -495 -256 -16 ) ( -496 -255 -16 ) ProtoWallsOrange 0 0 0 1 1 +( -304 -240 96 ) ( -304 -239 96 ) ( -303 -240 96 ) ProtoWallsOrange 0 0 0 1 1 +( -304 -240 0 ) ( -303 -240 0 ) ( -304 -240 1 ) ProtoWallsOrange 0 0 0 1 1 +( -304 -240 0 ) ( -304 -240 1 ) ( -304 -239 0 ) ProtoWallsOrange 0 0 0 1 1 +} +// brush 6 +{ +( -320 -384 -16 ) ( -320 -383 -16 ) ( -320 -384 -15 ) ProtoWallsOrange 0 0 0 1 1 +( -320 -320 -16 ) ( -320 -320 -15 ) ( -319 -320 -16 ) ProtoWallsOrange 0 0 0 1 1 +( -320 -384 -16 ) ( -319 -384 -16 ) ( -320 -383 -16 ) ProtoWallsOrange 0 0 0 1 1 +( -304 -256 96 ) ( -304 -255 96 ) ( -303 -256 96 ) ProtoWallsOrange 0 0 0 1 1 +( -304 -256 0 ) ( -303 -256 0 ) ( -304 -256 1 ) ProtoWallsOrange 0 0 0 1 1 +( -304 -256 0 ) ( -304 -256 1 ) ( -304 -255 0 ) ProtoWallsOrange 0 0 0 1 1 +} +// brush 7 +{ +( -480 -256 80 ) ( -480 -255 80 ) ( -480 -256 81 ) ProtoWallsOrange 0 0 0 1 1 +( -432 -256 80 ) ( -432 -256 81 ) ( -431 -256 80 ) ProtoWallsOrange 0 0 0 1 1 +( -432 -256 64 ) ( -431 -256 64 ) ( -432 -255 64 ) ProtoWallsOrange 0 0 0 1 1 +( -416 -240 96 ) ( -416 -239 96 ) ( -415 -240 96 ) ProtoWallsOrange 0 0 0 1 1 +( -416 -240 96 ) ( -415 -240 96 ) ( -416 -240 97 ) ProtoWallsOrange 0 0 0 1 1 +( -416 -240 96 ) ( -416 -240 97 ) ( -416 -239 96 ) ProtoWallsOrange 0 0 0 1 1 +} +// brush 8 +{ +( -576 -256 -16 ) ( -576 -255 -16 ) ( -576 -256 -15 ) ProtoWallsOrange 0 0 0 1 1 +( -672 -256 -16 ) ( -672 -256 -15 ) ( -671 -256 -16 ) ProtoWallsOrange -16 0 0 1 1 +( -672 -256 -16 ) ( -671 -256 -16 ) ( -672 -255 -16 ) ProtoWallsOrange -16 0 0 1 1 +( -480 -240 96 ) ( -480 -239 96 ) ( -479 -240 96 ) ProtoWallsOrange -16 0 0 1 1 +( -480 -240 0 ) ( -479 -240 0 ) ( -480 -240 1 ) ProtoWallsOrange -16 0 0 1 1 +( -480 -240 0 ) ( -480 -240 1 ) ( -480 -239 0 ) ProtoWallsOrange 0 0 0 1 1 +} +// brush 9 +{ +( -416 -400 -16 ) ( -416 -399 -16 ) ( -416 -400 -15 ) ProtoWallsOrange 16 0 0 1 1 +( -496 -400 -16 ) ( -496 -400 -15 ) ( -495 -400 -16 ) ProtoWallsOrange 0 0 0 1 1 +( -496 -400 -16 ) ( -495 -400 -16 ) ( -496 -399 -16 ) ProtoWallsOrange 0 -16 0 1 1 +( -304 -384 96 ) ( -304 -383 96 ) ( -303 -384 96 ) ProtoWallsOrange 0 -16 0 1 1 +( -304 -384 0 ) ( -303 -384 0 ) ( -304 -384 1 ) ProtoWallsOrange 0 0 0 1 1 +( -304 -384 0 ) ( -304 -384 1 ) ( -304 -383 0 ) ProtoWallsOrange 16 0 0 1 1 +} +// brush 10 +{ +( -320 -384 80 ) ( -320 -383 80 ) ( -320 -384 81 ) ProtoWallsOrange 0 0 0 1 1 +( -320 -384 80 ) ( -320 -384 81 ) ( -319 -384 80 ) ProtoWallsOrange 0 0 0 1 1 +( -320 -384 64 ) ( -319 -384 64 ) ( -320 -383 64 ) ProtoWallsOrange 0 0 0 1 1 +( -288 -352 96 ) ( -288 -351 96 ) ( -287 -352 96 ) ProtoWallsOrange 0 0 0 1 1 +( -288 -320 96 ) ( -287 -320 96 ) ( -288 -320 97 ) ProtoWallsOrange 0 0 0 1 1 +( -304 -352 96 ) ( -304 -352 97 ) ( -304 -351 96 ) ProtoWallsOrange 0 0 0 1 1 +} +// brush 11 +{ +( -208 -304 -16 ) ( -208 -303 -16 ) ( -208 -304 -15 ) ProtoWallsGrey 32 0 0 1 1 +( -208 -304 -16 ) ( -208 -304 -15 ) ( -207 -304 -16 ) ProtoWallsGrey -16 0 0 1 1 +( -208 -304 -16 ) ( -207 -304 -16 ) ( -208 -303 -16 ) ProtoWallsGrey -16 -32 0 1 1 +( -144 -256 80 ) ( -144 -255 80 ) ( -143 -256 80 ) ProtoWallsGrey -16 -32 0 1 1 +( -144 -208 0 ) ( -143 -208 0 ) ( -144 -208 1 ) ProtoWallsGrey -16 0 0 1 1 +( -32 -256 0 ) ( -32 -256 1 ) ( -32 -255 0 ) ProtoWallsGrey 32 0 0 1 1 +} +// brush 12 +{ +( -544 -384 96 ) ( -544 -383 96 ) ( -544 -384 97 ) ProtoWallsGrey 0 0 0 1 1 +( -544 -384 96 ) ( -544 -384 97 ) ( -543 -384 96 ) ProtoWallsGrey 0 0 0 1 1 +( -544 -384 96 ) ( -543 -384 96 ) ( -544 -383 96 ) ProtoWallsGrey 0 0 0 1 1 +( -304 -256 112 ) ( -304 -255 112 ) ( -303 -256 112 ) ProtoWallsGrey 0 0 0 1 1 +( -304 -256 112 ) ( -303 -256 112 ) ( -304 -256 113 ) ProtoWallsGrey 0 0 0 1 1 +( -304 -256 112 ) ( -304 -256 113 ) ( -304 -255 112 ) ProtoWallsGrey 0 0 0 1 1 +} +} +// entity 1 +{ +"classname" "enemy_spawn" +"origin" "-480 64 8" +} +// entity 2 +{ +"classname" "info_player_start" +"origin" "176 -224 8" +} +// entity 3 +{ +"classname" "enemy_spawn" +"origin" "-480 -16 8" +} +// entity 4 +{ +"classname" "enemy_spawn" +"origin" "-352 -288 8" +} diff --git a/engine/graphics/tests/tests.zig b/engine/_archive/graphics/tests/tests.zig similarity index 97% rename from engine/graphics/tests/tests.zig rename to engine/_archive/graphics/tests/tests.zig index 4aff527..4d95346 100644 --- a/engine/graphics/tests/tests.zig +++ b/engine/_archive/graphics/tests/tests.zig @@ -1,46 +1,46 @@ -const std = @import("std"); -const graphics = @import("graphics"); -const core = @import("core"); -const platform = @import("platform"); -const QuakeMap = graphics.QuakeMap; - -test "simple_integration" { - // this doesn't really do anything other than just a simple compile check - std.debug.print("sizeof NeonVkContext = {d}\n", .{@sizeOf(graphics.NeonVkContext)}); - std.debug.print("sizeof triangle_mesh_vert.ObjectData = {d}\n", .{@sizeOf(graphics.vk_renderer.triangle_mesh_vert.ObjectData)}); -} - -test "renderthread queue" { - const allocator = std.testing.allocator; - try core.start_module(.{}, .{}, allocator); - defer core.shutdown_module(allocator); -} - -test "quake map loading" { - // const TestMap = @embedFile("testmap.map"); - - const testmapFile = - \\{ - \\"spawnflags" "0" - \\"classname" "worldspawn" - \\"wad" "E:\q1maps\Q.wad" - \\{ - \\( 256 64 16 ) ( 256 64 0 ) ( 256 0 16 ) mmetal1_2 0 0 0 1 1 - \\( 0 0 0 ) ( 0 64 0 ) ( 0 0 16 ) mmetal1_2 0 0 0 1 1 - \\( 64 256 16 ) ( 0 256 16 ) ( 64 256 0 ) mmetal1_2 0 0 0 1 1 - \\( 0 0 0 ) ( 0 0 16 ) ( 64 0 0 ) mmetal1_2 0 0 0 1 1 - \\( 64 64 0 ) ( 64 0 0 ) ( 0 64 0 ) mmetal1_2 0 0 0 1 1 - \\( 0 0 -64 ) ( 64 0 -64 ) ( 0 64 -64 ) mmetal1_2 0 0 0 1 1 - \\} - \\} - \\{ - \\"spawnflags" "0" - \\"classname" "info_player_start" - \\"origin" "32 32 24" - \\} - ; - - var err: QuakeMap.ErrorInfo = undefined; - var map = try QuakeMap.read(std.testing.allocator, testmapFile, &err); - defer map.deinit(); -} +const std = @import("std"); +const graphics = @import("graphics"); +const core = @import("core"); +const platform = @import("platform"); +const QuakeMap = graphics.QuakeMap; + +test "simple_integration" { + // this doesn't really do anything other than just a simple compile check + std.debug.print("sizeof NeonVkContext = {d}\n", .{@sizeOf(graphics.NeonVkContext)}); + std.debug.print("sizeof triangle_mesh_vert.ObjectData = {d}\n", .{@sizeOf(graphics.vk_renderer.triangle_mesh_vert.ObjectData)}); +} + +test "renderthread queue" { + const allocator = std.testing.allocator; + try core.start_module(.{}, .{}, allocator); + defer core.shutdown_module(allocator); +} + +test "quake map loading" { + // const TestMap = @embedFile("testmap.map"); + + const testmapFile = + \\{ + \\"spawnflags" "0" + \\"classname" "worldspawn" + \\"wad" "E:\q1maps\Q.wad" + \\{ + \\( 256 64 16 ) ( 256 64 0 ) ( 256 0 16 ) mmetal1_2 0 0 0 1 1 + \\( 0 0 0 ) ( 0 64 0 ) ( 0 0 16 ) mmetal1_2 0 0 0 1 1 + \\( 64 256 16 ) ( 0 256 16 ) ( 64 256 0 ) mmetal1_2 0 0 0 1 1 + \\( 0 0 0 ) ( 0 0 16 ) ( 64 0 0 ) mmetal1_2 0 0 0 1 1 + \\( 64 64 0 ) ( 64 0 0 ) ( 0 64 0 ) mmetal1_2 0 0 0 1 1 + \\( 0 0 -64 ) ( 64 0 -64 ) ( 0 64 -64 ) mmetal1_2 0 0 0 1 1 + \\} + \\} + \\{ + \\"spawnflags" "0" + \\"classname" "info_player_start" + \\"origin" "32 32 24" + \\} + ; + + var err: QuakeMap.ErrorInfo = undefined; + var map = try QuakeMap.read(std.testing.allocator, testmapFile, &err); + defer map.deinit(); +} diff --git a/engine/_archive/readme.txt b/engine/_archive/readme.txt new file mode 100644 index 0000000..830b018 --- /dev/null +++ b/engine/_archive/readme.txt @@ -0,0 +1,2 @@ +plunder these ones for features to +implement in rend diff --git a/engine/ui/build.zig b/engine/_archive/ui/build.zig similarity index 100% rename from engine/ui/build.zig rename to engine/_archive/ui/build.zig diff --git a/engine/ui/build.zig.zon b/engine/_archive/ui/build.zig.zon similarity index 96% rename from engine/ui/build.zig.zon rename to engine/_archive/ui/build.zig.zon index 1b00f3f..14fe806 100644 --- a/engine/ui/build.zig.zon +++ b/engine/_archive/ui/build.zig.zon @@ -1,17 +1,17 @@ -.{ - .name = "ui", - .version = "0.0.0", - .dependencies = .{ - .vulkan = .{ .path = "../../lib/vulkan" }, - .SpirvReflect = .{ .path = "../../lib/spirv-reflect-zig" }, - - .papyrus = .{ .path = "../papyrus" }, - .assets = .{ .path = "../assets" }, - .platform = .{ .path = "../platform" }, - .core = .{ .path = "../core" }, - .graphics = .{ .path = "../graphics" }, - }, - .paths = .{ - "", - }, -} +.{ + .name = "ui", + .version = "0.0.0", + .dependencies = .{ + .vulkan = .{ .path = "../../lib/vulkan" }, + .SpirvReflect = .{ .path = "../../lib/spirv-reflect-zig" }, + + .papyrus = .{ .path = "../papyrus" }, + .assets = .{ .path = "../assets" }, + .platform = .{ .path = "../platform" }, + .core = .{ .path = "../core" }, + .graphics = .{ .path = "../graphics" }, + }, + .paths = .{ + "", + }, +} diff --git a/engine/ui/shaders/FontSDF.frag b/engine/_archive/ui/shaders/FontSDF.frag similarity index 96% rename from engine/ui/shaders/FontSDF.frag rename to engine/_archive/ui/shaders/FontSDF.frag index e97ca00..4aad1f7 100644 --- a/engine/ui/shaders/FontSDF.frag +++ b/engine/_archive/ui/shaders/FontSDF.frag @@ -1,69 +1,69 @@ -#version 460 - -layout (location = 0) in vec4 color; -layout (location = 1) in vec2 texCoord; -layout (location = 2) flat in int instanceId; -layout (location = 3) in vec2 pixelPosition; - -layout (location = 0) out vec4 outFragColor; - -layout (set = 1, binding = 0) uniform sampler2D tex; - -#include "FontSDFShared.glsl" -#include "FragmentHelpers.glsl" - -void main() { - vec4 tex = texture(tex, texCoord); - - uint isSdf = fontBuffer.fontInfo[instanceId].isSdf; - vec2 position = fontBuffer.fontInfo[instanceId].position; - vec2 size = fontBuffer.fontInfo[instanceId].size; - - if(!scissor(pixelPosition, position, size)) - { - discard; - } - - if(isSdf == 1) - { - float dist = tex.r; - float width = fwidth(dist); - vec4 textColor = clamp(color, 0.0, 1.0); - float outerEdge = 1.0f - (120.0f / 255.0f); - - float alpha = contour(dist, outerEdge, width); - - float dscale = 0.354; // half of 1/sqrt2; you can play with this - vec2 uv = texCoord.xy; - vec2 duv = dscale * (dFdx(uv) + dFdy(uv)); - vec4 box = vec4(uv - duv, uv + duv); - - float asum = getSample(box.xy, outerEdge, width) - + getSample(box.zw, outerEdge, width) - + getSample(box.xw, outerEdge, width) - + getSample(box.zy, outerEdge, width); - - // weighted average, with 4 extra points having 0.5 weight each, - // so 1 + 0.5*4 = 3 is the divisor - alpha = (alpha + 0.5 * asum) / 3.0; - - textColor = vec4(color.xyz, alpha);//textColor.* alpha); - textColor.xyz = pow(textColor.xyz, vec3(2.2)); // gamma correction - - // Premultiplied alpha output. - outFragColor = textColor; - } - else { - float alpha = 1.0; - float gray = dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); - outFragColor = vec4(color.xyz , pow(tex.x / gray, 1/(2.2)) );//textColor.* alpha); - //outFragColor = vec4(1.0, 0.0, 0.0, 1.0); - } - - /* debug test. - if(!rect(pixelPosition, position, size)) - { - outFragColor = vec4(1.0, 0.0, 0.0, 1.0); - } - */ -} +#version 460 + +layout (location = 0) in vec4 color; +layout (location = 1) in vec2 texCoord; +layout (location = 2) flat in int instanceId; +layout (location = 3) in vec2 pixelPosition; + +layout (location = 0) out vec4 outFragColor; + +layout (set = 1, binding = 0) uniform sampler2D tex; + +#include "FontSDFShared.glsl" +#include "FragmentHelpers.glsl" + +void main() { + vec4 tex = texture(tex, texCoord); + + uint isSdf = fontBuffer.fontInfo[instanceId].isSdf; + vec2 position = fontBuffer.fontInfo[instanceId].position; + vec2 size = fontBuffer.fontInfo[instanceId].size; + + if(!scissor(pixelPosition, position, size)) + { + discard; + } + + if(isSdf == 1) + { + float dist = tex.r; + float width = fwidth(dist); + vec4 textColor = clamp(color, 0.0, 1.0); + float outerEdge = 1.0f - (120.0f / 255.0f); + + float alpha = contour(dist, outerEdge, width); + + float dscale = 0.354; // half of 1/sqrt2; you can play with this + vec2 uv = texCoord.xy; + vec2 duv = dscale * (dFdx(uv) + dFdy(uv)); + vec4 box = vec4(uv - duv, uv + duv); + + float asum = getSample(box.xy, outerEdge, width) + + getSample(box.zw, outerEdge, width) + + getSample(box.xw, outerEdge, width) + + getSample(box.zy, outerEdge, width); + + // weighted average, with 4 extra points having 0.5 weight each, + // so 1 + 0.5*4 = 3 is the divisor + alpha = (alpha + 0.5 * asum) / 3.0; + + textColor = vec4(color.xyz, alpha);//textColor.* alpha); + textColor.xyz = pow(textColor.xyz, vec3(2.2)); // gamma correction + + // Premultiplied alpha output. + outFragColor = textColor; + } + else { + float alpha = 1.0; + float gray = dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); + outFragColor = vec4(color.xyz , pow(tex.x / gray, 1/(2.2)) );//textColor.* alpha); + //outFragColor = vec4(1.0, 0.0, 0.0, 1.0); + } + + /* debug test. + if(!rect(pixelPosition, position, size)) + { + outFragColor = vec4(1.0, 0.0, 0.0, 1.0); + } + */ +} diff --git a/engine/ui/shaders/FontSDF.vert b/engine/_archive/ui/shaders/FontSDF.vert similarity index 96% rename from engine/ui/shaders/FontSDF.vert rename to engine/_archive/ui/shaders/FontSDF.vert index 90c8a0c..2793608 100644 --- a/engine/ui/shaders/FontSDF.vert +++ b/engine/_archive/ui/shaders/FontSDF.vert @@ -1,28 +1,28 @@ -#version 460 - -layout(location = 0) in vec3 texPosition; -layout(location = 1) in vec3 texNormal; -layout(location = 2) in vec4 texColor; -layout(location = 3) in vec2 texCoord; - -layout (location = 0) out vec4 fragColor; -layout (location = 1) out vec2 texCoords; -layout (location = 2) out int instanceId; -layout (location = 3) out vec2 pixelPosition; - -#include "FontSDFShared.glsl" - -void main() -{ - vec2 pos = fontBuffer.fontInfo[gl_BaseInstance].position; - vec2 size = fontBuffer.fontInfo[gl_BaseInstance].size; - - vec2 t = texPosition.xy + pos; - pixelPosition = t; - //gl_Position = vec4(( (texPosition.xy + pos) / PushConstants.extent) * 2 + vec2(-1.0f, -1.0f), texPosition.z, 1.0); - gl_Position = vec4((t / PushConstants.extent) * 2 + vec2(-1.0f, -1.0f), texPosition.z, 1.0); - - texCoords = texCoord; - fragColor = texColor; - instanceId = gl_BaseInstance; -} +#version 460 + +layout(location = 0) in vec3 texPosition; +layout(location = 1) in vec3 texNormal; +layout(location = 2) in vec4 texColor; +layout(location = 3) in vec2 texCoord; + +layout (location = 0) out vec4 fragColor; +layout (location = 1) out vec2 texCoords; +layout (location = 2) out int instanceId; +layout (location = 3) out vec2 pixelPosition; + +#include "FontSDFShared.glsl" + +void main() +{ + vec2 pos = fontBuffer.fontInfo[gl_BaseInstance].position; + vec2 size = fontBuffer.fontInfo[gl_BaseInstance].size; + + vec2 t = texPosition.xy + pos; + pixelPosition = t; + //gl_Position = vec4(( (texPosition.xy + pos) / PushConstants.extent) * 2 + vec2(-1.0f, -1.0f), texPosition.z, 1.0); + gl_Position = vec4((t / PushConstants.extent) * 2 + vec2(-1.0f, -1.0f), texPosition.z, 1.0); + + texCoords = texCoord; + fragColor = texColor; + instanceId = gl_BaseInstance; +} diff --git a/engine/ui/shaders/FontSDFShared.glsl b/engine/_archive/ui/shaders/FontSDFShared.glsl similarity index 100% rename from engine/ui/shaders/FontSDFShared.glsl rename to engine/_archive/ui/shaders/FontSDFShared.glsl diff --git a/engine/ui/shaders/FragmentHelpers.glsl b/engine/_archive/ui/shaders/FragmentHelpers.glsl similarity index 100% rename from engine/ui/shaders/FragmentHelpers.glsl rename to engine/_archive/ui/shaders/FragmentHelpers.glsl diff --git a/engine/ui/shaders/PapyrusRect.frag b/engine/_archive/ui/shaders/PapyrusRect.frag similarity index 96% rename from engine/ui/shaders/PapyrusRect.frag rename to engine/_archive/ui/shaders/PapyrusRect.frag index 05588a4..f621145 100644 --- a/engine/ui/shaders/PapyrusRect.frag +++ b/engine/_archive/ui/shaders/PapyrusRect.frag @@ -1,111 +1,111 @@ -#version 460 - -//shader input -layout (location = 0) in vec4 fragColor; -layout (location = 1) in vec2 texCoord; -layout (location = 2) in vec2 panelPixelPosition; // relative to the topleft -layout (location = 3) flat in int instanceId; - -layout (location = 0) out vec4 outFragColor; - -layout (set = 1, binding = 0) uniform sampler2D tex; - - -#include "PapyrusRectShared.glsl" -#include "FragmentHelpers.glsl" - -void main() -{ - vec2 imageSize = objectBuffer.objects[instanceId].imageSize; - vec4 rounding = objectBuffer.objects[instanceId].rounding; - vec4 borderColor = objectBuffer.objects[instanceId].borderColor; - float borderWidth = objectBuffer.objects[instanceId].borderWidth; - float alpha = fragColor.w; - uint usesImage = objectBuffer.objects[instanceId].flags & 1; - - // check to discard topleft - vec3 color = fragColor.xyz; - if(panelPixelPosition.x < rounding.x && panelPixelPosition.y < rounding.y) - { - float dist = distance(panelPixelPosition, vec2(rounding.x, rounding.x)); - if(dist > (rounding.x )) - { - discard; - } - else if(somewhatEqual(dist, rounding.x)) - { - color = borderColor.xyz; - alpha = borderColor.w; - } - } - - // top right - if(panelPixelPosition.x > imageSize.x - rounding.y && panelPixelPosition.y < rounding.y ) - { - float dist = distance(panelPixelPosition, vec2(imageSize.x - rounding.y, rounding.y)); - if(dist > rounding.y) - { - discard; - } - else if(somewhatEqual(dist, rounding.y)) - { - color = borderColor.xyz; - alpha = borderColor.w; - } - } - - // bottom Left - if(panelPixelPosition.x < rounding.x && panelPixelPosition.y > imageSize.y - rounding.y) - { - float dist = distance(panelPixelPosition, vec2(rounding.x, imageSize.y - rounding.y)); - if(dist > rounding.y) - { - discard; - } - else if(somewhatEqual(dist, rounding.y)) - { - color = borderColor.xyz; - alpha = borderColor.w; - } - } - - // bottom right - if(panelPixelPosition.x > imageSize.x - rounding.a && imageSize.y - panelPixelPosition.y < rounding.a ) - { - float dist = distance(panelPixelPosition, vec2(imageSize.x - rounding.x, imageSize.y - rounding.y)); - if(dist > rounding.y) - { - discard; - } - else if(somewhatEqual(dist, rounding.y)) - { - color = borderColor.xyz; - alpha = borderColor.w; - } - } - - // check to discard topright - - // determine border colors - - if( panelPixelPosition.x < borderWidth - || panelPixelPosition.x > imageSize.x - borderWidth - || panelPixelPosition.y < borderWidth - || panelPixelPosition.y > imageSize.y - borderWidth - ) - { - color = borderColor.xyz; - alpha = borderColor.w; - } - - // scale the color - if(usesImage > 0) - { - vec4 sampledColor = texture(tex, vec2(texCoord.x, 1 - texCoord.y)); - outFragColor = vec4(sampledColor.rgb, sampledColor.a * alpha); - } - else - { - outFragColor = vec4(pow(color, vec3(2.2)), alpha); - } -} +#version 460 + +//shader input +layout (location = 0) in vec4 fragColor; +layout (location = 1) in vec2 texCoord; +layout (location = 2) in vec2 panelPixelPosition; // relative to the topleft +layout (location = 3) flat in int instanceId; + +layout (location = 0) out vec4 outFragColor; + +layout (set = 1, binding = 0) uniform sampler2D tex; + + +#include "PapyrusRectShared.glsl" +#include "FragmentHelpers.glsl" + +void main() +{ + vec2 imageSize = objectBuffer.objects[instanceId].imageSize; + vec4 rounding = objectBuffer.objects[instanceId].rounding; + vec4 borderColor = objectBuffer.objects[instanceId].borderColor; + float borderWidth = objectBuffer.objects[instanceId].borderWidth; + float alpha = fragColor.w; + uint usesImage = objectBuffer.objects[instanceId].flags & 1; + + // check to discard topleft + vec3 color = fragColor.xyz; + if(panelPixelPosition.x < rounding.x && panelPixelPosition.y < rounding.y) + { + float dist = distance(panelPixelPosition, vec2(rounding.x, rounding.x)); + if(dist > (rounding.x )) + { + discard; + } + else if(somewhatEqual(dist, rounding.x)) + { + color = borderColor.xyz; + alpha = borderColor.w; + } + } + + // top right + if(panelPixelPosition.x > imageSize.x - rounding.y && panelPixelPosition.y < rounding.y ) + { + float dist = distance(panelPixelPosition, vec2(imageSize.x - rounding.y, rounding.y)); + if(dist > rounding.y) + { + discard; + } + else if(somewhatEqual(dist, rounding.y)) + { + color = borderColor.xyz; + alpha = borderColor.w; + } + } + + // bottom Left + if(panelPixelPosition.x < rounding.x && panelPixelPosition.y > imageSize.y - rounding.y) + { + float dist = distance(panelPixelPosition, vec2(rounding.x, imageSize.y - rounding.y)); + if(dist > rounding.y) + { + discard; + } + else if(somewhatEqual(dist, rounding.y)) + { + color = borderColor.xyz; + alpha = borderColor.w; + } + } + + // bottom right + if(panelPixelPosition.x > imageSize.x - rounding.a && imageSize.y - panelPixelPosition.y < rounding.a ) + { + float dist = distance(panelPixelPosition, vec2(imageSize.x - rounding.x, imageSize.y - rounding.y)); + if(dist > rounding.y) + { + discard; + } + else if(somewhatEqual(dist, rounding.y)) + { + color = borderColor.xyz; + alpha = borderColor.w; + } + } + + // check to discard topright + + // determine border colors + + if( panelPixelPosition.x < borderWidth + || panelPixelPosition.x > imageSize.x - borderWidth + || panelPixelPosition.y < borderWidth + || panelPixelPosition.y > imageSize.y - borderWidth + ) + { + color = borderColor.xyz; + alpha = borderColor.w; + } + + // scale the color + if(usesImage > 0) + { + vec4 sampledColor = texture(tex, vec2(texCoord.x, 1 - texCoord.y)); + outFragColor = vec4(sampledColor.rgb, sampledColor.a * alpha); + } + else + { + outFragColor = vec4(pow(color, vec3(2.2)), alpha); + } +} diff --git a/engine/ui/shaders/PapyrusRect.vert b/engine/_archive/ui/shaders/PapyrusRect.vert similarity index 97% rename from engine/ui/shaders/PapyrusRect.vert rename to engine/_archive/ui/shaders/PapyrusRect.vert index 6f0565c..965253a 100644 --- a/engine/ui/shaders/PapyrusRect.vert +++ b/engine/_archive/ui/shaders/PapyrusRect.vert @@ -1,46 +1,46 @@ -//we will be using glsl version 4.5 syntax -#version 460 - -layout (location = 0) in vec3 vPosition; -layout (location = 1) in vec3 vNormal; -layout (location = 2) in vec4 vColor; -layout (location = 3) in vec2 vTexCoord; - -layout (location = 0) out vec4 outColor; -layout (location = 1) out vec2 texCoord; -layout (location = 2) out vec2 panelPixelPosition; -layout (location = 3) out int instanceId; - -#include "PapyrusRectShared.glsl" - - -void main() -{ - vec2 imagePosition = objectBuffer.objects[gl_BaseInstance].imagePosition; - vec2 imageSize = objectBuffer.objects[gl_BaseInstance].imageSize; - vec2 anchor = objectBuffer.objects[gl_BaseInstance].anchorPoint; - vec2 scale = objectBuffer.objects[gl_BaseInstance].scale; - float alpha = objectBuffer.objects[gl_BaseInstance].alpha; - vec4 baseColor = objectBuffer.objects[gl_BaseInstance].baseColor; - - vec2 finalSize = (imageSize / PushConstants.extent); - //float zLevel = objectBuffer.objects[gl_BaseInstance].zLevel; - - vec2 finalPos = ((imagePosition / PushConstants.extent) * 2 - 1) - anchor * finalSize * scale; - - outColor = baseColor; - //outColor = vec3(vColor.x, vColor.y, vColor.z); - vec4 fp = vec4( - finalPos.x + ( vPosition.x * finalSize.x * scale.x), - finalPos.y + (-vPosition.y * finalSize.y * scale.y), - vPosition.z, 1.0 - ); - //1.0); - gl_Position = fp; - //gl_Position = vec4( ((position.x) - 1.3) * 0.3 * 1.3, (-position.y + 0.05) * 1.3, position.z, 1.0); // + vec4(imagePosition, 0.0f, 1.0f); - texCoord = vec2(1 - vTexCoord.x, vTexCoord.y); - panelPixelPosition = (vPosition.xy - anchor) / 2 * imageSize; - panelPixelPosition.y = imageSize.y - panelPixelPosition.y; - instanceId = gl_BaseInstance; -} - +//we will be using glsl version 4.5 syntax +#version 460 + +layout (location = 0) in vec3 vPosition; +layout (location = 1) in vec3 vNormal; +layout (location = 2) in vec4 vColor; +layout (location = 3) in vec2 vTexCoord; + +layout (location = 0) out vec4 outColor; +layout (location = 1) out vec2 texCoord; +layout (location = 2) out vec2 panelPixelPosition; +layout (location = 3) out int instanceId; + +#include "PapyrusRectShared.glsl" + + +void main() +{ + vec2 imagePosition = objectBuffer.objects[gl_BaseInstance].imagePosition; + vec2 imageSize = objectBuffer.objects[gl_BaseInstance].imageSize; + vec2 anchor = objectBuffer.objects[gl_BaseInstance].anchorPoint; + vec2 scale = objectBuffer.objects[gl_BaseInstance].scale; + float alpha = objectBuffer.objects[gl_BaseInstance].alpha; + vec4 baseColor = objectBuffer.objects[gl_BaseInstance].baseColor; + + vec2 finalSize = (imageSize / PushConstants.extent); + //float zLevel = objectBuffer.objects[gl_BaseInstance].zLevel; + + vec2 finalPos = ((imagePosition / PushConstants.extent) * 2 - 1) - anchor * finalSize * scale; + + outColor = baseColor; + //outColor = vec3(vColor.x, vColor.y, vColor.z); + vec4 fp = vec4( + finalPos.x + ( vPosition.x * finalSize.x * scale.x), + finalPos.y + (-vPosition.y * finalSize.y * scale.y), + vPosition.z, 1.0 + ); + //1.0); + gl_Position = fp; + //gl_Position = vec4( ((position.x) - 1.3) * 0.3 * 1.3, (-position.y + 0.05) * 1.3, position.z, 1.0); // + vec4(imagePosition, 0.0f, 1.0f); + texCoord = vec2(1 - vTexCoord.x, vTexCoord.y); + panelPixelPosition = (vPosition.xy - anchor) / 2 * imageSize; + panelPixelPosition.y = imageSize.y - panelPixelPosition.y; + instanceId = gl_BaseInstance; +} + diff --git a/engine/ui/shaders/PapyrusRectShared.glsl b/engine/_archive/ui/shaders/PapyrusRectShared.glsl similarity index 100% rename from engine/ui/shaders/PapyrusRectShared.glsl rename to engine/_archive/ui/shaders/PapyrusRectShared.glsl diff --git a/engine/ui/src/PapyrusIntegration.zig b/engine/_archive/ui/src/PapyrusIntegration.zig similarity index 100% rename from engine/ui/src/PapyrusIntegration.zig rename to engine/_archive/ui/src/PapyrusIntegration.zig diff --git a/engine/ui/src/VkPapyrusRenderCommand.zig b/engine/_archive/ui/src/VkPapyrusRenderCommand.zig similarity index 95% rename from engine/ui/src/VkPapyrusRenderCommand.zig rename to engine/_archive/ui/src/VkPapyrusRenderCommand.zig index dc99791..51eff81 100644 --- a/engine/ui/src/VkPapyrusRenderCommand.zig +++ b/engine/_archive/ui/src/VkPapyrusRenderCommand.zig @@ -1,14 +1,14 @@ -const std = @import("std"); -const vk = @import("vulkan"); - -pub const VkCommand = union(enum(u8)) { - image: struct { - index: u32, - imageSet: ?vk.DescriptorSet, - }, - text: struct { - index: u32, - small: bool, - ssbo: u32, - }, -}; +const std = @import("std"); +const vk = @import("vulkan"); + +pub const VkCommand = union(enum(u8)) { + image: struct { + index: u32, + imageSet: ?vk.DescriptorSet, + }, + text: struct { + index: u32, + small: bool, + ssbo: u32, + }, +}; diff --git a/engine/ui/src/text_render.zig b/engine/_archive/ui/src/text_render.zig similarity index 100% rename from engine/ui/src/text_render.zig rename to engine/_archive/ui/src/text_render.zig diff --git a/engine/ui/src/ui.zig b/engine/_archive/ui/src/ui.zig similarity index 96% rename from engine/ui/src/ui.zig rename to engine/_archive/ui/src/ui.zig index 1baab9a..0dac6a9 100644 --- a/engine/ui/src/ui.zig +++ b/engine/_archive/ui/src/ui.zig @@ -1,46 +1,46 @@ -const std = @import("std"); -const core = @import("core"); -const graphics = @import("graphics"); -const memory = core.MemoryTracker; - -pub const papyrus = @import("papyrus"); -pub const HandlerError = papyrus.HandlerError; -pub const NodeHandle = papyrus.NodeHandle; -pub const LocText = papyrus.LocText; -pub const PressedType = papyrus.PressedType; -pub const PapyrusSystem = @import("PapyrusIntegration.zig"); - -var gPapyrus: *PapyrusSystem = undefined; - -pub const Module: core.ModuleDescription = .{ - .name = "ui", - .enabledByDefault = true, -}; - -pub fn getSystem() *PapyrusSystem { - return gPapyrus; -} - -pub fn getContext() *papyrus.Context { - return gPapyrus.papyrusCtx; -} - -pub fn start_module(comptime spec: anytype, args: anytype, allocator: std.mem.Allocator) !void { - _ = args; - _ = spec; - _ = allocator; - - // no initialization - if (core.isUtility()) { - return; - } - - gPapyrus = try core.gEngine.createObject(PapyrusSystem, .{ .can_tick = true }); - try gPapyrus.setup(graphics.getContext()); - core.engine_logs("ui start_module"); - memory.MTPrintStatsDelta(); -} - -pub fn shutdown_module(allocator: std.mem.Allocator) void { - _ = allocator; -} +const std = @import("std"); +const core = @import("core"); +const graphics = @import("graphics"); +const memory = core.MemoryTracker; + +pub const papyrus = @import("papyrus"); +pub const HandlerError = papyrus.HandlerError; +pub const NodeHandle = papyrus.NodeHandle; +pub const LocText = papyrus.LocText; +pub const PressedType = papyrus.PressedType; +pub const PapyrusSystem = @import("PapyrusIntegration.zig"); + +var gPapyrus: *PapyrusSystem = undefined; + +pub const Module: core.ModuleDescription = .{ + .name = "ui", + .enabledByDefault = true, +}; + +pub fn getSystem() *PapyrusSystem { + return gPapyrus; +} + +pub fn getContext() *papyrus.Context { + return gPapyrus.papyrusCtx; +} + +pub fn start_module(comptime spec: anytype, args: anytype, allocator: std.mem.Allocator) !void { + _ = args; + _ = spec; + _ = allocator; + + // no initialization + if (core.isUtility()) { + return; + } + + gPapyrus = try core.gEngine.createObject(PapyrusSystem, .{ .can_tick = true }); + try gPapyrus.setup(graphics.getContext()); + core.engine_logs("ui start_module"); + memory.MTPrintStatsDelta(); +} + +pub fn shutdown_module(allocator: std.mem.Allocator) void { + _ = allocator; +} diff --git a/engine/ui/tests/tests.zig b/engine/_archive/ui/tests/tests.zig similarity index 100% rename from engine/ui/tests/tests.zig rename to engine/_archive/ui/tests/tests.zig diff --git a/engine/vkImgui/build.zig b/engine/_archive/vkImgui/build.zig similarity index 96% rename from engine/vkImgui/build.zig rename to engine/_archive/vkImgui/build.zig index 9fcf5ae..1f11b03 100644 --- a/engine/vkImgui/build.zig +++ b/engine/_archive/vkImgui/build.zig @@ -1,86 +1,86 @@ -const std = @import("std"); - -// very tiny, not intended to build anything just to run tests linked with libc -pub fn build(b: *std.Build) void { - const target = b.standardTargetOptions(.{}); - const optimize = b.standardOptimizeOption(.{}); - - const mod = b.addModule("vkImgui", .{ - .target = target, - .optimize = optimize, - .link_libc = true, - .root_source_file = b.path("src/vkImgui.zig"), - }); - - mod.addIncludePath(b.path("cimgui")); - mod.addIncludePath(b.path("cimplot")); - mod.addIncludePath(b.path("cimgui/imgui")); - mod.addIncludePath(b.path("cimgui/imgui/backends")); - - const cimgui = b.addStaticLibrary(.{ - .name = "cimgui", - .target = target, - .optimize = optimize, - }); - cimgui.linkLibC(); - if (target.result.abi != .msvc) - cimgui.linkLibCpp(); - cimgui.addIncludePath(b.path("cimgui")); - cimgui.addIncludePath(b.path("cimplot")); - cimgui.addIncludePath(b.path("cimgui/imgui")); - cimgui.addIncludePath(b.path("cimgui/imgui/backends")); - - cimgui.addCSourceFiles(.{ - .root = b.path("cimgui/imgui"), - .files = &[_][]const u8{ - "cimgui.cpp", - "cimgui_compat.cpp", - "imgui.cpp", - "imgui_demo.cpp", - "imgui_draw.cpp", - "imgui_tables.cpp", - "imgui_widgets.cpp", - "backends/imgui_impl_vulkan.cpp", - "backends/imgui_impl_glfw.cpp", - }, - }); - - cimgui.addCSourceFiles(.{ - .root = b.path("cimplot"), - .files = &[_][]const u8{ - "cimplot.cpp", - "implot/implot.cpp", - "implot/implot_demo.cpp", - "implot/implot_items.cpp", - }, - }); - - const depList = [_][]const u8{ - "core", - "graphics", - "platform", - "vulkan", - }; - - for (depList) |depName| { - const dep = b.dependency(depName, .{ .target = target, .optimize = optimize }); - const depMod = dep.module(depName); - mod.addImport(depName, depMod); - } - - mod.linkLibrary(cimgui); - - // I could've made cimgui a seperate lib, - // I can seperate it out later if needed. - const test_step = b.step("test", "run unit tests for ui"); - const tests = b.addTest(.{ - .target = target, - .optimize = optimize, - .root_source_file = b.path("tests/tests.zig"), - }); - - tests.root_module.addImport("vkImgui", mod); - const runArtifact = b.addRunArtifact(tests); - test_step.dependOn(&runArtifact.step); - b.installArtifact(tests); -} +const std = @import("std"); + +// very tiny, not intended to build anything just to run tests linked with libc +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const mod = b.addModule("vkImgui", .{ + .target = target, + .optimize = optimize, + .link_libc = true, + .root_source_file = b.path("src/vkImgui.zig"), + }); + + mod.addIncludePath(b.path("cimgui")); + mod.addIncludePath(b.path("cimplot")); + mod.addIncludePath(b.path("cimgui/imgui")); + mod.addIncludePath(b.path("cimgui/imgui/backends")); + + const cimgui = b.addStaticLibrary(.{ + .name = "cimgui", + .target = target, + .optimize = optimize, + }); + cimgui.linkLibC(); + if (target.result.abi != .msvc) + cimgui.linkLibCpp(); + cimgui.addIncludePath(b.path("cimgui")); + cimgui.addIncludePath(b.path("cimplot")); + cimgui.addIncludePath(b.path("cimgui/imgui")); + cimgui.addIncludePath(b.path("cimgui/imgui/backends")); + + cimgui.addCSourceFiles(.{ + .root = b.path("cimgui/imgui"), + .files = &[_][]const u8{ + "cimgui.cpp", + "cimgui_compat.cpp", + "imgui.cpp", + "imgui_demo.cpp", + "imgui_draw.cpp", + "imgui_tables.cpp", + "imgui_widgets.cpp", + "backends/imgui_impl_vulkan.cpp", + "backends/imgui_impl_glfw.cpp", + }, + }); + + cimgui.addCSourceFiles(.{ + .root = b.path("cimplot"), + .files = &[_][]const u8{ + "cimplot.cpp", + "implot/implot.cpp", + "implot/implot_demo.cpp", + "implot/implot_items.cpp", + }, + }); + + const depList = [_][]const u8{ + "core", + "graphics", + "platform", + "vulkan", + }; + + for (depList) |depName| { + const dep = b.dependency(depName, .{ .target = target, .optimize = optimize }); + const depMod = dep.module(depName); + mod.addImport(depName, depMod); + } + + mod.linkLibrary(cimgui); + + // I could've made cimgui a seperate lib, + // I can seperate it out later if needed. + const test_step = b.step("test", "run unit tests for ui"); + const tests = b.addTest(.{ + .target = target, + .optimize = optimize, + .root_source_file = b.path("tests/tests.zig"), + }); + + tests.root_module.addImport("vkImgui", mod); + const runArtifact = b.addRunArtifact(tests); + test_step.dependOn(&runArtifact.step); + b.installArtifact(tests); +} diff --git a/engine/vkImgui/build.zig.zon b/engine/_archive/vkImgui/build.zig.zon similarity index 95% rename from engine/vkImgui/build.zig.zon rename to engine/_archive/vkImgui/build.zig.zon index 91d3e51..97e6b19 100644 --- a/engine/vkImgui/build.zig.zon +++ b/engine/_archive/vkImgui/build.zig.zon @@ -1,13 +1,13 @@ -.{ - .name = "imgui", - .version = "0.0.0", - .dependencies = .{ - .core = .{ .path = "../core" }, - .graphics = .{ .path = "../graphics" }, - .platform = .{ .path = "../platform" }, - .vulkan = .{ .path = "../../lib/vulkan" }, - }, - .paths = .{ - "", - }, -} +.{ + .name = "imgui", + .version = "0.0.0", + .dependencies = .{ + .core = .{ .path = "../core" }, + .graphics = .{ .path = "../graphics" }, + .platform = .{ .path = "../platform" }, + .vulkan = .{ .path = "../../lib/vulkan" }, + }, + .paths = .{ + "", + }, +} diff --git a/engine/vkImgui/cimgui/GLFW/glfw3.h b/engine/_archive/vkImgui/cimgui/GLFW/glfw3.h similarity index 100% rename from engine/vkImgui/cimgui/GLFW/glfw3.h rename to engine/_archive/vkImgui/cimgui/GLFW/glfw3.h diff --git a/engine/vkImgui/cimgui/GLFW/glfw3native.h b/engine/_archive/vkImgui/cimgui/GLFW/glfw3native.h similarity index 100% rename from engine/vkImgui/cimgui/GLFW/glfw3native.h rename to engine/_archive/vkImgui/cimgui/GLFW/glfw3native.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_allegro5.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_allegro5.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_allegro5.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_allegro5.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_allegro5.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_allegro5.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_allegro5.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_allegro5.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_android.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_android.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_android.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_android.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_android.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_android.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_android.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_android.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx10.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx10.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx10.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx10.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx10.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx10.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx10.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx10.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx11.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx11.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx11.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx11.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx11.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx11.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx11.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx11.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx12.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx12.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx12.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx12.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx12.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx12.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx12.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx12.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx9.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx9.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx9.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx9.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx9.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx9.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_dx9.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_dx9.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_glfw.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_glfw.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_glfw.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_glfw.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_glfw.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_glfw.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_glfw.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_glfw.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_glut.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_glut.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_glut.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_glut.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_glut.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_glut.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_glut.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_glut.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_metal.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_metal.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_metal.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_metal.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_metal.mm b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_metal.mm similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_metal.mm rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_metal.mm diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl2.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl2.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl2.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl2.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl2.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl2.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl2.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl2.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3_loader.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3_loader.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3_loader.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_opengl3_loader.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_osx.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_osx.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_osx.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_osx.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_osx.mm b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_osx.mm similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_osx.mm rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_osx.mm diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_sdl.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_sdl.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_sdl.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_sdl.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_sdl.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_sdl.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_sdl.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_sdl.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_sdlrenderer.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_sdlrenderer.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_sdlrenderer.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_sdlrenderer.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_sdlrenderer.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_sdlrenderer.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_sdlrenderer.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_sdlrenderer.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_vulkan.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_vulkan.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_vulkan.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_vulkan.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_vulkan.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_vulkan.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_vulkan.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_vulkan.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_wgpu.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_wgpu.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_wgpu.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_wgpu.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_wgpu.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_wgpu.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_wgpu.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_wgpu.h diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_win32.cpp b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_win32.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_win32.cpp rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_win32.cpp diff --git a/engine/vkImgui/cimgui/imgui/backends/imgui_impl_win32.h b/engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_win32.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/imgui_impl_win32.h rename to engine/_archive/vkImgui/cimgui/imgui/backends/imgui_impl_win32.h diff --git a/engine/vkImgui/cimgui/imgui/backends/vulkan/generate_spv.sh b/engine/_archive/vkImgui/cimgui/imgui/backends/vulkan/generate_spv.sh similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/vulkan/generate_spv.sh rename to engine/_archive/vkImgui/cimgui/imgui/backends/vulkan/generate_spv.sh diff --git a/engine/vkImgui/cimgui/imgui/backends/vulkan/glsl_shader.frag b/engine/_archive/vkImgui/cimgui/imgui/backends/vulkan/glsl_shader.frag similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/vulkan/glsl_shader.frag rename to engine/_archive/vkImgui/cimgui/imgui/backends/vulkan/glsl_shader.frag diff --git a/engine/vkImgui/cimgui/imgui/backends/vulkan/glsl_shader.vert b/engine/_archive/vkImgui/cimgui/imgui/backends/vulkan/glsl_shader.vert similarity index 100% rename from engine/vkImgui/cimgui/imgui/backends/vulkan/glsl_shader.vert rename to engine/_archive/vkImgui/cimgui/imgui/backends/vulkan/glsl_shader.vert diff --git a/engine/vkImgui/cimgui/imgui/cimgui.cpp b/engine/_archive/vkImgui/cimgui/imgui/cimgui.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/cimgui.cpp rename to engine/_archive/vkImgui/cimgui/imgui/cimgui.cpp diff --git a/engine/vkImgui/cimgui/imgui/cimgui.h b/engine/_archive/vkImgui/cimgui/imgui/cimgui.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/cimgui.h rename to engine/_archive/vkImgui/cimgui/imgui/cimgui.h diff --git a/engine/vkImgui/cimgui/imgui/cimgui2.h b/engine/_archive/vkImgui/cimgui/imgui/cimgui2.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/cimgui2.h rename to engine/_archive/vkImgui/cimgui/imgui/cimgui2.h diff --git a/engine/vkImgui/cimgui/imgui/cimgui_compat.cpp b/engine/_archive/vkImgui/cimgui/imgui/cimgui_compat.cpp similarity index 97% rename from engine/vkImgui/cimgui/imgui/cimgui_compat.cpp rename to engine/_archive/vkImgui/cimgui/imgui/cimgui_compat.cpp index d782715..f3da7e9 100644 --- a/engine/vkImgui/cimgui/imgui/cimgui_compat.cpp +++ b/engine/_archive/vkImgui/cimgui/imgui/cimgui_compat.cpp @@ -1,187 +1,187 @@ -// compatibility implementations for integration with backlog -// by peterino - -#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS -#define IMGUI_DEFINE_MATH_OPERATORS -#define CIMGUI_USE_GLFW -#include "imgui.h" -#include "imgui_impl_glfw.h" -#include "imgui_impl_vulkan.h" -#include - -extern "C" bool cImGui_vk_Init(ImGui_ImplVulkan_InitInfo* info, VkRenderPass render_pass) -{ - ImGui_ImplVulkan_Init(info, render_pass); - return false; -} - -extern "C" void cImGui_vk_Shutdown() -{ - ImGui_ImplVulkan_Shutdown(); -} - -extern "C" void cImGui_vk_NewFrame() -{ - ImGui_ImplVulkan_NewFrame(); -} - -extern "C" void cImGui_vk_RenderDrawData(ImDrawData* draw_data, VkCommandBuffer command_buffer, VkPipeline pipeline = VK_NULL_HANDLE) -{ - ImGui_ImplVulkan_RenderDrawData(draw_data, command_buffer, pipeline); -} - -extern "C" bool cImGui_vk_CreateFontsTexture(VkCommandBuffer command_buffer) -{ - ImGui_ImplVulkan_CreateFontsTexture(command_buffer); - return true; -} - -extern "C" void cImGui_vk_DestroyFontUploadObjects() -{ - ImGui_ImplVulkan_DestroyFontUploadObjects(); -} - -extern "C" void cImGui_vk_SetMinImageCount(uint32_t min_image_count) -{ - ImGui_ImplVulkan_SetMinImageCount(min_image_count); -} - -extern "C" void SetupImguiColors () -{ - ImGuiStyle& style = ImGui::GetStyle(); - style.WindowBorderSize = 1; - style.ChildBorderSize = 1; - style.PopupBorderSize = 1; - style.FrameBorderSize = 0; - style.TabBorderSize = 0; - style.WindowPadding = {20, 20}; - - style.WindowRounding = 6; - style.ChildRounding = 6; - style.FrameRounding = 6; - style.ScrollbarRounding = 6; - style.GrabRounding = 6; - style.LogSliderDeadzone = 6; - style.TabRounding = 6; - style.WindowMenuButtonPosition = ImGuiDir_None; - - ImVec4* colors = ImGui::GetStyle().Colors; - - colors[ImGuiCol_Text] = ImVec4(1.00f, 1.00f, 1.00f, 1.00f); - colors[ImGuiCol_TextDisabled] = ImVec4(0.50f, 0.50f, 0.50f, 1.00f); - colors[ImGuiCol_WindowBg] = ImVec4(0.00f, 0.00f, 0.00f, 1.00f); - colors[ImGuiCol_ChildBg] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); - colors[ImGuiCol_PopupBg] = ImVec4(0.08f, 0.08f, 0.08f, 0.94f); - colors[ImGuiCol_Border] = ImVec4(0.43f, 0.43f, 0.50f, 0.50f); - colors[ImGuiCol_BorderShadow] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); - colors[ImGuiCol_FrameBg] = ImVec4(0.48f, 0.16f, 0.16f, 0.54f); - colors[ImGuiCol_FrameBgHovered] = ImVec4(1.00f, 0.83f, 0.00f, 0.40f); - colors[ImGuiCol_FrameBgActive] = ImVec4(0.78f, 0.01f, 0.01f, 0.67f); - colors[ImGuiCol_TitleBg] = ImVec4(0.57f, 0.14f, 0.14f, 1.0f); - colors[ImGuiCol_TitleBgActive] = ImVec4(0.57f, 0.14f, 0.14f, 1.0f); - colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.00f, 0.00f, 0.00f, 0.51f); - colors[ImGuiCol_MenuBarBg] = ImVec4(0.14f, 0.14f, 0.14f, 1.00f); - colors[ImGuiCol_ScrollbarBg] = ImVec4(0.02f, 0.02f, 0.02f, 0.53f); - colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.31f, 0.31f, 0.31f, 1.00f); - colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.41f, 0.41f, 0.41f, 1.00f); - colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.51f, 0.51f, 0.51f, 1.00f); - colors[ImGuiCol_CheckMark] = ImVec4(0.10f, 0.05f, 0.00f, 1.00f); - colors[ImGuiCol_SliderGrab] = ImVec4(1.00f, 0.68f, 0.00f, 1.00f); - colors[ImGuiCol_SliderGrabActive] = ImVec4(0.07f, 0.00f, 0.00f, 1.00f); - colors[ImGuiCol_Button] = ImVec4(0.11f, 0.09f, 0.00f, 0.40f); - colors[ImGuiCol_ButtonHovered] = ImVec4(0.02f, 0.01f, 0.01f, 1.00f); - colors[ImGuiCol_ButtonActive] = ImVec4(0.10f, 0.03f, 0.00f, 1.00f); - colors[ImGuiCol_Header] = ImVec4(0.09f, 0.03f, 0.00f, 0.31f); - colors[ImGuiCol_HeaderHovered] = ImVec4(0.69f, 0.42f, 0.00f, 0.80f); - colors[ImGuiCol_HeaderActive] = ImVec4(0.17f, 0.09f, 0.00f, 1.00f); - colors[ImGuiCol_Separator] = ImVec4(0.82f, 0.32f, 0.04f, 0.50f); - colors[ImGuiCol_SeparatorHovered] = ImVec4(0.96f, 0.49f, 0.04f, 0.78f); - colors[ImGuiCol_SeparatorActive] = ImVec4(0.91f, 0.60f, 0.06f, 0.89f); - colors[ImGuiCol_ResizeGrip] = ImVec4(0.83f, 0.32f, 0.13f, 0.20f); - colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.73f, 0.00f, 0.00f, 0.67f); - colors[ImGuiCol_ResizeGripActive] = ImVec4(0.86f, 0.08f, 0.08f, 0.95f); - colors[ImGuiCol_Tab] = ImVec4(0.88f, 0.16f, 0.16f, 0.86f); - colors[ImGuiCol_TabHovered] = ImVec4(0.55f, 0.12f, 0.12f, 0.80f); - colors[ImGuiCol_TabActive] = ImVec4(0.57f, 0.02f, 0.02f, 1.00f); - colors[ImGuiCol_TabUnfocused] = ImVec4(0.77f, 0.29f, 0.04f, 0.97f); - colors[ImGuiCol_TabUnfocusedActive] = ImVec4(0.70f, 0.57f, 0.21f, 1.00f); - colors[ImGuiCol_DockingPreview] = ImVec4(0.42f, 0.26f, 0.09f, 0.70f); - colors[ImGuiCol_DockingEmptyBg] = ImVec4(0.0f, 0.00f, 0.00f, 0.00f); - colors[ImGuiCol_PlotLines] = ImVec4(0.61f, 0.61f, 0.61f, 1.00f); - colors[ImGuiCol_PlotLinesHovered] = ImVec4(1.00f, 0.43f, 0.35f, 1.00f); - colors[ImGuiCol_PlotHistogram] = ImVec4(0.90f, 0.70f, 0.00f, 1.00f); - colors[ImGuiCol_PlotHistogramHovered] = ImVec4(1.00f, 0.60f, 0.00f, 1.00f); - colors[ImGuiCol_TableHeaderBg] = ImVec4(0.19f, 0.19f, 0.20f, 1.00f); - colors[ImGuiCol_TableBorderStrong] = ImVec4(0.31f, 0.31f, 0.35f, 1.00f); - colors[ImGuiCol_TableBorderLight] = ImVec4(0.23f, 0.23f, 0.25f, 1.00f); - colors[ImGuiCol_TableRowBg] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); - colors[ImGuiCol_TableRowBgAlt] = ImVec4(1.00f, 1.00f, 1.00f, 0.06f); - colors[ImGuiCol_TextSelectedBg] = ImVec4(0.79f, 0.70f, 0.34f, 0.35f); - colors[ImGuiCol_DragDropTarget] = ImVec4(1.00f, 1.00f, 0.00f, 0.90f); - colors[ImGuiCol_NavHighlight] = ImVec4(0.57f, 0.22f, 0.05f, 1.00f); - colors[ImGuiCol_NavWindowingHighlight] = ImVec4(1.00f, 1.00f, 1.00f, 0.70f); - colors[ImGuiCol_NavWindowingDimBg] = ImVec4(0.80f, 0.80f, 0.80f, 0.20f); - colors[ImGuiCol_ModalWindowDimBg] = ImVec4(0.80f, 0.80f, 0.80f, 0.35f); -} - -extern "C" void setFontScale(int newWidth, int newHeight) -{ - const float orig_width = 1600; - const float orig_height = 900; - - float ratio_width = float(newWidth) / orig_width; - float ratio_height = float(newHeight) / orig_height; - - float ratio = ratio_width > ratio_height ? ratio_height : ratio_width; - - auto& io = ImGui::GetIO(); - io.FontGlobalScale = (ratio * 1.0); - // printf("global scale: %f (%d x %d)\n", ratio, newWidth, newWidth); - - ImGuiStyle& style = ImGui::GetStyle(); - style.WindowPadding = {20 * ratio, 20 * ratio}; -} - - -// ==== renderthread support ==== -// if renderthread is present, -// - maintain dpouble buffer of ImDrawData* - -#define NumFrames 2 -#include - -ImDrawDataBuffered SharedDrawData[NumFrames]; -std::mutex SDDLock[NumFrames]; - -extern "C" void cimgui_vk_PrepareSharedData() -{ - for(int i = 0; i < NumFrames; i += 1) - { - SDDLock[i].lock(); - SharedDrawData[i] = ImDrawDataBuffered(); - SDDLock[i].unlock(); - } -} - -extern "C" void cimgui_vk_UploadSharedData(int frameIndex, ImDrawData* drawData) -{ - SDDLock[frameIndex].lock(); - SharedDrawData[frameIndex].CopyDrawData(ImGui::GetDrawData()); - SDDLock[frameIndex].unlock(); -} - -extern "C" ImDrawData* cimgui_vk_GetSharedData(int frameIndex) -{ - SDDLock[frameIndex].lock(); - return &SharedDrawData[frameIndex]; - //return ImGui::GetDrawData(); - -} - -extern "C" void cimgui_vk_ReleaseSharedData(int frameIndex) -{ - SDDLock[frameIndex].unlock(); -} - -// frames[updateFrame].CopyDrawData(ImGui::GetDrawData()); -// ImGui_ImplDX12_RenderDrawData(&frames[renderFrames], rc->myCommandList); +// compatibility implementations for integration with backlog +// by peterino + +#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS +#define IMGUI_DEFINE_MATH_OPERATORS +#define CIMGUI_USE_GLFW +#include "imgui.h" +#include "imgui_impl_glfw.h" +#include "imgui_impl_vulkan.h" +#include + +extern "C" bool cImGui_vk_Init(ImGui_ImplVulkan_InitInfo* info, VkRenderPass render_pass) +{ + ImGui_ImplVulkan_Init(info, render_pass); + return false; +} + +extern "C" void cImGui_vk_Shutdown() +{ + ImGui_ImplVulkan_Shutdown(); +} + +extern "C" void cImGui_vk_NewFrame() +{ + ImGui_ImplVulkan_NewFrame(); +} + +extern "C" void cImGui_vk_RenderDrawData(ImDrawData* draw_data, VkCommandBuffer command_buffer, VkPipeline pipeline = VK_NULL_HANDLE) +{ + ImGui_ImplVulkan_RenderDrawData(draw_data, command_buffer, pipeline); +} + +extern "C" bool cImGui_vk_CreateFontsTexture(VkCommandBuffer command_buffer) +{ + ImGui_ImplVulkan_CreateFontsTexture(command_buffer); + return true; +} + +extern "C" void cImGui_vk_DestroyFontUploadObjects() +{ + ImGui_ImplVulkan_DestroyFontUploadObjects(); +} + +extern "C" void cImGui_vk_SetMinImageCount(uint32_t min_image_count) +{ + ImGui_ImplVulkan_SetMinImageCount(min_image_count); +} + +extern "C" void SetupImguiColors () +{ + ImGuiStyle& style = ImGui::GetStyle(); + style.WindowBorderSize = 1; + style.ChildBorderSize = 1; + style.PopupBorderSize = 1; + style.FrameBorderSize = 0; + style.TabBorderSize = 0; + style.WindowPadding = {20, 20}; + + style.WindowRounding = 6; + style.ChildRounding = 6; + style.FrameRounding = 6; + style.ScrollbarRounding = 6; + style.GrabRounding = 6; + style.LogSliderDeadzone = 6; + style.TabRounding = 6; + style.WindowMenuButtonPosition = ImGuiDir_None; + + ImVec4* colors = ImGui::GetStyle().Colors; + + colors[ImGuiCol_Text] = ImVec4(1.00f, 1.00f, 1.00f, 1.00f); + colors[ImGuiCol_TextDisabled] = ImVec4(0.50f, 0.50f, 0.50f, 1.00f); + colors[ImGuiCol_WindowBg] = ImVec4(0.00f, 0.00f, 0.00f, 1.00f); + colors[ImGuiCol_ChildBg] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); + colors[ImGuiCol_PopupBg] = ImVec4(0.08f, 0.08f, 0.08f, 0.94f); + colors[ImGuiCol_Border] = ImVec4(0.43f, 0.43f, 0.50f, 0.50f); + colors[ImGuiCol_BorderShadow] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); + colors[ImGuiCol_FrameBg] = ImVec4(0.48f, 0.16f, 0.16f, 0.54f); + colors[ImGuiCol_FrameBgHovered] = ImVec4(1.00f, 0.83f, 0.00f, 0.40f); + colors[ImGuiCol_FrameBgActive] = ImVec4(0.78f, 0.01f, 0.01f, 0.67f); + colors[ImGuiCol_TitleBg] = ImVec4(0.57f, 0.14f, 0.14f, 1.0f); + colors[ImGuiCol_TitleBgActive] = ImVec4(0.57f, 0.14f, 0.14f, 1.0f); + colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.00f, 0.00f, 0.00f, 0.51f); + colors[ImGuiCol_MenuBarBg] = ImVec4(0.14f, 0.14f, 0.14f, 1.00f); + colors[ImGuiCol_ScrollbarBg] = ImVec4(0.02f, 0.02f, 0.02f, 0.53f); + colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.31f, 0.31f, 0.31f, 1.00f); + colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.41f, 0.41f, 0.41f, 1.00f); + colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.51f, 0.51f, 0.51f, 1.00f); + colors[ImGuiCol_CheckMark] = ImVec4(0.10f, 0.05f, 0.00f, 1.00f); + colors[ImGuiCol_SliderGrab] = ImVec4(1.00f, 0.68f, 0.00f, 1.00f); + colors[ImGuiCol_SliderGrabActive] = ImVec4(0.07f, 0.00f, 0.00f, 1.00f); + colors[ImGuiCol_Button] = ImVec4(0.11f, 0.09f, 0.00f, 0.40f); + colors[ImGuiCol_ButtonHovered] = ImVec4(0.02f, 0.01f, 0.01f, 1.00f); + colors[ImGuiCol_ButtonActive] = ImVec4(0.10f, 0.03f, 0.00f, 1.00f); + colors[ImGuiCol_Header] = ImVec4(0.09f, 0.03f, 0.00f, 0.31f); + colors[ImGuiCol_HeaderHovered] = ImVec4(0.69f, 0.42f, 0.00f, 0.80f); + colors[ImGuiCol_HeaderActive] = ImVec4(0.17f, 0.09f, 0.00f, 1.00f); + colors[ImGuiCol_Separator] = ImVec4(0.82f, 0.32f, 0.04f, 0.50f); + colors[ImGuiCol_SeparatorHovered] = ImVec4(0.96f, 0.49f, 0.04f, 0.78f); + colors[ImGuiCol_SeparatorActive] = ImVec4(0.91f, 0.60f, 0.06f, 0.89f); + colors[ImGuiCol_ResizeGrip] = ImVec4(0.83f, 0.32f, 0.13f, 0.20f); + colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.73f, 0.00f, 0.00f, 0.67f); + colors[ImGuiCol_ResizeGripActive] = ImVec4(0.86f, 0.08f, 0.08f, 0.95f); + colors[ImGuiCol_Tab] = ImVec4(0.88f, 0.16f, 0.16f, 0.86f); + colors[ImGuiCol_TabHovered] = ImVec4(0.55f, 0.12f, 0.12f, 0.80f); + colors[ImGuiCol_TabActive] = ImVec4(0.57f, 0.02f, 0.02f, 1.00f); + colors[ImGuiCol_TabUnfocused] = ImVec4(0.77f, 0.29f, 0.04f, 0.97f); + colors[ImGuiCol_TabUnfocusedActive] = ImVec4(0.70f, 0.57f, 0.21f, 1.00f); + colors[ImGuiCol_DockingPreview] = ImVec4(0.42f, 0.26f, 0.09f, 0.70f); + colors[ImGuiCol_DockingEmptyBg] = ImVec4(0.0f, 0.00f, 0.00f, 0.00f); + colors[ImGuiCol_PlotLines] = ImVec4(0.61f, 0.61f, 0.61f, 1.00f); + colors[ImGuiCol_PlotLinesHovered] = ImVec4(1.00f, 0.43f, 0.35f, 1.00f); + colors[ImGuiCol_PlotHistogram] = ImVec4(0.90f, 0.70f, 0.00f, 1.00f); + colors[ImGuiCol_PlotHistogramHovered] = ImVec4(1.00f, 0.60f, 0.00f, 1.00f); + colors[ImGuiCol_TableHeaderBg] = ImVec4(0.19f, 0.19f, 0.20f, 1.00f); + colors[ImGuiCol_TableBorderStrong] = ImVec4(0.31f, 0.31f, 0.35f, 1.00f); + colors[ImGuiCol_TableBorderLight] = ImVec4(0.23f, 0.23f, 0.25f, 1.00f); + colors[ImGuiCol_TableRowBg] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); + colors[ImGuiCol_TableRowBgAlt] = ImVec4(1.00f, 1.00f, 1.00f, 0.06f); + colors[ImGuiCol_TextSelectedBg] = ImVec4(0.79f, 0.70f, 0.34f, 0.35f); + colors[ImGuiCol_DragDropTarget] = ImVec4(1.00f, 1.00f, 0.00f, 0.90f); + colors[ImGuiCol_NavHighlight] = ImVec4(0.57f, 0.22f, 0.05f, 1.00f); + colors[ImGuiCol_NavWindowingHighlight] = ImVec4(1.00f, 1.00f, 1.00f, 0.70f); + colors[ImGuiCol_NavWindowingDimBg] = ImVec4(0.80f, 0.80f, 0.80f, 0.20f); + colors[ImGuiCol_ModalWindowDimBg] = ImVec4(0.80f, 0.80f, 0.80f, 0.35f); +} + +extern "C" void setFontScale(int newWidth, int newHeight) +{ + const float orig_width = 1600; + const float orig_height = 900; + + float ratio_width = float(newWidth) / orig_width; + float ratio_height = float(newHeight) / orig_height; + + float ratio = ratio_width > ratio_height ? ratio_height : ratio_width; + + auto& io = ImGui::GetIO(); + io.FontGlobalScale = (ratio * 1.0); + // printf("global scale: %f (%d x %d)\n", ratio, newWidth, newWidth); + + ImGuiStyle& style = ImGui::GetStyle(); + style.WindowPadding = {20 * ratio, 20 * ratio}; +} + + +// ==== renderthread support ==== +// if renderthread is present, +// - maintain dpouble buffer of ImDrawData* + +#define NumFrames 2 +#include + +ImDrawDataBuffered SharedDrawData[NumFrames]; +std::mutex SDDLock[NumFrames]; + +extern "C" void cimgui_vk_PrepareSharedData() +{ + for(int i = 0; i < NumFrames; i += 1) + { + SDDLock[i].lock(); + SharedDrawData[i] = ImDrawDataBuffered(); + SDDLock[i].unlock(); + } +} + +extern "C" void cimgui_vk_UploadSharedData(int frameIndex, ImDrawData* drawData) +{ + SDDLock[frameIndex].lock(); + SharedDrawData[frameIndex].CopyDrawData(ImGui::GetDrawData()); + SDDLock[frameIndex].unlock(); +} + +extern "C" ImDrawData* cimgui_vk_GetSharedData(int frameIndex) +{ + SDDLock[frameIndex].lock(); + return &SharedDrawData[frameIndex]; + //return ImGui::GetDrawData(); + +} + +extern "C" void cimgui_vk_ReleaseSharedData(int frameIndex) +{ + SDDLock[frameIndex].unlock(); +} + +// frames[updateFrame].CopyDrawData(ImGui::GetDrawData()); +// ImGui_ImplDX12_RenderDrawData(&frames[renderFrames], rc->myCommandList); diff --git a/engine/vkImgui/cimgui/imgui/cimgui_compat.h b/engine/_archive/vkImgui/cimgui/imgui/cimgui_compat.h similarity index 97% rename from engine/vkImgui/cimgui/imgui/cimgui_compat.h rename to engine/_archive/vkImgui/cimgui/imgui/cimgui_compat.h index bcb5b16..d4f23a2 100644 --- a/engine/vkImgui/cimgui/imgui/cimgui_compat.h +++ b/engine/_archive/vkImgui/cimgui/imgui/cimgui_compat.h @@ -1,50 +1,50 @@ -#pragma once - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct ImGui_ImplVulkan_InitInfo -{ - VkInstance Instance; - VkPhysicalDevice PhysicalDevice; - VkDevice Device; - uint32_t QueueFamily; - VkQueue Queue; - VkPipelineCache PipelineCache; - VkDescriptorPool DescriptorPool; - uint32_t Subpass; - uint32_t MinImageCount; // >= 2 - uint32_t ImageCount; // >= MinImageCount - VkSampleCountFlagBits MSAASamples; // >= VK_SAMPLE_COUNT_1_BIT (0 -> default to VK_SAMPLE_COUNT_1_BIT) - const VkAllocationCallbacks* Allocator; - void (*CheckVkResultFn)(VkResult err); -}; - -typedef struct ImGui_ImplVulkan_InitInfo ImGui_ImplVulkan_InitInfo; - - -// Called by user code -//bool cImGui_ImplVulkan_Init(ImGui_ImplVulkan_InitInfo* info, VkRenderPass render_pass); -bool cImGui_vk_Init(ImGui_ImplVulkan_InitInfo* info, VkRenderPass render_pass); -void cImGui_vk_Shutdown(); -void cImGui_vk_NewFrame(); -void cImGui_vk_RenderDrawData(ImDrawData* draw_data, VkCommandBuffer command_buffer, VkPipeline pipeline); -bool cImGui_vk_CreateFontsTexture(VkCommandBuffer command_buffer); -void cImGui_vk_DestroyFontUploadObjects(); -void cImGui_vk_SetMinImageCount(uint32_t min_image_count); // To override MinImageCount after initialization (e.g. if swap chain is recreated) - -void SetupImguiColors(); - -void setFontScale(int newWidth, int newHeight); - -void cimgui_vk_PrepareSharedData() ; -void cimgui_vk_UploadSharedData(int frameIndex, ImDrawData* drawData); -ImDrawData* cimgui_vk_GetSharedData(int frameIndex); -void cimgui_vk_ReleaseSharedData(int frameIndex); - -#ifdef __cplusplus -} -#endif +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct ImGui_ImplVulkan_InitInfo +{ + VkInstance Instance; + VkPhysicalDevice PhysicalDevice; + VkDevice Device; + uint32_t QueueFamily; + VkQueue Queue; + VkPipelineCache PipelineCache; + VkDescriptorPool DescriptorPool; + uint32_t Subpass; + uint32_t MinImageCount; // >= 2 + uint32_t ImageCount; // >= MinImageCount + VkSampleCountFlagBits MSAASamples; // >= VK_SAMPLE_COUNT_1_BIT (0 -> default to VK_SAMPLE_COUNT_1_BIT) + const VkAllocationCallbacks* Allocator; + void (*CheckVkResultFn)(VkResult err); +}; + +typedef struct ImGui_ImplVulkan_InitInfo ImGui_ImplVulkan_InitInfo; + + +// Called by user code +//bool cImGui_ImplVulkan_Init(ImGui_ImplVulkan_InitInfo* info, VkRenderPass render_pass); +bool cImGui_vk_Init(ImGui_ImplVulkan_InitInfo* info, VkRenderPass render_pass); +void cImGui_vk_Shutdown(); +void cImGui_vk_NewFrame(); +void cImGui_vk_RenderDrawData(ImDrawData* draw_data, VkCommandBuffer command_buffer, VkPipeline pipeline); +bool cImGui_vk_CreateFontsTexture(VkCommandBuffer command_buffer); +void cImGui_vk_DestroyFontUploadObjects(); +void cImGui_vk_SetMinImageCount(uint32_t min_image_count); // To override MinImageCount after initialization (e.g. if swap chain is recreated) + +void SetupImguiColors(); + +void setFontScale(int newWidth, int newHeight); + +void cimgui_vk_PrepareSharedData() ; +void cimgui_vk_UploadSharedData(int frameIndex, ImDrawData* drawData); +ImDrawData* cimgui_vk_GetSharedData(int frameIndex); +void cimgui_vk_ReleaseSharedData(int frameIndex); + +#ifdef __cplusplus +} +#endif diff --git a/engine/vkImgui/cimgui/imgui/cimgui_impl.h b/engine/_archive/vkImgui/cimgui/imgui/cimgui_impl.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/cimgui_impl.h rename to engine/_archive/vkImgui/cimgui/imgui/cimgui_impl.h diff --git a/engine/vkImgui/cimgui/imgui/enumtool.py b/engine/_archive/vkImgui/cimgui/imgui/enumtool.py similarity index 96% rename from engine/vkImgui/cimgui/imgui/enumtool.py rename to engine/_archive/vkImgui/cimgui/imgui/enumtool.py index 748e40d..8cec5af 100644 --- a/engine/vkImgui/cimgui/imgui/enumtool.py +++ b/engine/_archive/vkImgui/cimgui/imgui/enumtool.py @@ -1,144 +1,144 @@ -import re -inp3 = """ -""" - -enumLists = [] -for s in inp3.split("typedef enum {"): - raw = s.strip('\n ') - linesSplit = [] - for l in raw.split('\n'): - if '}' in l: - continue - linesSplit.append(l.strip(' \n')) - - x = '\n'.join(linesSplit) - enumLists.append(x) - -inp4 = """ - ImGuiPlotType_Lines, - ImGuiPlotType_Histogram -""" - -# these are normal-ass enums -inp5 = """ - ImGuiContextHookType_NewFramePre, - ImGuiContextHookType_NewFramePost, - ImGuiContextHookType_EndFramePre, - ImGuiContextHookType_EndFramePost, - ImGuiContextHookType_RenderPre, - ImGuiContextHookType_RenderPost, - ImGuiContextHookType_Shutdown, - ImGuiContextHookType_PendingRemoval_ -""" - -x = inp5.split('line') -preamble = '' -for l in x: - line = l.strip(' ') - if len(line) > 0: - s = line.split('_') - preamble = s[0] + '_' - preamble = preamble.lstrip('\n ') - break -print(' ', inp5.replace(preamble, '').replace('_', '').strip('\n ') + ',') -print(' _,') - - -def convertName(name): - ostr = "" - first = True - for c in name: - if c.isupper(): - if first: - first = False - else: - ostr += '_' - ostr += c.lower() - return ostr - -def convertFlagName(x): - if "COUNT" in x: - return "count" - flagName = x.split('_')[1].split('=')[0] - flagNameZig = convertName(flagName) - return flagNameZig - -def convertSingle(line): - s = line.split(' ') - flagNameZig = convertFlagName(s[0]) - if flagNameZig != 'none': - return flagNameZig + f': bool = false, // {line}' - - -def convertCompositeFlag(convert): - left, right = convert.split('=') - right = right.strip(' ') - left = left.strip(' ') - constName = convertFlagName(left) - rhsFlagsRaw = right.split('|') - rhsFlags = [] - - for r in rhsFlagsRaw: - rhsFlags.append(convertFlagName(r.strip(' ,'))) - - ostr = f"pub const {constName} = ." + '{ ' - for r in rhsFlags: - ostr += f'.{r} = true, ' - ostr = ostr[0:-2] - ostr += '};' - return ostr - -def convertFlags(inputString): - #print("input: ", inputString) - if len(inputString.strip(' ')) <= 0: - return - singles = [] - composites = [] - firstLine = None - for l in inputString.split('\n'): - line = l.strip(' ') - if len(line) <= 0: - continue - firstLine = line - if '=' in line: - left, right = line.split('=') - if "_" in right: - composites.append(convertCompositeFlag(line)) - else: - singles.append(convertSingle(line)) - else: - singles.append(convertFlagName(line.strip(' ,')) + ': bool = false, // ' + line)# this is a single flag - - structName = firstLine.split('_')[0][5:] - print(f'pub const {structName} = packed struct(c_int)' + '{') - - count = 0 - for s in singles: - if s is not None: - count += 1 - print(' ' + s) - - if count != 32: - print(f" reserved: u{32 - count} = 0, // reserved, don't use") - - if len(composites): - print('') - - for x in composites: - print(' ' + x) - - print('};') - -for e in enumLists: - convertFlags(e) - -def convertEnum(enumStr): - name = None - for l in enumStr.split('\n'): - line = l.strip(' ,') - if 'typedef enum {' in line: - continue - if len(line) == 0: - continue - name = convertFlagName(line) - print(name) +import re +inp3 = """ +""" + +enumLists = [] +for s in inp3.split("typedef enum {"): + raw = s.strip('\n ') + linesSplit = [] + for l in raw.split('\n'): + if '}' in l: + continue + linesSplit.append(l.strip(' \n')) + + x = '\n'.join(linesSplit) + enumLists.append(x) + +inp4 = """ + ImGuiPlotType_Lines, + ImGuiPlotType_Histogram +""" + +# these are normal-ass enums +inp5 = """ + ImGuiContextHookType_NewFramePre, + ImGuiContextHookType_NewFramePost, + ImGuiContextHookType_EndFramePre, + ImGuiContextHookType_EndFramePost, + ImGuiContextHookType_RenderPre, + ImGuiContextHookType_RenderPost, + ImGuiContextHookType_Shutdown, + ImGuiContextHookType_PendingRemoval_ +""" + +x = inp5.split('line') +preamble = '' +for l in x: + line = l.strip(' ') + if len(line) > 0: + s = line.split('_') + preamble = s[0] + '_' + preamble = preamble.lstrip('\n ') + break +print(' ', inp5.replace(preamble, '').replace('_', '').strip('\n ') + ',') +print(' _,') + + +def convertName(name): + ostr = "" + first = True + for c in name: + if c.isupper(): + if first: + first = False + else: + ostr += '_' + ostr += c.lower() + return ostr + +def convertFlagName(x): + if "COUNT" in x: + return "count" + flagName = x.split('_')[1].split('=')[0] + flagNameZig = convertName(flagName) + return flagNameZig + +def convertSingle(line): + s = line.split(' ') + flagNameZig = convertFlagName(s[0]) + if flagNameZig != 'none': + return flagNameZig + f': bool = false, // {line}' + + +def convertCompositeFlag(convert): + left, right = convert.split('=') + right = right.strip(' ') + left = left.strip(' ') + constName = convertFlagName(left) + rhsFlagsRaw = right.split('|') + rhsFlags = [] + + for r in rhsFlagsRaw: + rhsFlags.append(convertFlagName(r.strip(' ,'))) + + ostr = f"pub const {constName} = ." + '{ ' + for r in rhsFlags: + ostr += f'.{r} = true, ' + ostr = ostr[0:-2] + ostr += '};' + return ostr + +def convertFlags(inputString): + #print("input: ", inputString) + if len(inputString.strip(' ')) <= 0: + return + singles = [] + composites = [] + firstLine = None + for l in inputString.split('\n'): + line = l.strip(' ') + if len(line) <= 0: + continue + firstLine = line + if '=' in line: + left, right = line.split('=') + if "_" in right: + composites.append(convertCompositeFlag(line)) + else: + singles.append(convertSingle(line)) + else: + singles.append(convertFlagName(line.strip(' ,')) + ': bool = false, // ' + line)# this is a single flag + + structName = firstLine.split('_')[0][5:] + print(f'pub const {structName} = packed struct(c_int)' + '{') + + count = 0 + for s in singles: + if s is not None: + count += 1 + print(' ' + s) + + if count != 32: + print(f" reserved: u{32 - count} = 0, // reserved, don't use") + + if len(composites): + print('') + + for x in composites: + print(' ' + x) + + print('};') + +for e in enumLists: + convertFlags(e) + +def convertEnum(enumStr): + name = None + for l in enumStr.split('\n'): + line = l.strip(' ,') + if 'typedef enum {' in line: + continue + if len(line) == 0: + continue + name = convertFlagName(line) + print(name) diff --git a/engine/vkImgui/cimgui/imgui/imconfig.h b/engine/_archive/vkImgui/cimgui/imgui/imconfig.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/imconfig.h rename to engine/_archive/vkImgui/cimgui/imgui/imconfig.h diff --git a/engine/vkImgui/cimgui/imgui/imgui b/engine/_archive/vkImgui/cimgui/imgui/imgui similarity index 100% rename from engine/vkImgui/cimgui/imgui/imgui rename to engine/_archive/vkImgui/cimgui/imgui/imgui diff --git a/engine/vkImgui/cimgui/imgui/imgui.cpp b/engine/_archive/vkImgui/cimgui/imgui/imgui.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/imgui.cpp rename to engine/_archive/vkImgui/cimgui/imgui/imgui.cpp diff --git a/engine/vkImgui/cimgui/imgui/imgui.h b/engine/_archive/vkImgui/cimgui/imgui/imgui.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/imgui.h rename to engine/_archive/vkImgui/cimgui/imgui/imgui.h diff --git a/engine/vkImgui/cimgui/imgui/imgui_demo.cpp b/engine/_archive/vkImgui/cimgui/imgui/imgui_demo.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/imgui_demo.cpp rename to engine/_archive/vkImgui/cimgui/imgui/imgui_demo.cpp diff --git a/engine/vkImgui/cimgui/imgui/imgui_draw.cpp b/engine/_archive/vkImgui/cimgui/imgui/imgui_draw.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/imgui_draw.cpp rename to engine/_archive/vkImgui/cimgui/imgui/imgui_draw.cpp diff --git a/engine/vkImgui/cimgui/imgui/imgui_internal.h b/engine/_archive/vkImgui/cimgui/imgui/imgui_internal.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/imgui_internal.h rename to engine/_archive/vkImgui/cimgui/imgui/imgui_internal.h diff --git a/engine/vkImgui/cimgui/imgui/imgui_tables.cpp b/engine/_archive/vkImgui/cimgui/imgui/imgui_tables.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/imgui_tables.cpp rename to engine/_archive/vkImgui/cimgui/imgui/imgui_tables.cpp diff --git a/engine/vkImgui/cimgui/imgui/imgui_widgets.cpp b/engine/_archive/vkImgui/cimgui/imgui/imgui_widgets.cpp similarity index 100% rename from engine/vkImgui/cimgui/imgui/imgui_widgets.cpp rename to engine/_archive/vkImgui/cimgui/imgui/imgui_widgets.cpp diff --git a/engine/vkImgui/cimgui/imgui/imstb_rectpack.h b/engine/_archive/vkImgui/cimgui/imgui/imstb_rectpack.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/imstb_rectpack.h rename to engine/_archive/vkImgui/cimgui/imgui/imstb_rectpack.h diff --git a/engine/vkImgui/cimgui/imgui/imstb_textedit.h b/engine/_archive/vkImgui/cimgui/imgui/imstb_textedit.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/imstb_textedit.h rename to engine/_archive/vkImgui/cimgui/imgui/imstb_textedit.h diff --git a/engine/vkImgui/cimgui/imgui/imstb_truetype.h b/engine/_archive/vkImgui/cimgui/imgui/imstb_truetype.h similarity index 100% rename from engine/vkImgui/cimgui/imgui/imstb_truetype.h rename to engine/_archive/vkImgui/cimgui/imgui/imstb_truetype.h diff --git a/engine/vkImgui/cimgui/imgui/structs.py b/engine/_archive/vkImgui/cimgui/imgui/structs.py similarity index 96% rename from engine/vkImgui/cimgui/imgui/structs.py rename to engine/_archive/vkImgui/cimgui/imgui/structs.py index 4d7991e..da9dd2a 100644 --- a/engine/vkImgui/cimgui/imgui/structs.py +++ b/engine/_archive/vkImgui/cimgui/imgui/structs.py @@ -1,217 +1,217 @@ -inp = """ -struct ImDrawListSplitter -{ - int _Current; - int _Count; - ImVector_ImDrawChannel _Channels; -}; -""" - -''' -struct ImGuiInputEvent -{ - ImGuiInputEventType Type; - ImGuiInputSource Source; - union - { - ImGuiInputEventMousePos MousePos; - ImGuiInputEventMouseWheel MouseWheel; - ImGuiInputEventMouseButton MouseButton; - ImGuiInputEventMouseViewport MouseViewport; - ImGuiInputEventKey Key; - ImGuiInputEventText Text; - ImGuiInputEventAppFocused AppFocused; - }; - bool AddedByTestEngine; -}; -''' - -def parseFunction(line): - line = line.strip(' \n;') - line = line.replace(')', '') - s = line.split('(') - returnType = convertTypeName(s[0].strip(' ')) - funcName = convertVarName(s[1].strip('* ')) - funcName = funcName.replace('__', '_') - argsRaw = s[2].split(',') - args = [] - for a in argsRaw: - if len(a) >= 1: - args.append(a) - - argList = [] - for a in args: - a = a.strip(' ') - tname, vname = splitTypeAndLabel(a) - argList.append([convertTypeName(tname), convertVarName(vname)]) - - return (returnType, funcName, argList) - -def convertVarName(name): - ostr = "" - first = True - for c in name: - if c.isupper(): - if first: - first = False - else: - ostr += '_' - ostr += c.lower() - return ostr - -def convertTypeName(entry): - if 'void*' == entry: - return '?*anyopaque' - if 'void' == entry: - return 'void' - - isVector = False - if entry[:8] == 'ImVector': - isVector = True - - typeName = entry - const = False - pointer = False - if '*' in typeName: - pointer = True; - typeName = typeName.strip('*') - - if typeName[:5] == 'const': - const = True - typeName = typeName[5:] - typeName = typeName.strip(' ') - - if '_' in typeName: - x = typeName.split('_') - typeName = x[-1] - rv = convertInner(typeName) - - if const: - rv = 'const ' + rv - - if pointer: - rv = '[*c]' + rv - - if isVector: - rv += 'Vector' - - return rv - -def convertInner(typeName): - if 'float' == typeName: - return 'f32' - if 'char' == typeName: - return 'u8' - if 'int' == typeName: - return 'c_int' - if 'short' == typeName: - return 'c_short' - if 'unsigned int' == typeName: - return 'c_uint' - if 'unsigned short' == typeName: - return 'c_ushort' - if 'unsigned long' == typeName: - return 'c_ulong' - if 'long' == typeName: - return 'c_long' - if 'longlong' == typeName: - return 'c_longlong' - if 'ImGui' == typeName[0:5]: - return typeName[5:] - if 'Im' == typeName[0:2]: - return typeName[2:] - return typeName - -def splitTypeAndLabel(line): - spaceIndex = line.rindex(' ') - left = line[:spaceIndex] - right = line[spaceIndex + 1:] - return left, right - -def generateStruct(inp): - inp = inp.strip('\n ') - defs = [] - name = '' - nameLine = '' - - for l in inp.split('\n'): - line = l.strip(' {') - if len(line) < 1: - continue - if 'struct' in line: - name = line.split(' ')[1] - nameLine = line - continue - if '{' in line: - continue - if '}' in line: - continue - - if '(*' not in line: - typeName, varName = splitTypeAndLabel(line) - varName = varName.strip(';') - arraySpec = None - if '[' in varName: - varName, rhs = varName.split('[') - arraySpec = rhs.strip(']') - varName = convertVarName(varName) - if arraySpec is not None: - arraySpec = arraySpec.replace('ImGui', '') - arraySpec = arraySpec.replace('_', '.') - # varName += '[' + arraySpec + ']' - typeName = convertTypeName(typeName) - defs.append([typeName, varName, arraySpec]) - else: - returnType, funcName, argList = parseFunction(line) - ostr = funcName + ': *const fn (' - first = True - for arg in argList: - if first: - first = False - else: - ostr += ', ' - ostr += arg[0] - ostr += ') ' + returnType + ',' - defs.append([None, None, None, ostr]) - - print(f'pub const {convertTypeName(name)} = extern struct ' + '{ // ' + nameLine) - for d in defs: - if d[0] is not None: - typedef = d[0] - if d[2] is not None: - typedef = f"[{d[2]}]" + d[0] - print(f" {d[1]}: {typedef},") - elif d[3] is not None: - print(' ', d[3]) - - print('};') - -generateStruct(inp) - - -structs = """ -ImDrawCmd {int Size;int Capacity;ImDrawCmd* Data;} ImVector_ImDrawCmd; -ImDrawIdx {int Size;int Capacity;ImDrawIdx* Data;} ImVector_ImDrawIdx; -""" - -""" -unsigned_char {int Size;int Capacity;unsigned char* Data;} ImVector_unsigned_char; -typedef struct ImPool_ImGuiTable {ImVector_ImGuiTable Buf;ImGuiStorage Map;ImPoolIdx FreeIdx;ImPoolIdx AliveCount;} ImPool_ImGuiTable; -typedef struct ImPool_ImGuiTabBar {ImVector_ImGuiTabBar Buf;ImGuiStorage Map;ImPoolIdx FreeIdx;ImPoolIdx AliveCount;} ImPool_ImGuiTabBar; -typedef struct ImChunkStream_ImGuiWindowSettings {ImVector_char Buf;} ImChunkStream_ImGuiWindowSettings; -typedef struct ImChunkStream_ImGuiTableSettings {ImVector_char Buf;} ImChunkStream_ImGuiTableSettings; -""" - -for i in structs.split('\n'): - sname = i.split(' ')[0] - tname = convertTypeName(sname) - # print(sname, tname) - o = f""" -pub const {tname}Vector = extern struct {{ // struct ImVector_{sname} - size: c_int, - capacity: c_int, - data: [*c]{tname}, -}}; - """ - print(o) - +inp = """ +struct ImDrawListSplitter +{ + int _Current; + int _Count; + ImVector_ImDrawChannel _Channels; +}; +""" + +''' +struct ImGuiInputEvent +{ + ImGuiInputEventType Type; + ImGuiInputSource Source; + union + { + ImGuiInputEventMousePos MousePos; + ImGuiInputEventMouseWheel MouseWheel; + ImGuiInputEventMouseButton MouseButton; + ImGuiInputEventMouseViewport MouseViewport; + ImGuiInputEventKey Key; + ImGuiInputEventText Text; + ImGuiInputEventAppFocused AppFocused; + }; + bool AddedByTestEngine; +}; +''' + +def parseFunction(line): + line = line.strip(' \n;') + line = line.replace(')', '') + s = line.split('(') + returnType = convertTypeName(s[0].strip(' ')) + funcName = convertVarName(s[1].strip('* ')) + funcName = funcName.replace('__', '_') + argsRaw = s[2].split(',') + args = [] + for a in argsRaw: + if len(a) >= 1: + args.append(a) + + argList = [] + for a in args: + a = a.strip(' ') + tname, vname = splitTypeAndLabel(a) + argList.append([convertTypeName(tname), convertVarName(vname)]) + + return (returnType, funcName, argList) + +def convertVarName(name): + ostr = "" + first = True + for c in name: + if c.isupper(): + if first: + first = False + else: + ostr += '_' + ostr += c.lower() + return ostr + +def convertTypeName(entry): + if 'void*' == entry: + return '?*anyopaque' + if 'void' == entry: + return 'void' + + isVector = False + if entry[:8] == 'ImVector': + isVector = True + + typeName = entry + const = False + pointer = False + if '*' in typeName: + pointer = True; + typeName = typeName.strip('*') + + if typeName[:5] == 'const': + const = True + typeName = typeName[5:] + typeName = typeName.strip(' ') + + if '_' in typeName: + x = typeName.split('_') + typeName = x[-1] + rv = convertInner(typeName) + + if const: + rv = 'const ' + rv + + if pointer: + rv = '[*c]' + rv + + if isVector: + rv += 'Vector' + + return rv + +def convertInner(typeName): + if 'float' == typeName: + return 'f32' + if 'char' == typeName: + return 'u8' + if 'int' == typeName: + return 'c_int' + if 'short' == typeName: + return 'c_short' + if 'unsigned int' == typeName: + return 'c_uint' + if 'unsigned short' == typeName: + return 'c_ushort' + if 'unsigned long' == typeName: + return 'c_ulong' + if 'long' == typeName: + return 'c_long' + if 'longlong' == typeName: + return 'c_longlong' + if 'ImGui' == typeName[0:5]: + return typeName[5:] + if 'Im' == typeName[0:2]: + return typeName[2:] + return typeName + +def splitTypeAndLabel(line): + spaceIndex = line.rindex(' ') + left = line[:spaceIndex] + right = line[spaceIndex + 1:] + return left, right + +def generateStruct(inp): + inp = inp.strip('\n ') + defs = [] + name = '' + nameLine = '' + + for l in inp.split('\n'): + line = l.strip(' {') + if len(line) < 1: + continue + if 'struct' in line: + name = line.split(' ')[1] + nameLine = line + continue + if '{' in line: + continue + if '}' in line: + continue + + if '(*' not in line: + typeName, varName = splitTypeAndLabel(line) + varName = varName.strip(';') + arraySpec = None + if '[' in varName: + varName, rhs = varName.split('[') + arraySpec = rhs.strip(']') + varName = convertVarName(varName) + if arraySpec is not None: + arraySpec = arraySpec.replace('ImGui', '') + arraySpec = arraySpec.replace('_', '.') + # varName += '[' + arraySpec + ']' + typeName = convertTypeName(typeName) + defs.append([typeName, varName, arraySpec]) + else: + returnType, funcName, argList = parseFunction(line) + ostr = funcName + ': *const fn (' + first = True + for arg in argList: + if first: + first = False + else: + ostr += ', ' + ostr += arg[0] + ostr += ') ' + returnType + ',' + defs.append([None, None, None, ostr]) + + print(f'pub const {convertTypeName(name)} = extern struct ' + '{ // ' + nameLine) + for d in defs: + if d[0] is not None: + typedef = d[0] + if d[2] is not None: + typedef = f"[{d[2]}]" + d[0] + print(f" {d[1]}: {typedef},") + elif d[3] is not None: + print(' ', d[3]) + + print('};') + +generateStruct(inp) + + +structs = """ +ImDrawCmd {int Size;int Capacity;ImDrawCmd* Data;} ImVector_ImDrawCmd; +ImDrawIdx {int Size;int Capacity;ImDrawIdx* Data;} ImVector_ImDrawIdx; +""" + +""" +unsigned_char {int Size;int Capacity;unsigned char* Data;} ImVector_unsigned_char; +typedef struct ImPool_ImGuiTable {ImVector_ImGuiTable Buf;ImGuiStorage Map;ImPoolIdx FreeIdx;ImPoolIdx AliveCount;} ImPool_ImGuiTable; +typedef struct ImPool_ImGuiTabBar {ImVector_ImGuiTabBar Buf;ImGuiStorage Map;ImPoolIdx FreeIdx;ImPoolIdx AliveCount;} ImPool_ImGuiTabBar; +typedef struct ImChunkStream_ImGuiWindowSettings {ImVector_char Buf;} ImChunkStream_ImGuiWindowSettings; +typedef struct ImChunkStream_ImGuiTableSettings {ImVector_char Buf;} ImChunkStream_ImGuiTableSettings; +""" + +for i in structs.split('\n'): + sname = i.split(' ')[0] + tname = convertTypeName(sname) + # print(sname, tname) + o = f""" +pub const {tname}Vector = extern struct {{ // struct ImVector_{sname} + size: c_int, + capacity: c_int, + data: [*c]{tname}, +}}; + """ + print(o) + diff --git a/engine/vkImgui/cimgui/imgui/translated.zig b/engine/_archive/vkImgui/cimgui/imgui/translated.zig similarity index 98% rename from engine/vkImgui/cimgui/imgui/translated.zig rename to engine/_archive/vkImgui/cimgui/imgui/translated.zig index 9954c19..7c3b2ca 100644 --- a/engine/vkImgui/cimgui/imgui/translated.zig +++ b/engine/_archive/vkImgui/cimgui/imgui/translated.zig @@ -1,4606 +1,4606 @@ - -pub const __builtin_bswap16 = @import("std").zig.c_builtins.__builtin_bswap16; -pub const __builtin_bswap32 = @import("std").zig.c_builtins.__builtin_bswap32; -pub const __builtin_bswap64 = @import("std").zig.c_builtins.__builtin_bswap64; -pub const __builtin_signbit = @import("std").zig.c_builtins.__builtin_signbit; -pub const __builtin_signbitf = @import("std").zig.c_builtins.__builtin_signbitf; -pub const __builtin_popcount = @import("std").zig.c_builtins.__builtin_popcount; -pub const __builtin_ctz = @import("std").zig.c_builtins.__builtin_ctz; -pub const __builtin_clz = @import("std").zig.c_builtins.__builtin_clz; -pub const __builtin_sqrt = @import("std").zig.c_builtins.__builtin_sqrt; -pub const __builtin_sqrtf = @import("std").zig.c_builtins.__builtin_sqrtf; -pub const __builtin_sin = @import("std").zig.c_builtins.__builtin_sin; -pub const __builtin_sinf = @import("std").zig.c_builtins.__builtin_sinf; -pub const __builtin_cos = @import("std").zig.c_builtins.__builtin_cos; -pub const __builtin_cosf = @import("std").zig.c_builtins.__builtin_cosf; -pub const __builtin_exp = @import("std").zig.c_builtins.__builtin_exp; -pub const __builtin_expf = @import("std").zig.c_builtins.__builtin_expf; -pub const __builtin_exp2 = @import("std").zig.c_builtins.__builtin_exp2; -pub const __builtin_exp2f = @import("std").zig.c_builtins.__builtin_exp2f; -pub const __builtin_log = @import("std").zig.c_builtins.__builtin_log; -pub const __builtin_logf = @import("std").zig.c_builtins.__builtin_logf; -pub const __builtin_log2 = @import("std").zig.c_builtins.__builtin_log2; -pub const __builtin_log2f = @import("std").zig.c_builtins.__builtin_log2f; -pub const __builtin_log10 = @import("std").zig.c_builtins.__builtin_log10; -pub const __builtin_log10f = @import("std").zig.c_builtins.__builtin_log10f; -pub const __builtin_abs = @import("std").zig.c_builtins.__builtin_abs; -pub const __builtin_labs = @import("std").zig.c_builtins.__builtin_labs; -pub const __builtin_llabs = @import("std").zig.c_builtins.__builtin_llabs; -pub const __builtin_fabs = @import("std").zig.c_builtins.__builtin_fabs; -pub const __builtin_fabsf = @import("std").zig.c_builtins.__builtin_fabsf; -pub const __builtin_floor = @import("std").zig.c_builtins.__builtin_floor; -pub const __builtin_floorf = @import("std").zig.c_builtins.__builtin_floorf; -pub const __builtin_ceil = @import("std").zig.c_builtins.__builtin_ceil; -pub const __builtin_ceilf = @import("std").zig.c_builtins.__builtin_ceilf; -pub const __builtin_trunc = @import("std").zig.c_builtins.__builtin_trunc; -pub const __builtin_truncf = @import("std").zig.c_builtins.__builtin_truncf; -pub const __builtin_round = @import("std").zig.c_builtins.__builtin_round; -pub const __builtin_roundf = @import("std").zig.c_builtins.__builtin_roundf; -pub const __builtin_strlen = @import("std").zig.c_builtins.__builtin_strlen; -pub const __builtin_strcmp = @import("std").zig.c_builtins.__builtin_strcmp; -pub const __builtin_object_size = @import("std").zig.c_builtins.__builtin_object_size; -pub const __builtin___memset_chk = @import("std").zig.c_builtins.__builtin___memset_chk; -pub const __builtin_memset = @import("std").zig.c_builtins.__builtin_memset; -pub const __builtin___memcpy_chk = @import("std").zig.c_builtins.__builtin___memcpy_chk; -pub const __builtin_memcpy = @import("std").zig.c_builtins.__builtin_memcpy; -pub const __builtin_expect = @import("std").zig.c_builtins.__builtin_expect; -pub const __builtin_nanf = @import("std").zig.c_builtins.__builtin_nanf; -pub const __builtin_huge_valf = @import("std").zig.c_builtins.__builtin_huge_valf; -pub const __builtin_inff = @import("std").zig.c_builtins.__builtin_inff; -pub const __builtin_isnan = @import("std").zig.c_builtins.__builtin_isnan; -pub const __builtin_isinf = @import("std").zig.c_builtins.__builtin_isinf; -pub const __builtin_isinf_sign = @import("std").zig.c_builtins.__builtin_isinf_sign; -pub const __has_builtin = @import("std").zig.c_builtins.__has_builtin; -pub const __builtin_assume = @import("std").zig.c_builtins.__builtin_assume; -pub const __builtin_unreachable = @import("std").zig.c_builtins.__builtin_unreachable; -pub const __builtin_constant_p = @import("std").zig.c_builtins.__builtin_constant_p; -pub const __builtin_mul_overflow = @import("std").zig.c_builtins.__builtin_mul_overflow; -pub const int_least64_t = i64; -pub const uint_least64_t = u64; -pub const int_fast64_t = i64; -pub const uint_fast64_t = u64; -pub const int_least32_t = i32; -pub const uint_least32_t = u32; -pub const int_fast32_t = i32; -pub const uint_fast32_t = u32; -pub const int_least16_t = i16; -pub const uint_least16_t = u16; -pub const int_fast16_t = i16; -pub const uint_fast16_t = u16; -pub const int_least8_t = i8; -pub const uint_least8_t = u8; -pub const int_fast8_t = i8; -pub const uint_fast8_t = u8; -pub const intmax_t = c_longlong; -pub const uintmax_t = c_ulonglong; -pub const ptrdiff_t = c_longlong; -pub const wchar_t = c_ushort; -pub const max_align_t = extern struct { - __clang_max_align_nonce1: c_longlong align(8) = @import("std").mem.zeroes(c_longlong), - __clang_max_align_nonce2: c_longdouble align(16) = @import("std").mem.zeroes(c_longdouble), -}; -pub const __builtin_va_list = [*c]u8; -pub const __gnuc_va_list = __builtin_va_list; -pub const va_list = __builtin_va_list; -pub const ImVector_int = c_int; -pub const struct_ImVec4 = extern struct { - x: f32 = @import("std").mem.zeroes(f32), - y: f32 = @import("std").mem.zeroes(f32), - z: f32 = @import("std").mem.zeroes(f32), - w: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImVec4 = struct_ImVec4; -pub const ImTextureID = ?*anyopaque; -pub const ImDrawIdx = c_ushort; -pub const struct_ImVector_ImDrawIdx = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImDrawIdx = @import("std").mem.zeroes([*c]ImDrawIdx), -}; -pub const ImVector_ImDrawIdx = struct_ImVector_ImDrawIdx; -pub const struct_ImVec2 = extern struct { - x: f32 = @import("std").mem.zeroes(f32), - y: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImVec2 = struct_ImVec2; -pub const ImU32 = c_uint; -pub const struct_ImDrawVert = extern struct { - pos: ImVec2 = @import("std").mem.zeroes(ImVec2), - uv: ImVec2 = @import("std").mem.zeroes(ImVec2), - col: ImU32 = @import("std").mem.zeroes(ImU32), -}; -pub const ImDrawVert = struct_ImDrawVert; -pub const struct_ImVector_ImDrawVert = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImDrawVert = @import("std").mem.zeroes([*c]ImDrawVert), -}; -pub const ImVector_ImDrawVert = struct_ImVector_ImDrawVert; -pub const ImDrawListFlags = c_int; -pub const struct_ImVector_float = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]f32 = @import("std").mem.zeroes([*c]f32), -}; -pub const ImVector_float = struct_ImVector_float; -pub const ImWchar16 = c_ushort; -pub const ImWchar = ImWchar16; -pub const struct_ImVector_ImWchar = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImWchar = @import("std").mem.zeroes([*c]ImWchar), -}; -pub const ImVector_ImWchar = struct_ImVector_ImWchar; -// cimgui2.h:1156:18: warning: struct demoted to opaque type - has bitfield -pub const struct_ImFontGlyph = opaque {}; -pub const ImFontGlyph = struct_ImFontGlyph; -pub const struct_ImVector_ImFontGlyph = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: ?*ImFontGlyph = @import("std").mem.zeroes(?*ImFontGlyph), -}; -pub const ImVector_ImFontGlyph = struct_ImVector_ImFontGlyph; -pub const ImFontAtlasFlags = c_int; -pub const struct_ImVector_ImFontPtr = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c][*c]ImFont = @import("std").mem.zeroes([*c][*c]ImFont), -}; -pub const ImVector_ImFontPtr = struct_ImVector_ImFontPtr; -pub const struct_ImFontAtlasCustomRect = extern struct { - Width: c_ushort = @import("std").mem.zeroes(c_ushort), - Height: c_ushort = @import("std").mem.zeroes(c_ushort), - X: c_ushort = @import("std").mem.zeroes(c_ushort), - Y: c_ushort = @import("std").mem.zeroes(c_ushort), - GlyphID: c_uint = @import("std").mem.zeroes(c_uint), - GlyphAdvanceX: f32 = @import("std").mem.zeroes(f32), - GlyphOffset: ImVec2 = @import("std").mem.zeroes(ImVec2), - Font: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), -}; -pub const ImFontAtlasCustomRect = struct_ImFontAtlasCustomRect; -pub const struct_ImVector_ImFontAtlasCustomRect = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImFontAtlasCustomRect = @import("std").mem.zeroes([*c]ImFontAtlasCustomRect), -}; -pub const ImVector_ImFontAtlasCustomRect = struct_ImVector_ImFontAtlasCustomRect; -pub const struct_ImFontConfig = extern struct { - FontData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - FontDataSize: c_int = @import("std").mem.zeroes(c_int), - FontDataOwnedByAtlas: bool = @import("std").mem.zeroes(bool), - FontNo: c_int = @import("std").mem.zeroes(c_int), - SizePixels: f32 = @import("std").mem.zeroes(f32), - OversampleH: c_int = @import("std").mem.zeroes(c_int), - OversampleV: c_int = @import("std").mem.zeroes(c_int), - PixelSnapH: bool = @import("std").mem.zeroes(bool), - GlyphExtraSpacing: ImVec2 = @import("std").mem.zeroes(ImVec2), - GlyphOffset: ImVec2 = @import("std").mem.zeroes(ImVec2), - GlyphRanges: [*c]const ImWchar = @import("std").mem.zeroes([*c]const ImWchar), - GlyphMinAdvanceX: f32 = @import("std").mem.zeroes(f32), - GlyphMaxAdvanceX: f32 = @import("std").mem.zeroes(f32), - MergeMode: bool = @import("std").mem.zeroes(bool), - FontBuilderFlags: c_uint = @import("std").mem.zeroes(c_uint), - RasterizerMultiply: f32 = @import("std").mem.zeroes(f32), - EllipsisChar: ImWchar = @import("std").mem.zeroes(ImWchar), - Name: [40]u8 = @import("std").mem.zeroes([40]u8), - DstFont: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), -}; -pub const ImFontConfig = struct_ImFontConfig; -pub const struct_ImVector_ImFontConfig = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImFontConfig = @import("std").mem.zeroes([*c]ImFontConfig), -}; -pub const ImVector_ImFontConfig = struct_ImVector_ImFontConfig; -pub const struct_ImFontBuilderIO = extern struct { - FontBuilder_Build: ?*const fn ([*c]ImFontAtlas) callconv(.C) bool = @import("std").mem.zeroes(?*const fn ([*c]ImFontAtlas) callconv(.C) bool), -}; -pub const ImFontBuilderIO = struct_ImFontBuilderIO; -pub const struct_ImFontAtlas = extern struct { - Flags: ImFontAtlasFlags = @import("std").mem.zeroes(ImFontAtlasFlags), - TexID: ImTextureID = @import("std").mem.zeroes(ImTextureID), - TexDesiredWidth: c_int = @import("std").mem.zeroes(c_int), - TexGlyphPadding: c_int = @import("std").mem.zeroes(c_int), - Locked: bool = @import("std").mem.zeroes(bool), - TexReady: bool = @import("std").mem.zeroes(bool), - TexPixelsUseColors: bool = @import("std").mem.zeroes(bool), - TexPixelsAlpha8: [*c]u8 = @import("std").mem.zeroes([*c]u8), - TexPixelsRGBA32: [*c]c_uint = @import("std").mem.zeroes([*c]c_uint), - TexWidth: c_int = @import("std").mem.zeroes(c_int), - TexHeight: c_int = @import("std").mem.zeroes(c_int), - TexUvScale: ImVec2 = @import("std").mem.zeroes(ImVec2), - TexUvWhitePixel: ImVec2 = @import("std").mem.zeroes(ImVec2), - Fonts: ImVector_ImFontPtr = @import("std").mem.zeroes(ImVector_ImFontPtr), - CustomRects: ImVector_ImFontAtlasCustomRect = @import("std").mem.zeroes(ImVector_ImFontAtlasCustomRect), - ConfigData: ImVector_ImFontConfig = @import("std").mem.zeroes(ImVector_ImFontConfig), - TexUvLines: [64]ImVec4 = @import("std").mem.zeroes([64]ImVec4), - FontBuilderIO: [*c]const ImFontBuilderIO = @import("std").mem.zeroes([*c]const ImFontBuilderIO), - FontBuilderFlags: c_uint = @import("std").mem.zeroes(c_uint), - PackIdMouseCursors: c_int = @import("std").mem.zeroes(c_int), - PackIdLines: c_int = @import("std").mem.zeroes(c_int), -}; -pub const ImFontAtlas = struct_ImFontAtlas; -pub const ImU8 = u8; -pub const struct_ImFont = extern struct { - IndexAdvanceX: ImVector_float = @import("std").mem.zeroes(ImVector_float), - FallbackAdvanceX: f32 = @import("std").mem.zeroes(f32), - FontSize: f32 = @import("std").mem.zeroes(f32), - IndexLookup: ImVector_ImWchar = @import("std").mem.zeroes(ImVector_ImWchar), - Glyphs: ImVector_ImFontGlyph = @import("std").mem.zeroes(ImVector_ImFontGlyph), - FallbackGlyph: ?*const ImFontGlyph = @import("std").mem.zeroes(?*const ImFontGlyph), - ContainerAtlas: [*c]ImFontAtlas = @import("std").mem.zeroes([*c]ImFontAtlas), - ConfigData: [*c]const ImFontConfig = @import("std").mem.zeroes([*c]const ImFontConfig), - ConfigDataCount: c_short = @import("std").mem.zeroes(c_short), - FallbackChar: ImWchar = @import("std").mem.zeroes(ImWchar), - EllipsisChar: ImWchar = @import("std").mem.zeroes(ImWchar), - DotChar: ImWchar = @import("std").mem.zeroes(ImWchar), - DirtyLookupTables: bool = @import("std").mem.zeroes(bool), - Scale: f32 = @import("std").mem.zeroes(f32), - Ascent: f32 = @import("std").mem.zeroes(f32), - Descent: f32 = @import("std").mem.zeroes(f32), - MetricsTotalSurface: c_int = @import("std").mem.zeroes(c_int), - Used4kPagesMap: [2]ImU8 = @import("std").mem.zeroes([2]ImU8), -}; -pub const ImFont = struct_ImFont; -pub const struct_ImDrawListSharedData = extern struct { - TexUvWhitePixel: ImVec2 = @import("std").mem.zeroes(ImVec2), - Font: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), - FontSize: f32 = @import("std").mem.zeroes(f32), - CurveTessellationTol: f32 = @import("std").mem.zeroes(f32), - CircleSegmentMaxError: f32 = @import("std").mem.zeroes(f32), - ClipRectFullscreen: ImVec4 = @import("std").mem.zeroes(ImVec4), - InitialFlags: ImDrawListFlags = @import("std").mem.zeroes(ImDrawListFlags), - ArcFastVtx: [48]ImVec2 = @import("std").mem.zeroes([48]ImVec2), - ArcFastRadiusCutoff: f32 = @import("std").mem.zeroes(f32), - CircleSegmentCounts: [64]ImU8 = @import("std").mem.zeroes([64]ImU8), - TexUvLines: [*c]const ImVec4 = @import("std").mem.zeroes([*c]const ImVec4), -}; -pub const ImDrawListSharedData = struct_ImDrawListSharedData; -pub const struct_ImVector_ImVec4 = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImVec4 = @import("std").mem.zeroes([*c]ImVec4), -}; -pub const ImVector_ImVec4 = struct_ImVector_ImVec4; -pub const struct_ImVector_ImTextureID = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImTextureID = @import("std").mem.zeroes([*c]ImTextureID), -}; -pub const ImVector_ImTextureID = struct_ImVector_ImTextureID; -pub const struct_ImVector_ImVec2 = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImVec2 = @import("std").mem.zeroes([*c]ImVec2), -}; -pub const ImVector_ImVec2 = struct_ImVector_ImVec2; -pub const struct_ImDrawCmdHeader = extern struct { - ClipRect: ImVec4 = @import("std").mem.zeroes(ImVec4), - TextureId: ImTextureID = @import("std").mem.zeroes(ImTextureID), - VtxOffset: c_uint = @import("std").mem.zeroes(c_uint), -}; -pub const ImDrawCmdHeader = struct_ImDrawCmdHeader; -pub const ImDrawChannel = struct_ImDrawChannel; -pub const struct_ImVector_ImDrawChannel = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImDrawChannel = @import("std").mem.zeroes([*c]ImDrawChannel), -}; -pub const ImVector_ImDrawChannel = struct_ImVector_ImDrawChannel; -pub const struct_ImDrawListSplitter = extern struct { - _Current: c_int = @import("std").mem.zeroes(c_int), - _Count: c_int = @import("std").mem.zeroes(c_int), - _Channels: ImVector_ImDrawChannel = @import("std").mem.zeroes(ImVector_ImDrawChannel), -}; -pub const ImDrawListSplitter = struct_ImDrawListSplitter; -pub const struct_ImDrawList = extern struct { - CmdBuffer: ImVector_ImDrawCmd = @import("std").mem.zeroes(ImVector_ImDrawCmd), - IdxBuffer: ImVector_ImDrawIdx = @import("std").mem.zeroes(ImVector_ImDrawIdx), - VtxBuffer: ImVector_ImDrawVert = @import("std").mem.zeroes(ImVector_ImDrawVert), - Flags: ImDrawListFlags = @import("std").mem.zeroes(ImDrawListFlags), - _VtxCurrentIdx: c_uint = @import("std").mem.zeroes(c_uint), - _Data: [*c]const ImDrawListSharedData = @import("std").mem.zeroes([*c]const ImDrawListSharedData), - _OwnerName: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - _VtxWritePtr: [*c]ImDrawVert = @import("std").mem.zeroes([*c]ImDrawVert), - _IdxWritePtr: [*c]ImDrawIdx = @import("std").mem.zeroes([*c]ImDrawIdx), - _ClipRectStack: ImVector_ImVec4 = @import("std").mem.zeroes(ImVector_ImVec4), - _TextureIdStack: ImVector_ImTextureID = @import("std").mem.zeroes(ImVector_ImTextureID), - _Path: ImVector_ImVec2 = @import("std").mem.zeroes(ImVector_ImVec2), - _CmdHeader: ImDrawCmdHeader = @import("std").mem.zeroes(ImDrawCmdHeader), - _Splitter: ImDrawListSplitter = @import("std").mem.zeroes(ImDrawListSplitter), - _FringeScale: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImDrawList = struct_ImDrawList; -pub const ImDrawCallback = ?*const fn ([*c]const ImDrawList, [*c]const ImDrawCmd) callconv(.C) void; -pub const struct_ImDrawCmd = extern struct { - ClipRect: ImVec4 = @import("std").mem.zeroes(ImVec4), - TextureId: ImTextureID = @import("std").mem.zeroes(ImTextureID), - VtxOffset: c_uint = @import("std").mem.zeroes(c_uint), - IdxOffset: c_uint = @import("std").mem.zeroes(c_uint), - ElemCount: c_uint = @import("std").mem.zeroes(c_uint), - UserCallback: ImDrawCallback = @import("std").mem.zeroes(ImDrawCallback), - UserCallbackData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), -}; -pub const ImDrawCmd = struct_ImDrawCmd; -pub const struct_ImVector_ImDrawCmd = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImDrawCmd = @import("std").mem.zeroes([*c]ImDrawCmd), -}; -pub const ImVector_ImDrawCmd = struct_ImVector_ImDrawCmd; -pub const struct_ImDrawChannel = extern struct { - _CmdBuffer: ImVector_ImDrawCmd = @import("std").mem.zeroes(ImVector_ImDrawCmd), - _IdxBuffer: ImVector_ImDrawIdx = @import("std").mem.zeroes(ImVector_ImDrawIdx), -}; -pub const ImGuiID = c_uint; -pub const ImGuiViewportFlags = c_int; -pub const ImDrawData = struct_ImDrawData; -pub const struct_ImGuiViewport = extern struct { - ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - Flags: ImGuiViewportFlags = @import("std").mem.zeroes(ImGuiViewportFlags), - Pos: ImVec2 = @import("std").mem.zeroes(ImVec2), - Size: ImVec2 = @import("std").mem.zeroes(ImVec2), - WorkPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - WorkSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - DpiScale: f32 = @import("std").mem.zeroes(f32), - ParentViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DrawData: [*c]ImDrawData = @import("std").mem.zeroes([*c]ImDrawData), - RendererUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - PlatformUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - PlatformHandle: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - PlatformHandleRaw: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - PlatformRequestMove: bool = @import("std").mem.zeroes(bool), - PlatformRequestResize: bool = @import("std").mem.zeroes(bool), - PlatformRequestClose: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiViewport = struct_ImGuiViewport; -pub const struct_ImDrawData = extern struct { - Valid: bool = @import("std").mem.zeroes(bool), - CmdListsCount: c_int = @import("std").mem.zeroes(c_int), - TotalIdxCount: c_int = @import("std").mem.zeroes(c_int), - TotalVtxCount: c_int = @import("std").mem.zeroes(c_int), - CmdLists: [*c][*c]ImDrawList = @import("std").mem.zeroes([*c][*c]ImDrawList), - DisplayPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - DisplaySize: ImVec2 = @import("std").mem.zeroes(ImVec2), - FramebufferScale: ImVec2 = @import("std").mem.zeroes(ImVec2), - OwnerViewport: [*c]ImGuiViewport = @import("std").mem.zeroes([*c]ImGuiViewport), -}; -pub const struct_ImVector_ImU32 = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImU32 = @import("std").mem.zeroes([*c]ImU32), -}; -pub const ImVector_ImU32 = struct_ImVector_ImU32; -pub const struct_ImFontGlyphRangesBuilder = extern struct { - UsedChars: ImVector_ImU32 = @import("std").mem.zeroes(ImVector_ImU32), -}; -pub const ImFontGlyphRangesBuilder = struct_ImFontGlyphRangesBuilder; -pub const struct_ImColor = extern struct { - Value: ImVec4 = @import("std").mem.zeroes(ImVec4), -}; -pub const ImColor = struct_ImColor; -pub const ImGuiConfigFlags = c_int; -pub const ImGuiBackendFlags = c_int; -pub const struct_ImGuiPlatformImeData = extern struct { - WantVisible: bool = @import("std").mem.zeroes(bool), - InputPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - InputLineHeight: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiPlatformImeData = struct_ImGuiPlatformImeData; -pub const ImGuiModFlags = c_int; -pub const struct_ImGuiKeyData = extern struct { - Down: bool = @import("std").mem.zeroes(bool), - DownDuration: f32 = @import("std").mem.zeroes(f32), - DownDurationPrev: f32 = @import("std").mem.zeroes(f32), - AnalogValue: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiKeyData = struct_ImGuiKeyData; -pub const ImU16 = c_ushort; -pub const ImS8 = i8; -pub const struct_ImGuiIO = extern struct { - ConfigFlags: ImGuiConfigFlags = @import("std").mem.zeroes(ImGuiConfigFlags), - BackendFlags: ImGuiBackendFlags = @import("std").mem.zeroes(ImGuiBackendFlags), - DisplaySize: ImVec2 = @import("std").mem.zeroes(ImVec2), - DeltaTime: f32 = @import("std").mem.zeroes(f32), - IniSavingRate: f32 = @import("std").mem.zeroes(f32), - IniFilename: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - LogFilename: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - MouseDoubleClickTime: f32 = @import("std").mem.zeroes(f32), - MouseDoubleClickMaxDist: f32 = @import("std").mem.zeroes(f32), - MouseDragThreshold: f32 = @import("std").mem.zeroes(f32), - KeyRepeatDelay: f32 = @import("std").mem.zeroes(f32), - KeyRepeatRate: f32 = @import("std").mem.zeroes(f32), - UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - Fonts: [*c]ImFontAtlas = @import("std").mem.zeroes([*c]ImFontAtlas), - FontGlobalScale: f32 = @import("std").mem.zeroes(f32), - FontAllowUserScaling: bool = @import("std").mem.zeroes(bool), - FontDefault: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), - DisplayFramebufferScale: ImVec2 = @import("std").mem.zeroes(ImVec2), - ConfigDockingNoSplit: bool = @import("std").mem.zeroes(bool), - ConfigDockingWithShift: bool = @import("std").mem.zeroes(bool), - ConfigDockingAlwaysTabBar: bool = @import("std").mem.zeroes(bool), - ConfigDockingTransparentPayload: bool = @import("std").mem.zeroes(bool), - ConfigViewportsNoAutoMerge: bool = @import("std").mem.zeroes(bool), - ConfigViewportsNoTaskBarIcon: bool = @import("std").mem.zeroes(bool), - ConfigViewportsNoDecoration: bool = @import("std").mem.zeroes(bool), - ConfigViewportsNoDefaultParent: bool = @import("std").mem.zeroes(bool), - MouseDrawCursor: bool = @import("std").mem.zeroes(bool), - ConfigMacOSXBehaviors: bool = @import("std").mem.zeroes(bool), - ConfigInputTrickleEventQueue: bool = @import("std").mem.zeroes(bool), - ConfigInputTextCursorBlink: bool = @import("std").mem.zeroes(bool), - ConfigDragClickToInputText: bool = @import("std").mem.zeroes(bool), - ConfigWindowsResizeFromEdges: bool = @import("std").mem.zeroes(bool), - ConfigWindowsMoveFromTitleBarOnly: bool = @import("std").mem.zeroes(bool), - ConfigMemoryCompactTimer: f32 = @import("std").mem.zeroes(f32), - BackendPlatformName: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - BackendRendererName: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - BackendPlatformUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - BackendRendererUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - BackendLanguageUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - GetClipboardTextFn: ?*const fn (?*anyopaque) callconv(.C) [*c]const u8 = @import("std").mem.zeroes(?*const fn (?*anyopaque) callconv(.C) [*c]const u8), - SetClipboardTextFn: ?*const fn (?*anyopaque, [*c]const u8) callconv(.C) void = @import("std").mem.zeroes(?*const fn (?*anyopaque, [*c]const u8) callconv(.C) void), - ClipboardUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - SetPlatformImeDataFn: ?*const fn ([*c]ImGuiViewport, [*c]ImGuiPlatformImeData) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, [*c]ImGuiPlatformImeData) callconv(.C) void), - _UnusedPadding: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - WantCaptureMouse: bool = @import("std").mem.zeroes(bool), - WantCaptureKeyboard: bool = @import("std").mem.zeroes(bool), - WantTextInput: bool = @import("std").mem.zeroes(bool), - WantSetMousePos: bool = @import("std").mem.zeroes(bool), - WantSaveIniSettings: bool = @import("std").mem.zeroes(bool), - NavActive: bool = @import("std").mem.zeroes(bool), - NavVisible: bool = @import("std").mem.zeroes(bool), - Framerate: f32 = @import("std").mem.zeroes(f32), - MetricsRenderVertices: c_int = @import("std").mem.zeroes(c_int), - MetricsRenderIndices: c_int = @import("std").mem.zeroes(c_int), - MetricsRenderWindows: c_int = @import("std").mem.zeroes(c_int), - MetricsActiveWindows: c_int = @import("std").mem.zeroes(c_int), - MetricsActiveAllocations: c_int = @import("std").mem.zeroes(c_int), - MouseDelta: ImVec2 = @import("std").mem.zeroes(ImVec2), - KeyMap: [645]c_int = @import("std").mem.zeroes([645]c_int), - KeysDown: [645]bool = @import("std").mem.zeroes([645]bool), - MousePos: ImVec2 = @import("std").mem.zeroes(ImVec2), - MouseDown: [5]bool = @import("std").mem.zeroes([5]bool), - MouseWheel: f32 = @import("std").mem.zeroes(f32), - MouseWheelH: f32 = @import("std").mem.zeroes(f32), - MouseHoveredViewport: ImGuiID = @import("std").mem.zeroes(ImGuiID), - KeyCtrl: bool = @import("std").mem.zeroes(bool), - KeyShift: bool = @import("std").mem.zeroes(bool), - KeyAlt: bool = @import("std").mem.zeroes(bool), - KeySuper: bool = @import("std").mem.zeroes(bool), - NavInputs: [20]f32 = @import("std").mem.zeroes([20]f32), - KeyMods: ImGuiModFlags = @import("std").mem.zeroes(ImGuiModFlags), - KeysData: [645]ImGuiKeyData = @import("std").mem.zeroes([645]ImGuiKeyData), - WantCaptureMouseUnlessPopupClose: bool = @import("std").mem.zeroes(bool), - MousePosPrev: ImVec2 = @import("std").mem.zeroes(ImVec2), - MouseClickedPos: [5]ImVec2 = @import("std").mem.zeroes([5]ImVec2), - MouseClickedTime: [5]f64 = @import("std").mem.zeroes([5]f64), - MouseClicked: [5]bool = @import("std").mem.zeroes([5]bool), - MouseDoubleClicked: [5]bool = @import("std").mem.zeroes([5]bool), - MouseClickedCount: [5]ImU16 = @import("std").mem.zeroes([5]ImU16), - MouseClickedLastCount: [5]ImU16 = @import("std").mem.zeroes([5]ImU16), - MouseReleased: [5]bool = @import("std").mem.zeroes([5]bool), - MouseDownOwned: [5]bool = @import("std").mem.zeroes([5]bool), - MouseDownOwnedUnlessPopupClose: [5]bool = @import("std").mem.zeroes([5]bool), - MouseDownDuration: [5]f32 = @import("std").mem.zeroes([5]f32), - MouseDownDurationPrev: [5]f32 = @import("std").mem.zeroes([5]f32), - MouseDragMaxDistanceAbs: [5]ImVec2 = @import("std").mem.zeroes([5]ImVec2), - MouseDragMaxDistanceSqr: [5]f32 = @import("std").mem.zeroes([5]f32), - NavInputsDownDuration: [20]f32 = @import("std").mem.zeroes([20]f32), - NavInputsDownDurationPrev: [20]f32 = @import("std").mem.zeroes([20]f32), - PenPressure: f32 = @import("std").mem.zeroes(f32), - AppFocusLost: bool = @import("std").mem.zeroes(bool), - AppAcceptingEvents: bool = @import("std").mem.zeroes(bool), - BackendUsingLegacyKeyArrays: ImS8 = @import("std").mem.zeroes(ImS8), - BackendUsingLegacyNavInputArray: bool = @import("std").mem.zeroes(bool), - InputQueueSurrogate: ImWchar16 = @import("std").mem.zeroes(ImWchar16), - InputQueueCharacters: ImVector_ImWchar = @import("std").mem.zeroes(ImVector_ImWchar), -}; -pub const ImGuiIO = struct_ImGuiIO; -pub const ImU64 = c_ulonglong; -pub const struct_ImGuiPlatformMonitor = extern struct { - MainPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - MainSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - WorkPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - WorkSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - DpiScale: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiPlatformMonitor = struct_ImGuiPlatformMonitor; -pub const struct_ImVector_ImGuiPlatformMonitor = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiPlatformMonitor = @import("std").mem.zeroes([*c]ImGuiPlatformMonitor), -}; -pub const ImVector_ImGuiPlatformMonitor = struct_ImVector_ImGuiPlatformMonitor; -pub const struct_ImVector_ImGuiViewportPtr = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c][*c]ImGuiViewport = @import("std").mem.zeroes([*c][*c]ImGuiViewport), -}; -pub const ImVector_ImGuiViewportPtr = struct_ImVector_ImGuiViewportPtr; -pub const struct_ImGuiPlatformIO = extern struct { - Platform_CreateWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), - Platform_DestroyWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), - Platform_ShowWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), - Platform_SetWindowPos: ?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void), - Platform_GetWindowPos: ?*const fn ([*c]ImGuiViewport) callconv(.C) ImVec2 = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) ImVec2), - Platform_SetWindowSize: ?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void), - Platform_GetWindowSize: ?*const fn ([*c]ImGuiViewport) callconv(.C) ImVec2 = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) ImVec2), - Platform_SetWindowFocus: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), - Platform_GetWindowFocus: ?*const fn ([*c]ImGuiViewport) callconv(.C) bool = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) bool), - Platform_GetWindowMinimized: ?*const fn ([*c]ImGuiViewport) callconv(.C) bool = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) bool), - Platform_SetWindowTitle: ?*const fn ([*c]ImGuiViewport, [*c]const u8) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, [*c]const u8) callconv(.C) void), - Platform_SetWindowAlpha: ?*const fn ([*c]ImGuiViewport, f32) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, f32) callconv(.C) void), - Platform_UpdateWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), - Platform_RenderWindow: ?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void), - Platform_SwapBuffers: ?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void), - Platform_GetWindowDpiScale: ?*const fn ([*c]ImGuiViewport) callconv(.C) f32 = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) f32), - Platform_OnChangedViewport: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), - Platform_CreateVkSurface: ?*const fn ([*c]ImGuiViewport, ImU64, ?*const anyopaque, [*c]ImU64) callconv(.C) c_int = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ImU64, ?*const anyopaque, [*c]ImU64) callconv(.C) c_int), - Renderer_CreateWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), - Renderer_DestroyWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), - Renderer_SetWindowSize: ?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void), - Renderer_RenderWindow: ?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void), - Renderer_SwapBuffers: ?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void), - Monitors: ImVector_ImGuiPlatformMonitor = @import("std").mem.zeroes(ImVector_ImGuiPlatformMonitor), - Viewports: ImVector_ImGuiViewportPtr = @import("std").mem.zeroes(ImVector_ImGuiViewportPtr), -}; -pub const ImGuiPlatformIO = struct_ImGuiPlatformIO; -pub const struct_ImGuiInputEventMousePos = extern struct { - PosX: f32 = @import("std").mem.zeroes(f32), - PosY: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiInputEventMousePos = struct_ImGuiInputEventMousePos; -pub const struct_ImGuiInputEventMouseWheel = extern struct { - WheelX: f32 = @import("std").mem.zeroes(f32), - WheelY: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiInputEventMouseWheel = struct_ImGuiInputEventMouseWheel; -pub const struct_ImGuiInputEventMouseButton = extern struct { - Button: c_int = @import("std").mem.zeroes(c_int), - Down: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiInputEventMouseButton = struct_ImGuiInputEventMouseButton; -pub const struct_ImGuiInputEventMouseViewport = extern struct { - HoveredViewportID: ImGuiID = @import("std").mem.zeroes(ImGuiID), -}; -pub const ImGuiInputEventMouseViewport = struct_ImGuiInputEventMouseViewport; -pub const ImGuiKey = c_int; -pub const struct_ImGuiInputEventKey = extern struct { - Key: ImGuiKey = @import("std").mem.zeroes(ImGuiKey), - Down: bool = @import("std").mem.zeroes(bool), - AnalogValue: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiInputEventKey = struct_ImGuiInputEventKey; -pub const struct_ImGuiInputEventText = extern struct { - Char: c_uint = @import("std").mem.zeroes(c_uint), -}; -pub const ImGuiInputEventText = struct_ImGuiInputEventText; -pub const struct_ImGuiInputEventAppFocused = extern struct { - Focused: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiInputEventAppFocused = struct_ImGuiInputEventAppFocused; -const union_unnamed_1 = extern union { - MousePos: ImGuiInputEventMousePos, - MouseWheel: ImGuiInputEventMouseWheel, - MouseButton: ImGuiInputEventMouseButton, - MouseViewport: ImGuiInputEventMouseViewport, - Key: ImGuiInputEventKey, - Text: ImGuiInputEventText, - AppFocused: ImGuiInputEventAppFocused, -}; -pub const struct_ImGuiInputEvent = extern struct { - Type: ImGuiInputEventType = @import("std").mem.zeroes(ImGuiInputEventType), - Source: ImGuiInputSource = @import("std").mem.zeroes(ImGuiInputSource), - unnamed_0: union_unnamed_1 = @import("std").mem.zeroes(union_unnamed_1), - AddedByTestEngine: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiInputEvent = struct_ImGuiInputEvent; -pub const struct_ImVector_ImGuiInputEvent = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiInputEvent = @import("std").mem.zeroes([*c]ImGuiInputEvent), -}; -pub const ImVector_ImGuiInputEvent = struct_ImVector_ImGuiInputEvent; -pub const ImGuiDir = c_int; -pub const struct_ImGuiStyle = extern struct { - Alpha: f32 = @import("std").mem.zeroes(f32), - DisabledAlpha: f32 = @import("std").mem.zeroes(f32), - WindowPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), - WindowRounding: f32 = @import("std").mem.zeroes(f32), - WindowBorderSize: f32 = @import("std").mem.zeroes(f32), - WindowMinSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - WindowTitleAlign: ImVec2 = @import("std").mem.zeroes(ImVec2), - WindowMenuButtonPosition: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), - ChildRounding: f32 = @import("std").mem.zeroes(f32), - ChildBorderSize: f32 = @import("std").mem.zeroes(f32), - PopupRounding: f32 = @import("std").mem.zeroes(f32), - PopupBorderSize: f32 = @import("std").mem.zeroes(f32), - FramePadding: ImVec2 = @import("std").mem.zeroes(ImVec2), - FrameRounding: f32 = @import("std").mem.zeroes(f32), - FrameBorderSize: f32 = @import("std").mem.zeroes(f32), - ItemSpacing: ImVec2 = @import("std").mem.zeroes(ImVec2), - ItemInnerSpacing: ImVec2 = @import("std").mem.zeroes(ImVec2), - CellPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), - TouchExtraPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), - IndentSpacing: f32 = @import("std").mem.zeroes(f32), - ColumnsMinSpacing: f32 = @import("std").mem.zeroes(f32), - ScrollbarSize: f32 = @import("std").mem.zeroes(f32), - ScrollbarRounding: f32 = @import("std").mem.zeroes(f32), - GrabMinSize: f32 = @import("std").mem.zeroes(f32), - GrabRounding: f32 = @import("std").mem.zeroes(f32), - LogSliderDeadzone: f32 = @import("std").mem.zeroes(f32), - TabRounding: f32 = @import("std").mem.zeroes(f32), - TabBorderSize: f32 = @import("std").mem.zeroes(f32), - TabMinWidthForCloseButton: f32 = @import("std").mem.zeroes(f32), - ColorButtonPosition: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), - ButtonTextAlign: ImVec2 = @import("std").mem.zeroes(ImVec2), - SelectableTextAlign: ImVec2 = @import("std").mem.zeroes(ImVec2), - DisplayWindowPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), - DisplaySafeAreaPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), - MouseCursorScale: f32 = @import("std").mem.zeroes(f32), - AntiAliasedLines: bool = @import("std").mem.zeroes(bool), - AntiAliasedLinesUseTex: bool = @import("std").mem.zeroes(bool), - AntiAliasedFill: bool = @import("std").mem.zeroes(bool), - CurveTessellationTol: f32 = @import("std").mem.zeroes(f32), - CircleTessellationMaxError: f32 = @import("std").mem.zeroes(f32), - Colors: [55]ImVec4 = @import("std").mem.zeroes([55]ImVec4), -}; -pub const ImGuiStyle = struct_ImGuiStyle; -pub const ImGuiWindowFlags = c_int; -pub const ImGuiTabItemFlags = c_int; -pub const ImGuiDockNodeFlags = c_int; -pub const struct_ImGuiWindowClass = extern struct { - ClassId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - ParentViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - ViewportFlagsOverrideSet: ImGuiViewportFlags = @import("std").mem.zeroes(ImGuiViewportFlags), - ViewportFlagsOverrideClear: ImGuiViewportFlags = @import("std").mem.zeroes(ImGuiViewportFlags), - TabItemFlagsOverrideSet: ImGuiTabItemFlags = @import("std").mem.zeroes(ImGuiTabItemFlags), - DockNodeFlagsOverrideSet: ImGuiDockNodeFlags = @import("std").mem.zeroes(ImGuiDockNodeFlags), - DockingAlwaysTabBar: bool = @import("std").mem.zeroes(bool), - DockingAllowUnclassed: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiWindowClass = struct_ImGuiWindowClass; -pub const struct_ImVector_ImDrawListPtr = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c][*c]ImDrawList = @import("std").mem.zeroes([*c][*c]ImDrawList), -}; -pub const ImVector_ImDrawListPtr = struct_ImVector_ImDrawListPtr; -pub const struct_ImDrawDataBuilder = extern struct { - Layers: [2]ImVector_ImDrawListPtr = @import("std").mem.zeroes([2]ImVector_ImDrawListPtr), -}; -pub const ImDrawDataBuilder = struct_ImDrawDataBuilder; -pub const struct_ImGuiViewportP = extern struct { - _ImGuiViewport: ImGuiViewport = @import("std").mem.zeroes(ImGuiViewport), - Idx: c_int = @import("std").mem.zeroes(c_int), - LastFrameActive: c_int = @import("std").mem.zeroes(c_int), - LastFrontMostStampCount: c_int = @import("std").mem.zeroes(c_int), - LastNameHash: ImGuiID = @import("std").mem.zeroes(ImGuiID), - LastPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - Alpha: f32 = @import("std").mem.zeroes(f32), - LastAlpha: f32 = @import("std").mem.zeroes(f32), - PlatformMonitor: c_short = @import("std").mem.zeroes(c_short), - PlatformWindowCreated: bool = @import("std").mem.zeroes(bool), - Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - DrawListsLastFrame: [2]c_int = @import("std").mem.zeroes([2]c_int), - DrawLists: [2][*c]ImDrawList = @import("std").mem.zeroes([2][*c]ImDrawList), - DrawDataP: ImDrawData = @import("std").mem.zeroes(ImDrawData), - DrawDataBuilder: ImDrawDataBuilder = @import("std").mem.zeroes(ImDrawDataBuilder), - LastPlatformPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - LastPlatformSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - LastRendererSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - WorkOffsetMin: ImVec2 = @import("std").mem.zeroes(ImVec2), - WorkOffsetMax: ImVec2 = @import("std").mem.zeroes(ImVec2), - BuildWorkOffsetMin: ImVec2 = @import("std").mem.zeroes(ImVec2), - BuildWorkOffsetMax: ImVec2 = @import("std").mem.zeroes(ImVec2), -}; -pub const ImGuiViewportP = struct_ImGuiViewportP; -// cimgui2.h:2527:15: warning: struct demoted to opaque type - has bitfield -pub const struct_ImGuiWindow = opaque {}; -pub const ImGuiWindow = struct_ImGuiWindow; -pub const struct_ImVector_ImGuiWindowPtr = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]?*ImGuiWindow = @import("std").mem.zeroes([*c]?*ImGuiWindow), -}; -pub const ImVector_ImGuiWindowPtr = struct_ImVector_ImGuiWindowPtr; -pub const ImGuiItemFlags = c_int; -pub const ImGuiItemStatusFlags = c_int; -pub const struct_ImRect = extern struct { - Min: ImVec2 = @import("std").mem.zeroes(ImVec2), - Max: ImVec2 = @import("std").mem.zeroes(ImVec2), -}; -pub const ImRect = struct_ImRect; -pub const struct_ImGuiLastItemData = extern struct { - ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - InFlags: ImGuiItemFlags = @import("std").mem.zeroes(ImGuiItemFlags), - StatusFlags: ImGuiItemStatusFlags = @import("std").mem.zeroes(ImGuiItemStatusFlags), - Rect: ImRect = @import("std").mem.zeroes(ImRect), - NavRect: ImRect = @import("std").mem.zeroes(ImRect), - DisplayRect: ImRect = @import("std").mem.zeroes(ImRect), -}; -pub const ImGuiLastItemData = struct_ImGuiLastItemData; -pub const struct_ImGuiStackSizes = extern struct { - SizeOfIDStack: c_short = @import("std").mem.zeroes(c_short), - SizeOfColorStack: c_short = @import("std").mem.zeroes(c_short), - SizeOfStyleVarStack: c_short = @import("std").mem.zeroes(c_short), - SizeOfFontStack: c_short = @import("std").mem.zeroes(c_short), - SizeOfFocusScopeStack: c_short = @import("std").mem.zeroes(c_short), - SizeOfGroupStack: c_short = @import("std").mem.zeroes(c_short), - SizeOfItemFlagsStack: c_short = @import("std").mem.zeroes(c_short), - SizeOfBeginPopupStack: c_short = @import("std").mem.zeroes(c_short), - SizeOfDisabledStack: c_short = @import("std").mem.zeroes(c_short), -}; -pub const ImGuiStackSizes = struct_ImGuiStackSizes; -pub const struct_ImGuiWindowStackData = extern struct { - Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - ParentLastItemDataBackup: ImGuiLastItemData = @import("std").mem.zeroes(ImGuiLastItemData), - StackSizesOnBegin: ImGuiStackSizes = @import("std").mem.zeroes(ImGuiStackSizes), -}; -pub const ImGuiWindowStackData = struct_ImGuiWindowStackData; -pub const struct_ImVector_ImGuiWindowStackData = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiWindowStackData = @import("std").mem.zeroes([*c]ImGuiWindowStackData), -}; -pub const ImVector_ImGuiWindowStackData = struct_ImVector_ImGuiWindowStackData; -const union_unnamed_2 = extern union { - val_i: c_int, - val_f: f32, - val_p: ?*anyopaque, -}; -pub const struct_ImGuiStoragePair = extern struct { - key: ImGuiID = @import("std").mem.zeroes(ImGuiID), - unnamed_0: union_unnamed_2 = @import("std").mem.zeroes(union_unnamed_2), -}; -pub const ImGuiStoragePair = struct_ImGuiStoragePair; -pub const struct_ImVector_ImGuiStoragePair = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiStoragePair = @import("std").mem.zeroes([*c]ImGuiStoragePair), -}; -pub const ImVector_ImGuiStoragePair = struct_ImVector_ImGuiStoragePair; -pub const struct_ImGuiStorage = extern struct { - Data: ImVector_ImGuiStoragePair = @import("std").mem.zeroes(ImVector_ImGuiStoragePair), -}; -pub const ImGuiStorage = struct_ImGuiStorage; -pub const ImS32 = c_int; -pub const ImS16 = c_short; -pub const struct_ImGuiTabItem = extern struct { - ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - Flags: ImGuiTabItemFlags = @import("std").mem.zeroes(ImGuiTabItemFlags), - Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - LastFrameVisible: c_int = @import("std").mem.zeroes(c_int), - LastFrameSelected: c_int = @import("std").mem.zeroes(c_int), - Offset: f32 = @import("std").mem.zeroes(f32), - Width: f32 = @import("std").mem.zeroes(f32), - ContentWidth: f32 = @import("std").mem.zeroes(f32), - RequestedWidth: f32 = @import("std").mem.zeroes(f32), - NameOffset: ImS32 = @import("std").mem.zeroes(ImS32), - BeginOrder: ImS16 = @import("std").mem.zeroes(ImS16), - IndexDuringLayout: ImS16 = @import("std").mem.zeroes(ImS16), - WantClose: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiTabItem = struct_ImGuiTabItem; -pub const struct_ImVector_ImGuiTabItem = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiTabItem = @import("std").mem.zeroes([*c]ImGuiTabItem), -}; -pub const ImVector_ImGuiTabItem = struct_ImVector_ImGuiTabItem; -pub const ImGuiTabBarFlags = c_int; -pub const struct_ImVector_char = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]u8 = @import("std").mem.zeroes([*c]u8), -}; -pub const ImVector_char = struct_ImVector_char; -pub const struct_ImGuiTextBuffer = extern struct { - Buf: ImVector_char = @import("std").mem.zeroes(ImVector_char), -}; -pub const ImGuiTextBuffer = struct_ImGuiTextBuffer; -pub const struct_ImGuiTabBar = extern struct { - Tabs: ImVector_ImGuiTabItem = @import("std").mem.zeroes(ImVector_ImGuiTabItem), - Flags: ImGuiTabBarFlags = @import("std").mem.zeroes(ImGuiTabBarFlags), - ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - SelectedTabId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NextSelectedTabId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - VisibleTabId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - CurrFrameVisible: c_int = @import("std").mem.zeroes(c_int), - PrevFrameVisible: c_int = @import("std").mem.zeroes(c_int), - BarRect: ImRect = @import("std").mem.zeroes(ImRect), - CurrTabsContentsHeight: f32 = @import("std").mem.zeroes(f32), - PrevTabsContentsHeight: f32 = @import("std").mem.zeroes(f32), - WidthAllTabs: f32 = @import("std").mem.zeroes(f32), - WidthAllTabsIdeal: f32 = @import("std").mem.zeroes(f32), - ScrollingAnim: f32 = @import("std").mem.zeroes(f32), - ScrollingTarget: f32 = @import("std").mem.zeroes(f32), - ScrollingTargetDistToVisibility: f32 = @import("std").mem.zeroes(f32), - ScrollingSpeed: f32 = @import("std").mem.zeroes(f32), - ScrollingRectMinX: f32 = @import("std").mem.zeroes(f32), - ScrollingRectMaxX: f32 = @import("std").mem.zeroes(f32), - ReorderRequestTabId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - ReorderRequestOffset: ImS16 = @import("std").mem.zeroes(ImS16), - BeginCount: ImS8 = @import("std").mem.zeroes(ImS8), - WantLayout: bool = @import("std").mem.zeroes(bool), - VisibleTabWasSubmitted: bool = @import("std").mem.zeroes(bool), - TabsAddedNew: bool = @import("std").mem.zeroes(bool), - TabsActiveCount: ImS16 = @import("std").mem.zeroes(ImS16), - LastTabItemIdx: ImS16 = @import("std").mem.zeroes(ImS16), - ItemSpacingY: f32 = @import("std").mem.zeroes(f32), - FramePadding: ImVec2 = @import("std").mem.zeroes(ImVec2), - BackupCursorPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - TabsNames: ImGuiTextBuffer = @import("std").mem.zeroes(ImGuiTextBuffer), -}; -pub const ImGuiTabBar = struct_ImGuiTabBar; -// cimgui2.h:2005:24: warning: struct demoted to opaque type - has bitfield -pub const struct_ImGuiDockNode = opaque {}; -pub const ImGuiDockNode = struct_ImGuiDockNode; -pub const struct_ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN = extern struct { - Storage: [5]ImU32 = @import("std").mem.zeroes([5]ImU32), -}; -pub const ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN = struct_ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN; -pub const ImBitArrayForNamedKeys = ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN; -pub const ImGuiNextItemDataFlags = c_int; -pub const ImGuiCond = c_int; -pub const struct_ImGuiNextItemData = extern struct { - Flags: ImGuiNextItemDataFlags = @import("std").mem.zeroes(ImGuiNextItemDataFlags), - Width: f32 = @import("std").mem.zeroes(f32), - FocusScopeId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - OpenCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), - OpenVal: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiNextItemData = struct_ImGuiNextItemData; -pub const ImGuiNextWindowDataFlags = c_int; -pub const struct_ImGuiSizeCallbackData = extern struct { - UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - Pos: ImVec2 = @import("std").mem.zeroes(ImVec2), - CurrentSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - DesiredSize: ImVec2 = @import("std").mem.zeroes(ImVec2), -}; -pub const ImGuiSizeCallbackData = struct_ImGuiSizeCallbackData; -pub const ImGuiSizeCallback = ?*const fn ([*c]ImGuiSizeCallbackData) callconv(.C) void; -pub const struct_ImGuiNextWindowData = extern struct { - Flags: ImGuiNextWindowDataFlags = @import("std").mem.zeroes(ImGuiNextWindowDataFlags), - PosCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), - SizeCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), - CollapsedCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), - DockCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), - PosVal: ImVec2 = @import("std").mem.zeroes(ImVec2), - PosPivotVal: ImVec2 = @import("std").mem.zeroes(ImVec2), - SizeVal: ImVec2 = @import("std").mem.zeroes(ImVec2), - ContentSizeVal: ImVec2 = @import("std").mem.zeroes(ImVec2), - ScrollVal: ImVec2 = @import("std").mem.zeroes(ImVec2), - PosUndock: bool = @import("std").mem.zeroes(bool), - CollapsedVal: bool = @import("std").mem.zeroes(bool), - SizeConstraintRect: ImRect = @import("std").mem.zeroes(ImRect), - SizeCallback: ImGuiSizeCallback = @import("std").mem.zeroes(ImGuiSizeCallback), - SizeCallbackUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - BgAlphaVal: f32 = @import("std").mem.zeroes(f32), - ViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DockId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - WindowClass: ImGuiWindowClass = @import("std").mem.zeroes(ImGuiWindowClass), - MenuBarOffsetMinVal: ImVec2 = @import("std").mem.zeroes(ImVec2), -}; -pub const ImGuiNextWindowData = struct_ImGuiNextWindowData; -pub const ImGuiCol = c_int; -pub const struct_ImGuiColorMod = extern struct { - Col: ImGuiCol = @import("std").mem.zeroes(ImGuiCol), - BackupValue: ImVec4 = @import("std").mem.zeroes(ImVec4), -}; -pub const ImGuiColorMod = struct_ImGuiColorMod; -pub const struct_ImVector_ImGuiColorMod = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiColorMod = @import("std").mem.zeroes([*c]ImGuiColorMod), -}; -pub const ImVector_ImGuiColorMod = struct_ImVector_ImGuiColorMod; -pub const ImGuiStyleVar = c_int; -const union_unnamed_3 = extern union { - BackupInt: [2]c_int, - BackupFloat: [2]f32, -}; -pub const struct_ImGuiStyleMod = extern struct { - VarIdx: ImGuiStyleVar = @import("std").mem.zeroes(ImGuiStyleVar), - unnamed_0: union_unnamed_3 = @import("std").mem.zeroes(union_unnamed_3), -}; -pub const ImGuiStyleMod = struct_ImGuiStyleMod; -pub const struct_ImVector_ImGuiStyleMod = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiStyleMod = @import("std").mem.zeroes([*c]ImGuiStyleMod), -}; -pub const ImVector_ImGuiStyleMod = struct_ImVector_ImGuiStyleMod; -pub const struct_ImVector_ImGuiID = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiID = @import("std").mem.zeroes([*c]ImGuiID), -}; -pub const ImVector_ImGuiID = struct_ImVector_ImGuiID; -pub const struct_ImVector_ImGuiItemFlags = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiItemFlags = @import("std").mem.zeroes([*c]ImGuiItemFlags), -}; -pub const ImVector_ImGuiItemFlags = struct_ImVector_ImGuiItemFlags; -pub const struct_ImVec1 = extern struct { - x: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImVec1 = struct_ImVec1; -pub const struct_ImGuiGroupData = extern struct { - WindowID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - BackupCursorPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - BackupCursorMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - BackupIndent: ImVec1 = @import("std").mem.zeroes(ImVec1), - BackupGroupOffset: ImVec1 = @import("std").mem.zeroes(ImVec1), - BackupCurrLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - BackupCurrLineTextBaseOffset: f32 = @import("std").mem.zeroes(f32), - BackupActiveIdIsAlive: ImGuiID = @import("std").mem.zeroes(ImGuiID), - BackupActiveIdPreviousFrameIsAlive: bool = @import("std").mem.zeroes(bool), - BackupHoveredIdIsAlive: bool = @import("std").mem.zeroes(bool), - EmitItem: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiGroupData = struct_ImGuiGroupData; -pub const struct_ImVector_ImGuiGroupData = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiGroupData = @import("std").mem.zeroes([*c]ImGuiGroupData), -}; -pub const ImVector_ImGuiGroupData = struct_ImVector_ImGuiGroupData; -pub const struct_ImGuiPopupData = extern struct { - PopupId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - SourceWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - ParentNavLayer: c_int = @import("std").mem.zeroes(c_int), - OpenFrameCount: c_int = @import("std").mem.zeroes(c_int), - OpenParentId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - OpenPopupPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - OpenMousePos: ImVec2 = @import("std").mem.zeroes(ImVec2), -}; -pub const ImGuiPopupData = struct_ImGuiPopupData; -pub const struct_ImVector_ImGuiPopupData = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiPopupData = @import("std").mem.zeroes([*c]ImGuiPopupData), -}; -pub const ImVector_ImGuiPopupData = struct_ImVector_ImGuiPopupData; -pub const struct_ImVector_ImGuiViewportPPtr = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c][*c]ImGuiViewportP = @import("std").mem.zeroes([*c][*c]ImGuiViewportP), -}; -pub const ImVector_ImGuiViewportPPtr = struct_ImVector_ImGuiViewportPPtr; -pub const ImGuiActivateFlags = c_int; -pub const ImGuiNavMoveFlags = c_int; -pub const ImGuiScrollFlags = c_int; -pub const struct_ImGuiNavItemData = extern struct { - Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - FocusScopeId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - RectRel: ImRect = @import("std").mem.zeroes(ImRect), - InFlags: ImGuiItemFlags = @import("std").mem.zeroes(ImGuiItemFlags), - DistBox: f32 = @import("std").mem.zeroes(f32), - DistCenter: f32 = @import("std").mem.zeroes(f32), - DistAxial: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiNavItemData = struct_ImGuiNavItemData; -pub const ImGuiMouseCursor = c_int; -pub const ImGuiDragDropFlags = c_int; -pub const struct_ImGuiPayload = extern struct { - Data: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - DataSize: c_int = @import("std").mem.zeroes(c_int), - SourceId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - SourceParentId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DataFrameCount: c_int = @import("std").mem.zeroes(c_int), - DataType: [33]u8 = @import("std").mem.zeroes([33]u8), - Preview: bool = @import("std").mem.zeroes(bool), - Delivery: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiPayload = struct_ImGuiPayload; -pub const struct_ImVector_unsigned_char = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]u8 = @import("std").mem.zeroes([*c]u8), -}; -pub const ImVector_unsigned_char = struct_ImVector_unsigned_char; -pub const struct_ImGuiListClipper = extern struct { - DisplayStart: c_int = @import("std").mem.zeroes(c_int), - DisplayEnd: c_int = @import("std").mem.zeroes(c_int), - ItemsCount: c_int = @import("std").mem.zeroes(c_int), - ItemsHeight: f32 = @import("std").mem.zeroes(f32), - StartPosY: f32 = @import("std").mem.zeroes(f32), - TempData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), -}; -pub const ImGuiListClipper = struct_ImGuiListClipper; -pub const struct_ImGuiListClipperRange = extern struct { - Min: c_int = @import("std").mem.zeroes(c_int), - Max: c_int = @import("std").mem.zeroes(c_int), - PosToIndexConvert: bool = @import("std").mem.zeroes(bool), - PosToIndexOffsetMin: ImS8 = @import("std").mem.zeroes(ImS8), - PosToIndexOffsetMax: ImS8 = @import("std").mem.zeroes(ImS8), -}; -pub const ImGuiListClipperRange = struct_ImGuiListClipperRange; -pub const struct_ImVector_ImGuiListClipperRange = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiListClipperRange = @import("std").mem.zeroes([*c]ImGuiListClipperRange), -}; -pub const ImVector_ImGuiListClipperRange = struct_ImVector_ImGuiListClipperRange; -pub const struct_ImGuiListClipperData = extern struct { - ListClipper: [*c]ImGuiListClipper = @import("std").mem.zeroes([*c]ImGuiListClipper), - LossynessOffset: f32 = @import("std").mem.zeroes(f32), - StepNo: c_int = @import("std").mem.zeroes(c_int), - ItemsFrozen: c_int = @import("std").mem.zeroes(c_int), - Ranges: ImVector_ImGuiListClipperRange = @import("std").mem.zeroes(ImVector_ImGuiListClipperRange), -}; -pub const ImGuiListClipperData = struct_ImGuiListClipperData; -pub const struct_ImVector_ImGuiListClipperData = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiListClipperData = @import("std").mem.zeroes([*c]ImGuiListClipperData), -}; -pub const ImVector_ImGuiListClipperData = struct_ImVector_ImGuiListClipperData; -pub const ImGuiTableFlags = c_int; -pub const struct_ImGuiTableTempData = extern struct { - TableIndex: c_int = @import("std").mem.zeroes(c_int), - LastTimeActive: f32 = @import("std").mem.zeroes(f32), - UserOuterSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - DrawSplitter: ImDrawListSplitter = @import("std").mem.zeroes(ImDrawListSplitter), - HostBackupWorkRect: ImRect = @import("std").mem.zeroes(ImRect), - HostBackupParentWorkRect: ImRect = @import("std").mem.zeroes(ImRect), - HostBackupPrevLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - HostBackupCurrLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - HostBackupCursorMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - HostBackupColumnsOffset: ImVec1 = @import("std").mem.zeroes(ImVec1), - HostBackupItemWidth: f32 = @import("std").mem.zeroes(f32), - HostBackupItemWidthStackSize: c_int = @import("std").mem.zeroes(c_int), -}; -pub const ImGuiTableTempData = struct_ImGuiTableTempData; -pub const ImGuiTableColumnFlags = c_int; -pub const ImGuiTableColumnIdx = ImS8; -pub const ImGuiTableDrawChannelIdx = ImU8; -// cimgui2.h:2685:10: warning: struct demoted to opaque type - has bitfield -pub const struct_ImGuiTableColumn = opaque {}; -pub const ImGuiTableColumn = struct_ImGuiTableColumn; -pub const struct_ImSpan_ImGuiTableColumn = extern struct { - Data: ?*ImGuiTableColumn = @import("std").mem.zeroes(?*ImGuiTableColumn), - DataEnd: ?*ImGuiTableColumn = @import("std").mem.zeroes(?*ImGuiTableColumn), -}; -pub const ImSpan_ImGuiTableColumn = struct_ImSpan_ImGuiTableColumn; -pub const struct_ImSpan_ImGuiTableColumnIdx = extern struct { - Data: [*c]ImGuiTableColumnIdx = @import("std").mem.zeroes([*c]ImGuiTableColumnIdx), - DataEnd: [*c]ImGuiTableColumnIdx = @import("std").mem.zeroes([*c]ImGuiTableColumnIdx), -}; -pub const ImSpan_ImGuiTableColumnIdx = struct_ImSpan_ImGuiTableColumnIdx; -pub const struct_ImGuiTableCellData = extern struct { - BgColor: ImU32 = @import("std").mem.zeroes(ImU32), - Column: ImGuiTableColumnIdx = @import("std").mem.zeroes(ImGuiTableColumnIdx), -}; -pub const ImGuiTableCellData = struct_ImGuiTableCellData; -pub const struct_ImSpan_ImGuiTableCellData = extern struct { - Data: [*c]ImGuiTableCellData = @import("std").mem.zeroes([*c]ImGuiTableCellData), - DataEnd: [*c]ImGuiTableCellData = @import("std").mem.zeroes([*c]ImGuiTableCellData), -}; -pub const ImSpan_ImGuiTableCellData = struct_ImSpan_ImGuiTableCellData; -// cimgui2.h:2737:24: warning: struct demoted to opaque type - has bitfield -pub const struct_ImGuiTable = opaque {}; -pub const ImGuiTable = struct_ImGuiTable; -pub const struct_ImVector_ImGuiTableTempData = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiTableTempData = @import("std").mem.zeroes([*c]ImGuiTableTempData), -}; -pub const ImVector_ImGuiTableTempData = struct_ImVector_ImGuiTableTempData; -pub const struct_ImVector_ImGuiTable = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: ?*ImGuiTable = @import("std").mem.zeroes(?*ImGuiTable), -}; -pub const ImVector_ImGuiTable = struct_ImVector_ImGuiTable; -pub const ImPoolIdx = c_int; -pub const struct_ImPool_ImGuiTable = extern struct { - Buf: ImVector_ImGuiTable = @import("std").mem.zeroes(ImVector_ImGuiTable), - Map: ImGuiStorage = @import("std").mem.zeroes(ImGuiStorage), - FreeIdx: ImPoolIdx = @import("std").mem.zeroes(ImPoolIdx), - AliveCount: ImPoolIdx = @import("std").mem.zeroes(ImPoolIdx), -}; -pub const ImPool_ImGuiTable = struct_ImPool_ImGuiTable; -pub const struct_ImVector_ImGuiTabBar = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiTabBar = @import("std").mem.zeroes([*c]ImGuiTabBar), -}; -pub const ImVector_ImGuiTabBar = struct_ImVector_ImGuiTabBar; -pub const struct_ImPool_ImGuiTabBar = extern struct { - Buf: ImVector_ImGuiTabBar = @import("std").mem.zeroes(ImVector_ImGuiTabBar), - Map: ImGuiStorage = @import("std").mem.zeroes(ImGuiStorage), - FreeIdx: ImPoolIdx = @import("std").mem.zeroes(ImPoolIdx), - AliveCount: ImPoolIdx = @import("std").mem.zeroes(ImPoolIdx), -}; -pub const ImPool_ImGuiTabBar = struct_ImPool_ImGuiTabBar; -pub const struct_ImGuiPtrOrIndex = extern struct { - Ptr: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - Index: c_int = @import("std").mem.zeroes(c_int), -}; -pub const ImGuiPtrOrIndex = struct_ImGuiPtrOrIndex; -pub const struct_ImVector_ImGuiPtrOrIndex = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiPtrOrIndex = @import("std").mem.zeroes([*c]ImGuiPtrOrIndex), -}; -pub const ImVector_ImGuiPtrOrIndex = struct_ImVector_ImGuiPtrOrIndex; -pub const struct_ImGuiShrinkWidthItem = extern struct { - Index: c_int = @import("std").mem.zeroes(c_int), - Width: f32 = @import("std").mem.zeroes(f32), - InitialWidth: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiShrinkWidthItem = struct_ImGuiShrinkWidthItem; -pub const struct_ImVector_ImGuiShrinkWidthItem = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiShrinkWidthItem = @import("std").mem.zeroes([*c]ImGuiShrinkWidthItem), -}; -pub const ImVector_ImGuiShrinkWidthItem = struct_ImVector_ImGuiShrinkWidthItem; -pub const struct_StbUndoRecord = extern struct { - where: c_int = @import("std").mem.zeroes(c_int), - insert_length: c_int = @import("std").mem.zeroes(c_int), - delete_length: c_int = @import("std").mem.zeroes(c_int), - char_storage: c_int = @import("std").mem.zeroes(c_int), -}; -pub const StbUndoRecord = struct_StbUndoRecord; -pub const struct_StbUndoState = extern struct { - undo_rec: [99]StbUndoRecord = @import("std").mem.zeroes([99]StbUndoRecord), - undo_char: [999]ImWchar = @import("std").mem.zeroes([999]ImWchar), - undo_point: c_short = @import("std").mem.zeroes(c_short), - redo_point: c_short = @import("std").mem.zeroes(c_short), - undo_char_point: c_int = @import("std").mem.zeroes(c_int), - redo_char_point: c_int = @import("std").mem.zeroes(c_int), -}; -pub const StbUndoState = struct_StbUndoState; -pub const struct_STB_TexteditState = extern struct { - cursor: c_int = @import("std").mem.zeroes(c_int), - select_start: c_int = @import("std").mem.zeroes(c_int), - select_end: c_int = @import("std").mem.zeroes(c_int), - insert_mode: u8 = @import("std").mem.zeroes(u8), - row_count_per_page: c_int = @import("std").mem.zeroes(c_int), - cursor_at_end_of_line: u8 = @import("std").mem.zeroes(u8), - initialized: u8 = @import("std").mem.zeroes(u8), - has_preferred_x: u8 = @import("std").mem.zeroes(u8), - single_line: u8 = @import("std").mem.zeroes(u8), - padding1: u8 = @import("std").mem.zeroes(u8), - padding2: u8 = @import("std").mem.zeroes(u8), - padding3: u8 = @import("std").mem.zeroes(u8), - preferred_x: f32 = @import("std").mem.zeroes(f32), - undostate: StbUndoState = @import("std").mem.zeroes(StbUndoState), -}; -pub const STB_TexteditState = struct_STB_TexteditState; -pub const ImGuiInputTextFlags = c_int; -pub const struct_ImGuiInputTextState = extern struct { - ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - CurLenW: c_int = @import("std").mem.zeroes(c_int), - CurLenA: c_int = @import("std").mem.zeroes(c_int), - TextW: ImVector_ImWchar = @import("std").mem.zeroes(ImVector_ImWchar), - TextA: ImVector_char = @import("std").mem.zeroes(ImVector_char), - InitialTextA: ImVector_char = @import("std").mem.zeroes(ImVector_char), - TextAIsValid: bool = @import("std").mem.zeroes(bool), - BufCapacityA: c_int = @import("std").mem.zeroes(c_int), - ScrollX: f32 = @import("std").mem.zeroes(f32), - Stb: STB_TexteditState = @import("std").mem.zeroes(STB_TexteditState), - CursorAnim: f32 = @import("std").mem.zeroes(f32), - CursorFollow: bool = @import("std").mem.zeroes(bool), - SelectedAllMouseLock: bool = @import("std").mem.zeroes(bool), - Edited: bool = @import("std").mem.zeroes(bool), - Flags: ImGuiInputTextFlags = @import("std").mem.zeroes(ImGuiInputTextFlags), -}; -pub const ImGuiInputTextState = struct_ImGuiInputTextState; -pub const ImGuiColorEditFlags = c_int; -pub const ImGuiLayoutType = c_int; -pub const struct_ImGuiComboPreviewData = extern struct { - PreviewRect: ImRect = @import("std").mem.zeroes(ImRect), - BackupCursorPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - BackupCursorMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - BackupCursorPosPrevLine: ImVec2 = @import("std").mem.zeroes(ImVec2), - BackupPrevLineTextBaseOffset: f32 = @import("std").mem.zeroes(f32), - BackupLayout: ImGuiLayoutType = @import("std").mem.zeroes(ImGuiLayoutType), -}; -pub const ImGuiComboPreviewData = struct_ImGuiComboPreviewData; -pub const struct_ImGuiDockRequest = opaque {}; -pub const ImGuiDockRequest = struct_ImGuiDockRequest; -pub const struct_ImVector_ImGuiDockRequest = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: ?*ImGuiDockRequest = @import("std").mem.zeroes(?*ImGuiDockRequest), -}; -pub const ImVector_ImGuiDockRequest = struct_ImVector_ImGuiDockRequest; -pub const struct_ImGuiDockNodeSettings = opaque {}; -pub const ImGuiDockNodeSettings = struct_ImGuiDockNodeSettings; -pub const struct_ImVector_ImGuiDockNodeSettings = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: ?*ImGuiDockNodeSettings = @import("std").mem.zeroes(?*ImGuiDockNodeSettings), -}; -pub const ImVector_ImGuiDockNodeSettings = struct_ImVector_ImGuiDockNodeSettings; -pub const struct_ImGuiDockContext = extern struct { - Nodes: ImGuiStorage = @import("std").mem.zeroes(ImGuiStorage), - Requests: ImVector_ImGuiDockRequest = @import("std").mem.zeroes(ImVector_ImGuiDockRequest), - NodesSettings: ImVector_ImGuiDockNodeSettings = @import("std").mem.zeroes(ImVector_ImGuiDockNodeSettings), - WantFullRebuild: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiDockContext = struct_ImGuiDockContext; -pub const ImGuiContext = struct_ImGuiContext; -pub const struct_ImGuiSettingsHandler = extern struct { - TypeName: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - TypeHash: ImGuiID = @import("std").mem.zeroes(ImGuiID), - ClearAllFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void), - ReadInitFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void), - ReadOpenFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, [*c]const u8) callconv(.C) ?*anyopaque = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, [*c]const u8) callconv(.C) ?*anyopaque), - ReadLineFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, ?*anyopaque, [*c]const u8) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, ?*anyopaque, [*c]const u8) callconv(.C) void), - ApplyAllFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void), - WriteAllFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, [*c]ImGuiTextBuffer) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, [*c]ImGuiTextBuffer) callconv(.C) void), - UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), -}; -pub const ImGuiSettingsHandler = struct_ImGuiSettingsHandler; -pub const struct_ImVector_ImGuiSettingsHandler = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiSettingsHandler = @import("std").mem.zeroes([*c]ImGuiSettingsHandler), -}; -pub const ImVector_ImGuiSettingsHandler = struct_ImVector_ImGuiSettingsHandler; -pub const struct_ImChunkStream_ImGuiWindowSettings = extern struct { - Buf: ImVector_char = @import("std").mem.zeroes(ImVector_char), -}; -pub const ImChunkStream_ImGuiWindowSettings = struct_ImChunkStream_ImGuiWindowSettings; -pub const struct_ImChunkStream_ImGuiTableSettings = extern struct { - Buf: ImVector_char = @import("std").mem.zeroes(ImVector_char), -}; -pub const ImChunkStream_ImGuiTableSettings = struct_ImChunkStream_ImGuiTableSettings; -pub const ImGuiContextHookCallback = ?*const fn ([*c]ImGuiContext, [*c]ImGuiContextHook) callconv(.C) void; -pub const struct_ImGuiContextHook = extern struct { - HookId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - Type: ImGuiContextHookType = @import("std").mem.zeroes(ImGuiContextHookType), - Owner: ImGuiID = @import("std").mem.zeroes(ImGuiID), - Callback: ImGuiContextHookCallback = @import("std").mem.zeroes(ImGuiContextHookCallback), - UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), -}; -pub const ImGuiContextHook = struct_ImGuiContextHook; -pub const struct_ImVector_ImGuiContextHook = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiContextHook = @import("std").mem.zeroes([*c]ImGuiContextHook), -}; -pub const ImVector_ImGuiContextHook = struct_ImVector_ImGuiContextHook; -pub const ImGuiDebugLogFlags = c_int; -pub const struct_ImGuiMetricsConfig = extern struct { - ShowDebugLog: bool = @import("std").mem.zeroes(bool), - ShowStackTool: bool = @import("std").mem.zeroes(bool), - ShowWindowsRects: bool = @import("std").mem.zeroes(bool), - ShowWindowsBeginOrder: bool = @import("std").mem.zeroes(bool), - ShowTablesRects: bool = @import("std").mem.zeroes(bool), - ShowDrawCmdMesh: bool = @import("std").mem.zeroes(bool), - ShowDrawCmdBoundingBoxes: bool = @import("std").mem.zeroes(bool), - ShowDockingNodes: bool = @import("std").mem.zeroes(bool), - ShowWindowsRectsType: c_int = @import("std").mem.zeroes(c_int), - ShowTablesRectsType: c_int = @import("std").mem.zeroes(c_int), -}; -pub const ImGuiMetricsConfig = struct_ImGuiMetricsConfig; -// cimgui2.h:2127:19: warning: struct demoted to opaque type - has bitfield -pub const struct_ImGuiStackLevelInfo = opaque {}; -pub const ImGuiStackLevelInfo = struct_ImGuiStackLevelInfo; -pub const struct_ImVector_ImGuiStackLevelInfo = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: ?*ImGuiStackLevelInfo = @import("std").mem.zeroes(?*ImGuiStackLevelInfo), -}; -pub const ImVector_ImGuiStackLevelInfo = struct_ImVector_ImGuiStackLevelInfo; -pub const struct_ImGuiStackTool = extern struct { - LastActiveFrame: c_int = @import("std").mem.zeroes(c_int), - StackLevel: c_int = @import("std").mem.zeroes(c_int), - QueryId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - Results: ImVector_ImGuiStackLevelInfo = @import("std").mem.zeroes(ImVector_ImGuiStackLevelInfo), - CopyToClipboardOnCtrlC: bool = @import("std").mem.zeroes(bool), - CopyToClipboardLastTime: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiStackTool = struct_ImGuiStackTool; -pub const struct_ImGuiContext = extern struct { - Initialized: bool = @import("std").mem.zeroes(bool), - FontAtlasOwnedByContext: bool = @import("std").mem.zeroes(bool), - IO: ImGuiIO = @import("std").mem.zeroes(ImGuiIO), - PlatformIO: ImGuiPlatformIO = @import("std").mem.zeroes(ImGuiPlatformIO), - InputEventsQueue: ImVector_ImGuiInputEvent = @import("std").mem.zeroes(ImVector_ImGuiInputEvent), - InputEventsTrail: ImVector_ImGuiInputEvent = @import("std").mem.zeroes(ImVector_ImGuiInputEvent), - Style: ImGuiStyle = @import("std").mem.zeroes(ImGuiStyle), - ConfigFlagsCurrFrame: ImGuiConfigFlags = @import("std").mem.zeroes(ImGuiConfigFlags), - ConfigFlagsLastFrame: ImGuiConfigFlags = @import("std").mem.zeroes(ImGuiConfigFlags), - Font: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), - FontSize: f32 = @import("std").mem.zeroes(f32), - FontBaseSize: f32 = @import("std").mem.zeroes(f32), - DrawListSharedData: ImDrawListSharedData = @import("std").mem.zeroes(ImDrawListSharedData), - Time: f64 = @import("std").mem.zeroes(f64), - FrameCount: c_int = @import("std").mem.zeroes(c_int), - FrameCountEnded: c_int = @import("std").mem.zeroes(c_int), - FrameCountPlatformEnded: c_int = @import("std").mem.zeroes(c_int), - FrameCountRendered: c_int = @import("std").mem.zeroes(c_int), - WithinFrameScope: bool = @import("std").mem.zeroes(bool), - WithinFrameScopeWithImplicitWindow: bool = @import("std").mem.zeroes(bool), - WithinEndChild: bool = @import("std").mem.zeroes(bool), - GcCompactAll: bool = @import("std").mem.zeroes(bool), - TestEngineHookItems: bool = @import("std").mem.zeroes(bool), - TestEngine: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - Windows: ImVector_ImGuiWindowPtr = @import("std").mem.zeroes(ImVector_ImGuiWindowPtr), - WindowsFocusOrder: ImVector_ImGuiWindowPtr = @import("std").mem.zeroes(ImVector_ImGuiWindowPtr), - WindowsTempSortBuffer: ImVector_ImGuiWindowPtr = @import("std").mem.zeroes(ImVector_ImGuiWindowPtr), - CurrentWindowStack: ImVector_ImGuiWindowStackData = @import("std").mem.zeroes(ImVector_ImGuiWindowStackData), - WindowsById: ImGuiStorage = @import("std").mem.zeroes(ImGuiStorage), - WindowsActiveCount: c_int = @import("std").mem.zeroes(c_int), - WindowsHoverPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), - CurrentWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - HoveredWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - HoveredWindowUnderMovingWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - HoveredDockNode: ?*ImGuiDockNode = @import("std").mem.zeroes(?*ImGuiDockNode), - MovingWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - WheelingWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - WheelingWindowRefMousePos: ImVec2 = @import("std").mem.zeroes(ImVec2), - WheelingWindowTimer: f32 = @import("std").mem.zeroes(f32), - DebugHookIdInfo: ImGuiID = @import("std").mem.zeroes(ImGuiID), - HoveredId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - HoveredIdPreviousFrame: ImGuiID = @import("std").mem.zeroes(ImGuiID), - HoveredIdAllowOverlap: bool = @import("std").mem.zeroes(bool), - HoveredIdUsingMouseWheel: bool = @import("std").mem.zeroes(bool), - HoveredIdPreviousFrameUsingMouseWheel: bool = @import("std").mem.zeroes(bool), - HoveredIdDisabled: bool = @import("std").mem.zeroes(bool), - HoveredIdTimer: f32 = @import("std").mem.zeroes(f32), - HoveredIdNotActiveTimer: f32 = @import("std").mem.zeroes(f32), - ActiveId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - ActiveIdIsAlive: ImGuiID = @import("std").mem.zeroes(ImGuiID), - ActiveIdTimer: f32 = @import("std").mem.zeroes(f32), - ActiveIdIsJustActivated: bool = @import("std").mem.zeroes(bool), - ActiveIdAllowOverlap: bool = @import("std").mem.zeroes(bool), - ActiveIdNoClearOnFocusLoss: bool = @import("std").mem.zeroes(bool), - ActiveIdHasBeenPressedBefore: bool = @import("std").mem.zeroes(bool), - ActiveIdHasBeenEditedBefore: bool = @import("std").mem.zeroes(bool), - ActiveIdHasBeenEditedThisFrame: bool = @import("std").mem.zeroes(bool), - ActiveIdClickOffset: ImVec2 = @import("std").mem.zeroes(ImVec2), - ActiveIdWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - ActiveIdSource: ImGuiInputSource = @import("std").mem.zeroes(ImGuiInputSource), - ActiveIdMouseButton: c_int = @import("std").mem.zeroes(c_int), - ActiveIdPreviousFrame: ImGuiID = @import("std").mem.zeroes(ImGuiID), - ActiveIdPreviousFrameIsAlive: bool = @import("std").mem.zeroes(bool), - ActiveIdPreviousFrameHasBeenEditedBefore: bool = @import("std").mem.zeroes(bool), - ActiveIdPreviousFrameWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - LastActiveId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - LastActiveIdTimer: f32 = @import("std").mem.zeroes(f32), - ActiveIdUsingMouseWheel: bool = @import("std").mem.zeroes(bool), - ActiveIdUsingNavDirMask: ImU32 = @import("std").mem.zeroes(ImU32), - ActiveIdUsingNavInputMask: ImU32 = @import("std").mem.zeroes(ImU32), - ActiveIdUsingKeyInputMask: ImBitArrayForNamedKeys = @import("std").mem.zeroes(ImBitArrayForNamedKeys), - CurrentItemFlags: ImGuiItemFlags = @import("std").mem.zeroes(ImGuiItemFlags), - NextItemData: ImGuiNextItemData = @import("std").mem.zeroes(ImGuiNextItemData), - LastItemData: ImGuiLastItemData = @import("std").mem.zeroes(ImGuiLastItemData), - NextWindowData: ImGuiNextWindowData = @import("std").mem.zeroes(ImGuiNextWindowData), - ColorStack: ImVector_ImGuiColorMod = @import("std").mem.zeroes(ImVector_ImGuiColorMod), - StyleVarStack: ImVector_ImGuiStyleMod = @import("std").mem.zeroes(ImVector_ImGuiStyleMod), - FontStack: ImVector_ImFontPtr = @import("std").mem.zeroes(ImVector_ImFontPtr), - FocusScopeStack: ImVector_ImGuiID = @import("std").mem.zeroes(ImVector_ImGuiID), - ItemFlagsStack: ImVector_ImGuiItemFlags = @import("std").mem.zeroes(ImVector_ImGuiItemFlags), - GroupStack: ImVector_ImGuiGroupData = @import("std").mem.zeroes(ImVector_ImGuiGroupData), - OpenPopupStack: ImVector_ImGuiPopupData = @import("std").mem.zeroes(ImVector_ImGuiPopupData), - BeginPopupStack: ImVector_ImGuiPopupData = @import("std").mem.zeroes(ImVector_ImGuiPopupData), - BeginMenuCount: c_int = @import("std").mem.zeroes(c_int), - Viewports: ImVector_ImGuiViewportPPtr = @import("std").mem.zeroes(ImVector_ImGuiViewportPPtr), - CurrentDpiScale: f32 = @import("std").mem.zeroes(f32), - CurrentViewport: [*c]ImGuiViewportP = @import("std").mem.zeroes([*c]ImGuiViewportP), - MouseViewport: [*c]ImGuiViewportP = @import("std").mem.zeroes([*c]ImGuiViewportP), - MouseLastHoveredViewport: [*c]ImGuiViewportP = @import("std").mem.zeroes([*c]ImGuiViewportP), - PlatformLastFocusedViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - FallbackMonitor: ImGuiPlatformMonitor = @import("std").mem.zeroes(ImGuiPlatformMonitor), - ViewportFrontMostStampCount: c_int = @import("std").mem.zeroes(c_int), - NavWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - NavId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavFocusScopeId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavActivateId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavActivateDownId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavActivatePressedId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavActivateInputId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavActivateFlags: ImGuiActivateFlags = @import("std").mem.zeroes(ImGuiActivateFlags), - NavJustMovedToId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavJustMovedToFocusScopeId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavJustMovedToKeyMods: ImGuiModFlags = @import("std").mem.zeroes(ImGuiModFlags), - NavNextActivateId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavNextActivateFlags: ImGuiActivateFlags = @import("std").mem.zeroes(ImGuiActivateFlags), - NavInputSource: ImGuiInputSource = @import("std").mem.zeroes(ImGuiInputSource), - NavLayer: ImGuiNavLayer = @import("std").mem.zeroes(ImGuiNavLayer), - NavIdIsAlive: bool = @import("std").mem.zeroes(bool), - NavMousePosDirty: bool = @import("std").mem.zeroes(bool), - NavDisableHighlight: bool = @import("std").mem.zeroes(bool), - NavDisableMouseHover: bool = @import("std").mem.zeroes(bool), - NavAnyRequest: bool = @import("std").mem.zeroes(bool), - NavInitRequest: bool = @import("std").mem.zeroes(bool), - NavInitRequestFromMove: bool = @import("std").mem.zeroes(bool), - NavInitResultId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavInitResultRectRel: ImRect = @import("std").mem.zeroes(ImRect), - NavMoveSubmitted: bool = @import("std").mem.zeroes(bool), - NavMoveScoringItems: bool = @import("std").mem.zeroes(bool), - NavMoveForwardToNextFrame: bool = @import("std").mem.zeroes(bool), - NavMoveFlags: ImGuiNavMoveFlags = @import("std").mem.zeroes(ImGuiNavMoveFlags), - NavMoveScrollFlags: ImGuiScrollFlags = @import("std").mem.zeroes(ImGuiScrollFlags), - NavMoveKeyMods: ImGuiModFlags = @import("std").mem.zeroes(ImGuiModFlags), - NavMoveDir: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), - NavMoveDirForDebug: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), - NavMoveClipDir: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), - NavScoringRect: ImRect = @import("std").mem.zeroes(ImRect), - NavScoringNoClipRect: ImRect = @import("std").mem.zeroes(ImRect), - NavScoringDebugCount: c_int = @import("std").mem.zeroes(c_int), - NavTabbingDir: c_int = @import("std").mem.zeroes(c_int), - NavTabbingCounter: c_int = @import("std").mem.zeroes(c_int), - NavMoveResultLocal: ImGuiNavItemData = @import("std").mem.zeroes(ImGuiNavItemData), - NavMoveResultLocalVisible: ImGuiNavItemData = @import("std").mem.zeroes(ImGuiNavItemData), - NavMoveResultOther: ImGuiNavItemData = @import("std").mem.zeroes(ImGuiNavItemData), - NavTabbingResultFirst: ImGuiNavItemData = @import("std").mem.zeroes(ImGuiNavItemData), - NavWindowingTarget: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - NavWindowingTargetAnim: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - NavWindowingListWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), - NavWindowingTimer: f32 = @import("std").mem.zeroes(f32), - NavWindowingHighlightAlpha: f32 = @import("std").mem.zeroes(f32), - NavWindowingToggleLayer: bool = @import("std").mem.zeroes(bool), - DimBgRatio: f32 = @import("std").mem.zeroes(f32), - MouseCursor: ImGuiMouseCursor = @import("std").mem.zeroes(ImGuiMouseCursor), - DragDropActive: bool = @import("std").mem.zeroes(bool), - DragDropWithinSource: bool = @import("std").mem.zeroes(bool), - DragDropWithinTarget: bool = @import("std").mem.zeroes(bool), - DragDropSourceFlags: ImGuiDragDropFlags = @import("std").mem.zeroes(ImGuiDragDropFlags), - DragDropSourceFrameCount: c_int = @import("std").mem.zeroes(c_int), - DragDropMouseButton: c_int = @import("std").mem.zeroes(c_int), - DragDropPayload: ImGuiPayload = @import("std").mem.zeroes(ImGuiPayload), - DragDropTargetRect: ImRect = @import("std").mem.zeroes(ImRect), - DragDropTargetId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DragDropAcceptFlags: ImGuiDragDropFlags = @import("std").mem.zeroes(ImGuiDragDropFlags), - DragDropAcceptIdCurrRectSurface: f32 = @import("std").mem.zeroes(f32), - DragDropAcceptIdCurr: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DragDropAcceptIdPrev: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DragDropAcceptFrameCount: c_int = @import("std").mem.zeroes(c_int), - DragDropHoldJustPressedId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DragDropPayloadBufHeap: ImVector_unsigned_char = @import("std").mem.zeroes(ImVector_unsigned_char), - DragDropPayloadBufLocal: [16]u8 = @import("std").mem.zeroes([16]u8), - ClipperTempDataStacked: c_int = @import("std").mem.zeroes(c_int), - ClipperTempData: ImVector_ImGuiListClipperData = @import("std").mem.zeroes(ImVector_ImGuiListClipperData), - CurrentTable: ?*ImGuiTable = @import("std").mem.zeroes(?*ImGuiTable), - TablesTempDataStacked: c_int = @import("std").mem.zeroes(c_int), - TablesTempData: ImVector_ImGuiTableTempData = @import("std").mem.zeroes(ImVector_ImGuiTableTempData), - Tables: ImPool_ImGuiTable = @import("std").mem.zeroes(ImPool_ImGuiTable), - TablesLastTimeActive: ImVector_float = @import("std").mem.zeroes(ImVector_float), - DrawChannelsTempMergeBuffer: ImVector_ImDrawChannel = @import("std").mem.zeroes(ImVector_ImDrawChannel), - CurrentTabBar: [*c]ImGuiTabBar = @import("std").mem.zeroes([*c]ImGuiTabBar), - TabBars: ImPool_ImGuiTabBar = @import("std").mem.zeroes(ImPool_ImGuiTabBar), - CurrentTabBarStack: ImVector_ImGuiPtrOrIndex = @import("std").mem.zeroes(ImVector_ImGuiPtrOrIndex), - ShrinkWidthBuffer: ImVector_ImGuiShrinkWidthItem = @import("std").mem.zeroes(ImVector_ImGuiShrinkWidthItem), - MouseLastValidPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - InputTextState: ImGuiInputTextState = @import("std").mem.zeroes(ImGuiInputTextState), - InputTextPasswordFont: ImFont = @import("std").mem.zeroes(ImFont), - TempInputId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - ColorEditOptions: ImGuiColorEditFlags = @import("std").mem.zeroes(ImGuiColorEditFlags), - ColorEditLastHue: f32 = @import("std").mem.zeroes(f32), - ColorEditLastSat: f32 = @import("std").mem.zeroes(f32), - ColorEditLastColor: ImU32 = @import("std").mem.zeroes(ImU32), - ColorPickerRef: ImVec4 = @import("std").mem.zeroes(ImVec4), - ComboPreviewData: ImGuiComboPreviewData = @import("std").mem.zeroes(ImGuiComboPreviewData), - SliderGrabClickOffset: f32 = @import("std").mem.zeroes(f32), - SliderCurrentAccum: f32 = @import("std").mem.zeroes(f32), - SliderCurrentAccumDirty: bool = @import("std").mem.zeroes(bool), - DragCurrentAccumDirty: bool = @import("std").mem.zeroes(bool), - DragCurrentAccum: f32 = @import("std").mem.zeroes(f32), - DragSpeedDefaultRatio: f32 = @import("std").mem.zeroes(f32), - ScrollbarClickDeltaToGrabCenter: f32 = @import("std").mem.zeroes(f32), - DisabledAlphaBackup: f32 = @import("std").mem.zeroes(f32), - DisabledStackSize: c_short = @import("std").mem.zeroes(c_short), - TooltipOverrideCount: c_short = @import("std").mem.zeroes(c_short), - TooltipSlowDelay: f32 = @import("std").mem.zeroes(f32), - ClipboardHandlerData: ImVector_char = @import("std").mem.zeroes(ImVector_char), - MenusIdSubmittedThisFrame: ImVector_ImGuiID = @import("std").mem.zeroes(ImVector_ImGuiID), - PlatformImeData: ImGuiPlatformImeData = @import("std").mem.zeroes(ImGuiPlatformImeData), - PlatformImeDataPrev: ImGuiPlatformImeData = @import("std").mem.zeroes(ImGuiPlatformImeData), - PlatformImeViewport: ImGuiID = @import("std").mem.zeroes(ImGuiID), - PlatformLocaleDecimalPoint: u8 = @import("std").mem.zeroes(u8), - DockContext: ImGuiDockContext = @import("std").mem.zeroes(ImGuiDockContext), - SettingsLoaded: bool = @import("std").mem.zeroes(bool), - SettingsDirtyTimer: f32 = @import("std").mem.zeroes(f32), - SettingsIniData: ImGuiTextBuffer = @import("std").mem.zeroes(ImGuiTextBuffer), - SettingsHandlers: ImVector_ImGuiSettingsHandler = @import("std").mem.zeroes(ImVector_ImGuiSettingsHandler), - SettingsWindows: ImChunkStream_ImGuiWindowSettings = @import("std").mem.zeroes(ImChunkStream_ImGuiWindowSettings), - SettingsTables: ImChunkStream_ImGuiTableSettings = @import("std").mem.zeroes(ImChunkStream_ImGuiTableSettings), - Hooks: ImVector_ImGuiContextHook = @import("std").mem.zeroes(ImVector_ImGuiContextHook), - HookIdNext: ImGuiID = @import("std").mem.zeroes(ImGuiID), - LogEnabled: bool = @import("std").mem.zeroes(bool), - LogType: ImGuiLogType = @import("std").mem.zeroes(ImGuiLogType), - LogFile: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - LogBuffer: ImGuiTextBuffer = @import("std").mem.zeroes(ImGuiTextBuffer), - LogNextPrefix: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - LogNextSuffix: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - LogLinePosY: f32 = @import("std").mem.zeroes(f32), - LogLineFirstItem: bool = @import("std").mem.zeroes(bool), - LogDepthRef: c_int = @import("std").mem.zeroes(c_int), - LogDepthToExpand: c_int = @import("std").mem.zeroes(c_int), - LogDepthToExpandDefault: c_int = @import("std").mem.zeroes(c_int), - DebugLogFlags: ImGuiDebugLogFlags = @import("std").mem.zeroes(ImGuiDebugLogFlags), - DebugLogBuf: ImGuiTextBuffer = @import("std").mem.zeroes(ImGuiTextBuffer), - DebugItemPickerActive: bool = @import("std").mem.zeroes(bool), - DebugItemPickerBreakId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DebugMetricsConfig: ImGuiMetricsConfig = @import("std").mem.zeroes(ImGuiMetricsConfig), - DebugStackTool: ImGuiStackTool = @import("std").mem.zeroes(ImGuiStackTool), - FramerateSecPerFrame: [120]f32 = @import("std").mem.zeroes([120]f32), - FramerateSecPerFrameIdx: c_int = @import("std").mem.zeroes(c_int), - FramerateSecPerFrameCount: c_int = @import("std").mem.zeroes(c_int), - FramerateSecPerFrameAccum: f32 = @import("std").mem.zeroes(f32), - WantCaptureMouseNextFrame: c_int = @import("std").mem.zeroes(c_int), - WantCaptureKeyboardNextFrame: c_int = @import("std").mem.zeroes(c_int), - WantTextInputNextFrame: c_int = @import("std").mem.zeroes(c_int), - TempBuffer: ImVector_char = @import("std").mem.zeroes(ImVector_char), -}; -pub const struct_ImGuiInputTextCallbackData = extern struct { - EventFlag: ImGuiInputTextFlags = @import("std").mem.zeroes(ImGuiInputTextFlags), - Flags: ImGuiInputTextFlags = @import("std").mem.zeroes(ImGuiInputTextFlags), - UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), - EventChar: ImWchar = @import("std").mem.zeroes(ImWchar), - EventKey: ImGuiKey = @import("std").mem.zeroes(ImGuiKey), - Buf: [*c]u8 = @import("std").mem.zeroes([*c]u8), - BufTextLen: c_int = @import("std").mem.zeroes(c_int), - BufSize: c_int = @import("std").mem.zeroes(c_int), - BufDirty: bool = @import("std").mem.zeroes(bool), - CursorPos: c_int = @import("std").mem.zeroes(c_int), - SelectionStart: c_int = @import("std").mem.zeroes(c_int), - SelectionEnd: c_int = @import("std").mem.zeroes(c_int), -}; -pub const ImGuiInputTextCallbackData = struct_ImGuiInputTextCallbackData; -pub const struct_ImGuiOnceUponAFrame = extern struct { - RefFrame: c_int = @import("std").mem.zeroes(c_int), -}; -pub const ImGuiOnceUponAFrame = struct_ImGuiOnceUponAFrame; -// cimgui2.h:969:24: warning: struct demoted to opaque type - has bitfield -pub const struct_ImGuiTableColumnSortSpecs = opaque {}; -pub const ImGuiTableColumnSortSpecs = struct_ImGuiTableColumnSortSpecs; -pub const struct_ImGuiTableSortSpecs = extern struct { - Specs: ?*const ImGuiTableColumnSortSpecs = @import("std").mem.zeroes(?*const ImGuiTableColumnSortSpecs), - SpecsCount: c_int = @import("std").mem.zeroes(c_int), - SpecsDirty: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiTableSortSpecs = struct_ImGuiTableSortSpecs; -pub const struct_ImGuiTextRange = extern struct { - b: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - e: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), -}; -pub const ImGuiTextRange = struct_ImGuiTextRange; -pub const struct_ImVector_ImGuiTextRange = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiTextRange = @import("std").mem.zeroes([*c]ImGuiTextRange), -}; -pub const ImVector_ImGuiTextRange = struct_ImVector_ImGuiTextRange; -pub const struct_ImGuiTextFilter = extern struct { - InputBuf: [256]u8 = @import("std").mem.zeroes([256]u8), - Filters: ImVector_ImGuiTextRange = @import("std").mem.zeroes(ImVector_ImGuiTextRange), - CountGrep: c_int = @import("std").mem.zeroes(c_int), -}; -pub const ImGuiTextFilter = struct_ImGuiTextFilter; -pub const struct_ImBitVector = extern struct { - Storage: ImVector_ImU32 = @import("std").mem.zeroes(ImVector_ImU32), -}; -pub const ImBitVector = struct_ImBitVector; -pub const struct_ImGuiDataTypeInfo = extern struct { - Size: usize = @import("std").mem.zeroes(usize), - Name: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - PrintFmt: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), - ScanFmt: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), -}; -pub const ImGuiDataTypeInfo = struct_ImGuiDataTypeInfo; -pub const struct_ImGuiMenuColumns = extern struct { - TotalWidth: ImU32 = @import("std").mem.zeroes(ImU32), - NextTotalWidth: ImU32 = @import("std").mem.zeroes(ImU32), - Spacing: ImU16 = @import("std").mem.zeroes(ImU16), - OffsetIcon: ImU16 = @import("std").mem.zeroes(ImU16), - OffsetLabel: ImU16 = @import("std").mem.zeroes(ImU16), - OffsetShortcut: ImU16 = @import("std").mem.zeroes(ImU16), - OffsetMark: ImU16 = @import("std").mem.zeroes(ImU16), - Widths: [4]ImU16 = @import("std").mem.zeroes([4]ImU16), -}; -pub const ImGuiMenuColumns = struct_ImGuiMenuColumns; -pub const ImGuiOldColumnFlags = c_int; -pub const struct_ImGuiOldColumnData = extern struct { - OffsetNorm: f32 = @import("std").mem.zeroes(f32), - OffsetNormBeforeResize: f32 = @import("std").mem.zeroes(f32), - Flags: ImGuiOldColumnFlags = @import("std").mem.zeroes(ImGuiOldColumnFlags), - ClipRect: ImRect = @import("std").mem.zeroes(ImRect), -}; -pub const ImGuiOldColumnData = struct_ImGuiOldColumnData; -pub const struct_ImVector_ImGuiOldColumnData = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiOldColumnData = @import("std").mem.zeroes([*c]ImGuiOldColumnData), -}; -pub const ImVector_ImGuiOldColumnData = struct_ImVector_ImGuiOldColumnData; -pub const struct_ImGuiOldColumns = extern struct { - ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - Flags: ImGuiOldColumnFlags = @import("std").mem.zeroes(ImGuiOldColumnFlags), - IsFirstFrame: bool = @import("std").mem.zeroes(bool), - IsBeingResized: bool = @import("std").mem.zeroes(bool), - Current: c_int = @import("std").mem.zeroes(c_int), - Count: c_int = @import("std").mem.zeroes(c_int), - OffMinX: f32 = @import("std").mem.zeroes(f32), - OffMaxX: f32 = @import("std").mem.zeroes(f32), - LineMinY: f32 = @import("std").mem.zeroes(f32), - LineMaxY: f32 = @import("std").mem.zeroes(f32), - HostCursorPosY: f32 = @import("std").mem.zeroes(f32), - HostCursorMaxPosX: f32 = @import("std").mem.zeroes(f32), - HostInitialClipRect: ImRect = @import("std").mem.zeroes(ImRect), - HostBackupClipRect: ImRect = @import("std").mem.zeroes(ImRect), - HostBackupParentWorkRect: ImRect = @import("std").mem.zeroes(ImRect), - Columns: ImVector_ImGuiOldColumnData = @import("std").mem.zeroes(ImVector_ImGuiOldColumnData), - Splitter: ImDrawListSplitter = @import("std").mem.zeroes(ImDrawListSplitter), -}; -pub const ImGuiOldColumns = struct_ImGuiOldColumns; -pub const struct_ImGuiTableInstanceData = extern struct { - LastOuterHeight: f32 = @import("std").mem.zeroes(f32), - LastFirstRowHeight: f32 = @import("std").mem.zeroes(f32), -}; -pub const ImGuiTableInstanceData = struct_ImGuiTableInstanceData; -pub const struct_ImGuiTableSettings = extern struct { - ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - SaveFlags: ImGuiTableFlags = @import("std").mem.zeroes(ImGuiTableFlags), - RefScale: f32 = @import("std").mem.zeroes(f32), - ColumnsCount: ImGuiTableColumnIdx = @import("std").mem.zeroes(ImGuiTableColumnIdx), - ColumnsCountMax: ImGuiTableColumnIdx = @import("std").mem.zeroes(ImGuiTableColumnIdx), - WantApply: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiTableSettings = struct_ImGuiTableSettings; -pub const struct_ImGuiTableColumnsSettings = opaque {}; -pub const ImGuiTableColumnsSettings = struct_ImGuiTableColumnsSettings; -pub const struct_ImGuiWindowTempData = extern struct { - CursorPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - CursorPosPrevLine: ImVec2 = @import("std").mem.zeroes(ImVec2), - CursorStartPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - CursorMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - IdealMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), - CurrLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - PrevLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), - CurrLineTextBaseOffset: f32 = @import("std").mem.zeroes(f32), - PrevLineTextBaseOffset: f32 = @import("std").mem.zeroes(f32), - IsSameLine: bool = @import("std").mem.zeroes(bool), - Indent: ImVec1 = @import("std").mem.zeroes(ImVec1), - ColumnsOffset: ImVec1 = @import("std").mem.zeroes(ImVec1), - GroupOffset: ImVec1 = @import("std").mem.zeroes(ImVec1), - CursorStartPosLossyness: ImVec2 = @import("std").mem.zeroes(ImVec2), - NavLayerCurrent: ImGuiNavLayer = @import("std").mem.zeroes(ImGuiNavLayer), - NavLayersActiveMask: c_short = @import("std").mem.zeroes(c_short), - NavLayersActiveMaskNext: c_short = @import("std").mem.zeroes(c_short), - NavFocusScopeIdCurrent: ImGuiID = @import("std").mem.zeroes(ImGuiID), - NavHideHighlightOneFrame: bool = @import("std").mem.zeroes(bool), - NavHasScroll: bool = @import("std").mem.zeroes(bool), - MenuBarAppending: bool = @import("std").mem.zeroes(bool), - MenuBarOffset: ImVec2 = @import("std").mem.zeroes(ImVec2), - MenuColumns: ImGuiMenuColumns = @import("std").mem.zeroes(ImGuiMenuColumns), - TreeDepth: c_int = @import("std").mem.zeroes(c_int), - TreeJumpToParentOnPopMask: ImU32 = @import("std").mem.zeroes(ImU32), - ChildWindows: ImVector_ImGuiWindowPtr = @import("std").mem.zeroes(ImVector_ImGuiWindowPtr), - StateStorage: [*c]ImGuiStorage = @import("std").mem.zeroes([*c]ImGuiStorage), - CurrentColumns: [*c]ImGuiOldColumns = @import("std").mem.zeroes([*c]ImGuiOldColumns), - CurrentTableIdx: c_int = @import("std").mem.zeroes(c_int), - LayoutType: ImGuiLayoutType = @import("std").mem.zeroes(ImGuiLayoutType), - ParentLayoutType: ImGuiLayoutType = @import("std").mem.zeroes(ImGuiLayoutType), - ItemWidth: f32 = @import("std").mem.zeroes(f32), - TextWrapPos: f32 = @import("std").mem.zeroes(f32), - ItemWidthStack: ImVector_float = @import("std").mem.zeroes(ImVector_float), - TextWrapPosStack: ImVector_float = @import("std").mem.zeroes(ImVector_float), -}; -pub const ImGuiWindowTempData = struct_ImGuiWindowTempData; -pub const struct_ImVec2ih = extern struct { - x: c_short = @import("std").mem.zeroes(c_short), - y: c_short = @import("std").mem.zeroes(c_short), -}; -pub const ImVec2ih = struct_ImVec2ih; -pub const struct_ImGuiWindowSettings = extern struct { - ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), - Pos: ImVec2ih = @import("std").mem.zeroes(ImVec2ih), - Size: ImVec2ih = @import("std").mem.zeroes(ImVec2ih), - ViewportPos: ImVec2ih = @import("std").mem.zeroes(ImVec2ih), - ViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DockId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - ClassId: ImGuiID = @import("std").mem.zeroes(ImGuiID), - DockOrder: c_short = @import("std").mem.zeroes(c_short), - Collapsed: bool = @import("std").mem.zeroes(bool), - WantApply: bool = @import("std").mem.zeroes(bool), -}; -pub const ImGuiWindowSettings = struct_ImGuiWindowSettings; -pub const struct_ImVector_const_charPtr = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c][*c]const u8 = @import("std").mem.zeroes([*c][*c]const u8), -}; -pub const ImVector_const_charPtr = struct_ImVector_const_charPtr; -pub const ImGuiDataType = c_int; -pub const ImGuiNavInput = c_int; -pub const ImGuiMouseButton = c_int; -pub const ImGuiSortDirection = c_int; -pub const ImGuiTableBgTarget = c_int; -pub const ImDrawFlags = c_int; -pub const ImGuiButtonFlags = c_int; -pub const ImGuiComboFlags = c_int; -pub const ImGuiFocusedFlags = c_int; -pub const ImGuiHoveredFlags = c_int; -pub const ImGuiPopupFlags = c_int; -pub const ImGuiSelectableFlags = c_int; -pub const ImGuiSliderFlags = c_int; -pub const ImGuiTableRowFlags = c_int; -pub const ImGuiTreeNodeFlags = c_int; -pub const ImS64 = c_longlong; -pub const ImWchar32 = c_uint; -pub const ImGuiInputTextCallback = ?*const fn ([*c]ImGuiInputTextCallbackData) callconv(.C) c_int; -pub const ImGuiMemAllocFunc = ?*const fn (usize, ?*anyopaque) callconv(.C) ?*anyopaque; -pub const ImGuiMemFreeFunc = ?*const fn (?*anyopaque, ?*anyopaque) callconv(.C) void; -pub const ImGuiWindowFlags_None: c_int = 0; -pub const ImGuiWindowFlags_NoTitleBar: c_int = 1; -pub const ImGuiWindowFlags_NoResize: c_int = 2; -pub const ImGuiWindowFlags_NoMove: c_int = 4; -pub const ImGuiWindowFlags_NoScrollbar: c_int = 8; -pub const ImGuiWindowFlags_NoScrollWithMouse: c_int = 16; -pub const ImGuiWindowFlags_NoCollapse: c_int = 32; -pub const ImGuiWindowFlags_AlwaysAutoResize: c_int = 64; -pub const ImGuiWindowFlags_NoBackground: c_int = 128; -pub const ImGuiWindowFlags_NoSavedSettings: c_int = 256; -pub const ImGuiWindowFlags_NoMouseInputs: c_int = 512; -pub const ImGuiWindowFlags_MenuBar: c_int = 1024; -pub const ImGuiWindowFlags_HorizontalScrollbar: c_int = 2048; -pub const ImGuiWindowFlags_NoFocusOnAppearing: c_int = 4096; -pub const ImGuiWindowFlags_NoBringToFrontOnFocus: c_int = 8192; -pub const ImGuiWindowFlags_AlwaysVerticalScrollbar: c_int = 16384; -pub const ImGuiWindowFlags_AlwaysHorizontalScrollbar: c_int = 32768; -pub const ImGuiWindowFlags_AlwaysUseWindowPadding: c_int = 65536; -pub const ImGuiWindowFlags_NoNavInputs: c_int = 262144; -pub const ImGuiWindowFlags_NoNavFocus: c_int = 524288; -pub const ImGuiWindowFlags_UnsavedDocument: c_int = 1048576; -pub const ImGuiWindowFlags_NoDocking: c_int = 2097152; -pub const ImGuiWindowFlags_NoNav: c_int = 786432; -pub const ImGuiWindowFlags_NoDecoration: c_int = 43; -pub const ImGuiWindowFlags_NoInputs: c_int = 786944; -pub const ImGuiWindowFlags_NavFlattened: c_int = 8388608; -pub const ImGuiWindowFlags_ChildWindow: c_int = 16777216; -pub const ImGuiWindowFlags_Tooltip: c_int = 33554432; -pub const ImGuiWindowFlags_Popup: c_int = 67108864; -pub const ImGuiWindowFlags_Modal: c_int = 134217728; -pub const ImGuiWindowFlags_ChildMenu: c_int = 268435456; -pub const ImGuiWindowFlags_DockNodeHost: c_int = 536870912; -pub const ImGuiWindowFlags_ = c_uint; -pub const ImGuiInputTextFlags_None: c_int = 0; -pub const ImGuiInputTextFlags_CharsDecimal: c_int = 1; -pub const ImGuiInputTextFlags_CharsHexadecimal: c_int = 2; -pub const ImGuiInputTextFlags_CharsUppercase: c_int = 4; -pub const ImGuiInputTextFlags_CharsNoBlank: c_int = 8; -pub const ImGuiInputTextFlags_AutoSelectAll: c_int = 16; -pub const ImGuiInputTextFlags_EnterReturnsTrue: c_int = 32; -pub const ImGuiInputTextFlags_CallbackCompletion: c_int = 64; -pub const ImGuiInputTextFlags_CallbackHistory: c_int = 128; -pub const ImGuiInputTextFlags_CallbackAlways: c_int = 256; -pub const ImGuiInputTextFlags_CallbackCharFilter: c_int = 512; -pub const ImGuiInputTextFlags_AllowTabInput: c_int = 1024; -pub const ImGuiInputTextFlags_CtrlEnterForNewLine: c_int = 2048; -pub const ImGuiInputTextFlags_NoHorizontalScroll: c_int = 4096; -pub const ImGuiInputTextFlags_AlwaysOverwrite: c_int = 8192; -pub const ImGuiInputTextFlags_ReadOnly: c_int = 16384; -pub const ImGuiInputTextFlags_Password: c_int = 32768; -pub const ImGuiInputTextFlags_NoUndoRedo: c_int = 65536; -pub const ImGuiInputTextFlags_CharsScientific: c_int = 131072; -pub const ImGuiInputTextFlags_CallbackResize: c_int = 262144; -pub const ImGuiInputTextFlags_CallbackEdit: c_int = 524288; -pub const ImGuiInputTextFlags_ = c_uint; -pub const ImGuiTreeNodeFlags_None: c_int = 0; -pub const ImGuiTreeNodeFlags_Selected: c_int = 1; -pub const ImGuiTreeNodeFlags_Framed: c_int = 2; -pub const ImGuiTreeNodeFlags_AllowItemOverlap: c_int = 4; -pub const ImGuiTreeNodeFlags_NoTreePushOnOpen: c_int = 8; -pub const ImGuiTreeNodeFlags_NoAutoOpenOnLog: c_int = 16; -pub const ImGuiTreeNodeFlags_DefaultOpen: c_int = 32; -pub const ImGuiTreeNodeFlags_OpenOnDoubleClick: c_int = 64; -pub const ImGuiTreeNodeFlags_OpenOnArrow: c_int = 128; -pub const ImGuiTreeNodeFlags_Leaf: c_int = 256; -pub const ImGuiTreeNodeFlags_Bullet: c_int = 512; -pub const ImGuiTreeNodeFlags_FramePadding: c_int = 1024; -pub const ImGuiTreeNodeFlags_SpanAvailWidth: c_int = 2048; -pub const ImGuiTreeNodeFlags_SpanFullWidth: c_int = 4096; -pub const ImGuiTreeNodeFlags_NavLeftJumpsBackHere: c_int = 8192; -pub const ImGuiTreeNodeFlags_CollapsingHeader: c_int = 26; -pub const ImGuiTreeNodeFlags_ = c_uint; -pub const ImGuiPopupFlags_None: c_int = 0; -pub const ImGuiPopupFlags_MouseButtonLeft: c_int = 0; -pub const ImGuiPopupFlags_MouseButtonRight: c_int = 1; -pub const ImGuiPopupFlags_MouseButtonMiddle: c_int = 2; -pub const ImGuiPopupFlags_MouseButtonMask_: c_int = 31; -pub const ImGuiPopupFlags_MouseButtonDefault_: c_int = 1; -pub const ImGuiPopupFlags_NoOpenOverExistingPopup: c_int = 32; -pub const ImGuiPopupFlags_NoOpenOverItems: c_int = 64; -pub const ImGuiPopupFlags_AnyPopupId: c_int = 128; -pub const ImGuiPopupFlags_AnyPopupLevel: c_int = 256; -pub const ImGuiPopupFlags_AnyPopup: c_int = 384; -pub const ImGuiPopupFlags_ = c_uint; -pub const ImGuiSelectableFlags_None: c_int = 0; -pub const ImGuiSelectableFlags_DontClosePopups: c_int = 1; -pub const ImGuiSelectableFlags_SpanAllColumns: c_int = 2; -pub const ImGuiSelectableFlags_AllowDoubleClick: c_int = 4; -pub const ImGuiSelectableFlags_Disabled: c_int = 8; -pub const ImGuiSelectableFlags_AllowItemOverlap: c_int = 16; -pub const ImGuiSelectableFlags_ = c_uint; -pub const ImGuiComboFlags_None: c_int = 0; -pub const ImGuiComboFlags_PopupAlignLeft: c_int = 1; -pub const ImGuiComboFlags_HeightSmall: c_int = 2; -pub const ImGuiComboFlags_HeightRegular: c_int = 4; -pub const ImGuiComboFlags_HeightLarge: c_int = 8; -pub const ImGuiComboFlags_HeightLargest: c_int = 16; -pub const ImGuiComboFlags_NoArrowButton: c_int = 32; -pub const ImGuiComboFlags_NoPreview: c_int = 64; -pub const ImGuiComboFlags_HeightMask_: c_int = 30; -pub const ImGuiComboFlags_ = c_uint; -pub const ImGuiTabBarFlags_None: c_int = 0; -pub const ImGuiTabBarFlags_Reorderable: c_int = 1; -pub const ImGuiTabBarFlags_AutoSelectNewTabs: c_int = 2; -pub const ImGuiTabBarFlags_TabListPopupButton: c_int = 4; -pub const ImGuiTabBarFlags_NoCloseWithMiddleMouseButton: c_int = 8; -pub const ImGuiTabBarFlags_NoTabListScrollingButtons: c_int = 16; -pub const ImGuiTabBarFlags_NoTooltip: c_int = 32; -pub const ImGuiTabBarFlags_FittingPolicyResizeDown: c_int = 64; -pub const ImGuiTabBarFlags_FittingPolicyScroll: c_int = 128; -pub const ImGuiTabBarFlags_FittingPolicyMask_: c_int = 192; -pub const ImGuiTabBarFlags_FittingPolicyDefault_: c_int = 64; -pub const ImGuiTabBarFlags_ = c_uint; -pub const ImGuiTabItemFlags_None: c_int = 0; -pub const ImGuiTabItemFlags_UnsavedDocument: c_int = 1; -pub const ImGuiTabItemFlags_SetSelected: c_int = 2; -pub const ImGuiTabItemFlags_NoCloseWithMiddleMouseButton: c_int = 4; -pub const ImGuiTabItemFlags_NoPushId: c_int = 8; -pub const ImGuiTabItemFlags_NoTooltip: c_int = 16; -pub const ImGuiTabItemFlags_NoReorder: c_int = 32; -pub const ImGuiTabItemFlags_Leading: c_int = 64; -pub const ImGuiTabItemFlags_Trailing: c_int = 128; -pub const ImGuiTabItemFlags_ = c_uint; -pub const ImGuiTableFlags_None: c_int = 0; -pub const ImGuiTableFlags_Resizable: c_int = 1; -pub const ImGuiTableFlags_Reorderable: c_int = 2; -pub const ImGuiTableFlags_Hideable: c_int = 4; -pub const ImGuiTableFlags_Sortable: c_int = 8; -pub const ImGuiTableFlags_NoSavedSettings: c_int = 16; -pub const ImGuiTableFlags_ContextMenuInBody: c_int = 32; -pub const ImGuiTableFlags_RowBg: c_int = 64; -pub const ImGuiTableFlags_BordersInnerH: c_int = 128; -pub const ImGuiTableFlags_BordersOuterH: c_int = 256; -pub const ImGuiTableFlags_BordersInnerV: c_int = 512; -pub const ImGuiTableFlags_BordersOuterV: c_int = 1024; -pub const ImGuiTableFlags_BordersH: c_int = 384; -pub const ImGuiTableFlags_BordersV: c_int = 1536; -pub const ImGuiTableFlags_BordersInner: c_int = 640; -pub const ImGuiTableFlags_BordersOuter: c_int = 1280; -pub const ImGuiTableFlags_Borders: c_int = 1920; -pub const ImGuiTableFlags_NoBordersInBody: c_int = 2048; -pub const ImGuiTableFlags_NoBordersInBodyUntilResize: c_int = 4096; -pub const ImGuiTableFlags_SizingFixedFit: c_int = 8192; -pub const ImGuiTableFlags_SizingFixedSame: c_int = 16384; -pub const ImGuiTableFlags_SizingStretchProp: c_int = 24576; -pub const ImGuiTableFlags_SizingStretchSame: c_int = 32768; -pub const ImGuiTableFlags_NoHostExtendX: c_int = 65536; -pub const ImGuiTableFlags_NoHostExtendY: c_int = 131072; -pub const ImGuiTableFlags_NoKeepColumnsVisible: c_int = 262144; -pub const ImGuiTableFlags_PreciseWidths: c_int = 524288; -pub const ImGuiTableFlags_NoClip: c_int = 1048576; -pub const ImGuiTableFlags_PadOuterX: c_int = 2097152; -pub const ImGuiTableFlags_NoPadOuterX: c_int = 4194304; -pub const ImGuiTableFlags_NoPadInnerX: c_int = 8388608; -pub const ImGuiTableFlags_ScrollX: c_int = 16777216; -pub const ImGuiTableFlags_ScrollY: c_int = 33554432; -pub const ImGuiTableFlags_SortMulti: c_int = 67108864; -pub const ImGuiTableFlags_SortTristate: c_int = 134217728; -pub const ImGuiTableFlags_SizingMask_: c_int = 57344; -pub const ImGuiTableFlags_ = c_uint; -pub const ImGuiTableColumnFlags_None: c_int = 0; -pub const ImGuiTableColumnFlags_Disabled: c_int = 1; -pub const ImGuiTableColumnFlags_DefaultHide: c_int = 2; -pub const ImGuiTableColumnFlags_DefaultSort: c_int = 4; -pub const ImGuiTableColumnFlags_WidthStretch: c_int = 8; -pub const ImGuiTableColumnFlags_WidthFixed: c_int = 16; -pub const ImGuiTableColumnFlags_NoResize: c_int = 32; -pub const ImGuiTableColumnFlags_NoReorder: c_int = 64; -pub const ImGuiTableColumnFlags_NoHide: c_int = 128; -pub const ImGuiTableColumnFlags_NoClip: c_int = 256; -pub const ImGuiTableColumnFlags_NoSort: c_int = 512; -pub const ImGuiTableColumnFlags_NoSortAscending: c_int = 1024; -pub const ImGuiTableColumnFlags_NoSortDescending: c_int = 2048; -pub const ImGuiTableColumnFlags_NoHeaderLabel: c_int = 4096; -pub const ImGuiTableColumnFlags_NoHeaderWidth: c_int = 8192; -pub const ImGuiTableColumnFlags_PreferSortAscending: c_int = 16384; -pub const ImGuiTableColumnFlags_PreferSortDescending: c_int = 32768; -pub const ImGuiTableColumnFlags_IndentEnable: c_int = 65536; -pub const ImGuiTableColumnFlags_IndentDisable: c_int = 131072; -pub const ImGuiTableColumnFlags_IsEnabled: c_int = 16777216; -pub const ImGuiTableColumnFlags_IsVisible: c_int = 33554432; -pub const ImGuiTableColumnFlags_IsSorted: c_int = 67108864; -pub const ImGuiTableColumnFlags_IsHovered: c_int = 134217728; -pub const ImGuiTableColumnFlags_WidthMask_: c_int = 24; -pub const ImGuiTableColumnFlags_IndentMask_: c_int = 196608; -pub const ImGuiTableColumnFlags_StatusMask_: c_int = 251658240; -pub const ImGuiTableColumnFlags_NoDirectResize_: c_int = 1073741824; -pub const ImGuiTableColumnFlags_ = c_uint; -pub const ImGuiTableRowFlags_None: c_int = 0; -pub const ImGuiTableRowFlags_Headers: c_int = 1; -pub const ImGuiTableRowFlags_ = c_uint; -pub const ImGuiTableBgTarget_None: c_int = 0; -pub const ImGuiTableBgTarget_RowBg0: c_int = 1; -pub const ImGuiTableBgTarget_RowBg1: c_int = 2; -pub const ImGuiTableBgTarget_CellBg: c_int = 3; -pub const ImGuiTableBgTarget_ = c_uint; -pub const ImGuiFocusedFlags_None: c_int = 0; -pub const ImGuiFocusedFlags_ChildWindows: c_int = 1; -pub const ImGuiFocusedFlags_RootWindow: c_int = 2; -pub const ImGuiFocusedFlags_AnyWindow: c_int = 4; -pub const ImGuiFocusedFlags_NoPopupHierarchy: c_int = 8; -pub const ImGuiFocusedFlags_DockHierarchy: c_int = 16; -pub const ImGuiFocusedFlags_RootAndChildWindows: c_int = 3; -pub const ImGuiFocusedFlags_ = c_uint; -pub const ImGuiHoveredFlags_None: c_int = 0; -pub const ImGuiHoveredFlags_ChildWindows: c_int = 1; -pub const ImGuiHoveredFlags_RootWindow: c_int = 2; -pub const ImGuiHoveredFlags_AnyWindow: c_int = 4; -pub const ImGuiHoveredFlags_NoPopupHierarchy: c_int = 8; -pub const ImGuiHoveredFlags_DockHierarchy: c_int = 16; -pub const ImGuiHoveredFlags_AllowWhenBlockedByPopup: c_int = 32; -pub const ImGuiHoveredFlags_AllowWhenBlockedByActiveItem: c_int = 128; -pub const ImGuiHoveredFlags_AllowWhenOverlapped: c_int = 256; -pub const ImGuiHoveredFlags_AllowWhenDisabled: c_int = 512; -pub const ImGuiHoveredFlags_NoNavOverride: c_int = 1024; -pub const ImGuiHoveredFlags_RectOnly: c_int = 416; -pub const ImGuiHoveredFlags_RootAndChildWindows: c_int = 3; -pub const ImGuiHoveredFlags_ = c_uint; -pub const ImGuiDockNodeFlags_None: c_int = 0; -pub const ImGuiDockNodeFlags_KeepAliveOnly: c_int = 1; -pub const ImGuiDockNodeFlags_NoDockingInCentralNode: c_int = 4; -pub const ImGuiDockNodeFlags_PassthruCentralNode: c_int = 8; -pub const ImGuiDockNodeFlags_NoSplit: c_int = 16; -pub const ImGuiDockNodeFlags_NoResize: c_int = 32; -pub const ImGuiDockNodeFlags_AutoHideTabBar: c_int = 64; -pub const ImGuiDockNodeFlags_ = c_uint; -pub const ImGuiDragDropFlags_None: c_int = 0; -pub const ImGuiDragDropFlags_SourceNoPreviewTooltip: c_int = 1; -pub const ImGuiDragDropFlags_SourceNoDisableHover: c_int = 2; -pub const ImGuiDragDropFlags_SourceNoHoldToOpenOthers: c_int = 4; -pub const ImGuiDragDropFlags_SourceAllowNullID: c_int = 8; -pub const ImGuiDragDropFlags_SourceExtern: c_int = 16; -pub const ImGuiDragDropFlags_SourceAutoExpirePayload: c_int = 32; -pub const ImGuiDragDropFlags_AcceptBeforeDelivery: c_int = 1024; -pub const ImGuiDragDropFlags_AcceptNoDrawDefaultRect: c_int = 2048; -pub const ImGuiDragDropFlags_AcceptNoPreviewTooltip: c_int = 4096; -pub const ImGuiDragDropFlags_AcceptPeekOnly: c_int = 3072; -pub const ImGuiDragDropFlags_ = c_uint; -pub const ImGuiDataType_S8: c_int = 0; -pub const ImGuiDataType_U8: c_int = 1; -pub const ImGuiDataType_S16: c_int = 2; -pub const ImGuiDataType_U16: c_int = 3; -pub const ImGuiDataType_S32: c_int = 4; -pub const ImGuiDataType_U32: c_int = 5; -pub const ImGuiDataType_S64: c_int = 6; -pub const ImGuiDataType_U64: c_int = 7; -pub const ImGuiDataType_Float: c_int = 8; -pub const ImGuiDataType_Double: c_int = 9; -pub const ImGuiDataType_COUNT: c_int = 10; -pub const ImGuiDataType_ = c_uint; -pub const ImGuiDir_None: c_int = -1; -pub const ImGuiDir_Left: c_int = 0; -pub const ImGuiDir_Right: c_int = 1; -pub const ImGuiDir_Up: c_int = 2; -pub const ImGuiDir_Down: c_int = 3; -pub const ImGuiDir_COUNT: c_int = 4; -pub const ImGuiDir_ = c_int; -pub const ImGuiSortDirection_None: c_int = 0; -pub const ImGuiSortDirection_Ascending: c_int = 1; -pub const ImGuiSortDirection_Descending: c_int = 2; -pub const ImGuiSortDirection_ = c_uint; -pub const ImGuiKey_None: c_int = 0; -pub const ImGuiKey_Tab: c_int = 512; -pub const ImGuiKey_LeftArrow: c_int = 513; -pub const ImGuiKey_RightArrow: c_int = 514; -pub const ImGuiKey_UpArrow: c_int = 515; -pub const ImGuiKey_DownArrow: c_int = 516; -pub const ImGuiKey_PageUp: c_int = 517; -pub const ImGuiKey_PageDown: c_int = 518; -pub const ImGuiKey_Home: c_int = 519; -pub const ImGuiKey_End: c_int = 520; -pub const ImGuiKey_Insert: c_int = 521; -pub const ImGuiKey_Delete: c_int = 522; -pub const ImGuiKey_Backspace: c_int = 523; -pub const ImGuiKey_Space: c_int = 524; -pub const ImGuiKey_Enter: c_int = 525; -pub const ImGuiKey_Escape: c_int = 526; -pub const ImGuiKey_LeftCtrl: c_int = 527; -pub const ImGuiKey_LeftShift: c_int = 528; -pub const ImGuiKey_LeftAlt: c_int = 529; -pub const ImGuiKey_LeftSuper: c_int = 530; -pub const ImGuiKey_RightCtrl: c_int = 531; -pub const ImGuiKey_RightShift: c_int = 532; -pub const ImGuiKey_RightAlt: c_int = 533; -pub const ImGuiKey_RightSuper: c_int = 534; -pub const ImGuiKey_Menu: c_int = 535; -pub const ImGuiKey_0: c_int = 536; -pub const ImGuiKey_1: c_int = 537; -pub const ImGuiKey_2: c_int = 538; -pub const ImGuiKey_3: c_int = 539; -pub const ImGuiKey_4: c_int = 540; -pub const ImGuiKey_5: c_int = 541; -pub const ImGuiKey_6: c_int = 542; -pub const ImGuiKey_7: c_int = 543; -pub const ImGuiKey_8: c_int = 544; -pub const ImGuiKey_9: c_int = 545; -pub const ImGuiKey_A: c_int = 546; -pub const ImGuiKey_B: c_int = 547; -pub const ImGuiKey_C: c_int = 548; -pub const ImGuiKey_D: c_int = 549; -pub const ImGuiKey_E: c_int = 550; -pub const ImGuiKey_F: c_int = 551; -pub const ImGuiKey_G: c_int = 552; -pub const ImGuiKey_H: c_int = 553; -pub const ImGuiKey_I: c_int = 554; -pub const ImGuiKey_J: c_int = 555; -pub const ImGuiKey_K: c_int = 556; -pub const ImGuiKey_L: c_int = 557; -pub const ImGuiKey_M: c_int = 558; -pub const ImGuiKey_N: c_int = 559; -pub const ImGuiKey_O: c_int = 560; -pub const ImGuiKey_P: c_int = 561; -pub const ImGuiKey_Q: c_int = 562; -pub const ImGuiKey_R: c_int = 563; -pub const ImGuiKey_S: c_int = 564; -pub const ImGuiKey_T: c_int = 565; -pub const ImGuiKey_U: c_int = 566; -pub const ImGuiKey_V: c_int = 567; -pub const ImGuiKey_W: c_int = 568; -pub const ImGuiKey_X: c_int = 569; -pub const ImGuiKey_Y: c_int = 570; -pub const ImGuiKey_Z: c_int = 571; -pub const ImGuiKey_F1: c_int = 572; -pub const ImGuiKey_F2: c_int = 573; -pub const ImGuiKey_F3: c_int = 574; -pub const ImGuiKey_F4: c_int = 575; -pub const ImGuiKey_F5: c_int = 576; -pub const ImGuiKey_F6: c_int = 577; -pub const ImGuiKey_F7: c_int = 578; -pub const ImGuiKey_F8: c_int = 579; -pub const ImGuiKey_F9: c_int = 580; -pub const ImGuiKey_F10: c_int = 581; -pub const ImGuiKey_F11: c_int = 582; -pub const ImGuiKey_F12: c_int = 583; -pub const ImGuiKey_Apostrophe: c_int = 584; -pub const ImGuiKey_Comma: c_int = 585; -pub const ImGuiKey_Minus: c_int = 586; -pub const ImGuiKey_Period: c_int = 587; -pub const ImGuiKey_Slash: c_int = 588; -pub const ImGuiKey_Semicolon: c_int = 589; -pub const ImGuiKey_Equal: c_int = 590; -pub const ImGuiKey_LeftBracket: c_int = 591; -pub const ImGuiKey_Backslash: c_int = 592; -pub const ImGuiKey_RightBracket: c_int = 593; -pub const ImGuiKey_GraveAccent: c_int = 594; -pub const ImGuiKey_CapsLock: c_int = 595; -pub const ImGuiKey_ScrollLock: c_int = 596; -pub const ImGuiKey_NumLock: c_int = 597; -pub const ImGuiKey_PrintScreen: c_int = 598; -pub const ImGuiKey_Pause: c_int = 599; -pub const ImGuiKey_Keypad0: c_int = 600; -pub const ImGuiKey_Keypad1: c_int = 601; -pub const ImGuiKey_Keypad2: c_int = 602; -pub const ImGuiKey_Keypad3: c_int = 603; -pub const ImGuiKey_Keypad4: c_int = 604; -pub const ImGuiKey_Keypad5: c_int = 605; -pub const ImGuiKey_Keypad6: c_int = 606; -pub const ImGuiKey_Keypad7: c_int = 607; -pub const ImGuiKey_Keypad8: c_int = 608; -pub const ImGuiKey_Keypad9: c_int = 609; -pub const ImGuiKey_KeypadDecimal: c_int = 610; -pub const ImGuiKey_KeypadDivide: c_int = 611; -pub const ImGuiKey_KeypadMultiply: c_int = 612; -pub const ImGuiKey_KeypadSubtract: c_int = 613; -pub const ImGuiKey_KeypadAdd: c_int = 614; -pub const ImGuiKey_KeypadEnter: c_int = 615; -pub const ImGuiKey_KeypadEqual: c_int = 616; -pub const ImGuiKey_GamepadStart: c_int = 617; -pub const ImGuiKey_GamepadBack: c_int = 618; -pub const ImGuiKey_GamepadFaceUp: c_int = 619; -pub const ImGuiKey_GamepadFaceDown: c_int = 620; -pub const ImGuiKey_GamepadFaceLeft: c_int = 621; -pub const ImGuiKey_GamepadFaceRight: c_int = 622; -pub const ImGuiKey_GamepadDpadUp: c_int = 623; -pub const ImGuiKey_GamepadDpadDown: c_int = 624; -pub const ImGuiKey_GamepadDpadLeft: c_int = 625; -pub const ImGuiKey_GamepadDpadRight: c_int = 626; -pub const ImGuiKey_GamepadL1: c_int = 627; -pub const ImGuiKey_GamepadR1: c_int = 628; -pub const ImGuiKey_GamepadL2: c_int = 629; -pub const ImGuiKey_GamepadR2: c_int = 630; -pub const ImGuiKey_GamepadL3: c_int = 631; -pub const ImGuiKey_GamepadR3: c_int = 632; -pub const ImGuiKey_GamepadLStickUp: c_int = 633; -pub const ImGuiKey_GamepadLStickDown: c_int = 634; -pub const ImGuiKey_GamepadLStickLeft: c_int = 635; -pub const ImGuiKey_GamepadLStickRight: c_int = 636; -pub const ImGuiKey_GamepadRStickUp: c_int = 637; -pub const ImGuiKey_GamepadRStickDown: c_int = 638; -pub const ImGuiKey_GamepadRStickLeft: c_int = 639; -pub const ImGuiKey_GamepadRStickRight: c_int = 640; -pub const ImGuiKey_ModCtrl: c_int = 641; -pub const ImGuiKey_ModShift: c_int = 642; -pub const ImGuiKey_ModAlt: c_int = 643; -pub const ImGuiKey_ModSuper: c_int = 644; -pub const ImGuiKey_COUNT: c_int = 645; -pub const ImGuiKey_NamedKey_BEGIN: c_int = 512; -pub const ImGuiKey_NamedKey_END: c_int = 645; -pub const ImGuiKey_NamedKey_COUNT: c_int = 133; -pub const ImGuiKey_KeysData_SIZE: c_int = 645; -pub const ImGuiKey_KeysData_OFFSET: c_int = 0; -pub const ImGuiKey_ = c_uint; -pub const ImGuiModFlags_None: c_int = 0; -pub const ImGuiModFlags_Ctrl: c_int = 1; -pub const ImGuiModFlags_Shift: c_int = 2; -pub const ImGuiModFlags_Alt: c_int = 4; -pub const ImGuiModFlags_Super: c_int = 8; -pub const ImGuiModFlags_ = c_uint; -pub const ImGuiNavInput_Activate: c_int = 0; -pub const ImGuiNavInput_Cancel: c_int = 1; -pub const ImGuiNavInput_Input: c_int = 2; -pub const ImGuiNavInput_Menu: c_int = 3; -pub const ImGuiNavInput_DpadLeft: c_int = 4; -pub const ImGuiNavInput_DpadRight: c_int = 5; -pub const ImGuiNavInput_DpadUp: c_int = 6; -pub const ImGuiNavInput_DpadDown: c_int = 7; -pub const ImGuiNavInput_LStickLeft: c_int = 8; -pub const ImGuiNavInput_LStickRight: c_int = 9; -pub const ImGuiNavInput_LStickUp: c_int = 10; -pub const ImGuiNavInput_LStickDown: c_int = 11; -pub const ImGuiNavInput_FocusPrev: c_int = 12; -pub const ImGuiNavInput_FocusNext: c_int = 13; -pub const ImGuiNavInput_TweakSlow: c_int = 14; -pub const ImGuiNavInput_TweakFast: c_int = 15; -pub const ImGuiNavInput_KeyLeft_: c_int = 16; -pub const ImGuiNavInput_KeyRight_: c_int = 17; -pub const ImGuiNavInput_KeyUp_: c_int = 18; -pub const ImGuiNavInput_KeyDown_: c_int = 19; -pub const ImGuiNavInput_COUNT: c_int = 20; -pub const ImGuiNavInput_ = c_uint; -pub const ImGuiConfigFlags_None: c_int = 0; -pub const ImGuiConfigFlags_NavEnableKeyboard: c_int = 1; -pub const ImGuiConfigFlags_NavEnableGamepad: c_int = 2; -pub const ImGuiConfigFlags_NavEnableSetMousePos: c_int = 4; -pub const ImGuiConfigFlags_NavNoCaptureKeyboard: c_int = 8; -pub const ImGuiConfigFlags_NoMouse: c_int = 16; -pub const ImGuiConfigFlags_NoMouseCursorChange: c_int = 32; -pub const ImGuiConfigFlags_DockingEnable: c_int = 64; -pub const ImGuiConfigFlags_ViewportsEnable: c_int = 1024; -pub const ImGuiConfigFlags_DpiEnableScaleViewports: c_int = 16384; -pub const ImGuiConfigFlags_DpiEnableScaleFonts: c_int = 32768; -pub const ImGuiConfigFlags_IsSRGB: c_int = 1048576; -pub const ImGuiConfigFlags_IsTouchScreen: c_int = 2097152; -pub const ImGuiConfigFlags_ = c_uint; -pub const ImGuiBackendFlags_None: c_int = 0; -pub const ImGuiBackendFlags_HasGamepad: c_int = 1; -pub const ImGuiBackendFlags_HasMouseCursors: c_int = 2; -pub const ImGuiBackendFlags_HasSetMousePos: c_int = 4; -pub const ImGuiBackendFlags_RendererHasVtxOffset: c_int = 8; -pub const ImGuiBackendFlags_PlatformHasViewports: c_int = 1024; -pub const ImGuiBackendFlags_HasMouseHoveredViewport: c_int = 2048; -pub const ImGuiBackendFlags_RendererHasViewports: c_int = 4096; -pub const ImGuiBackendFlags_ = c_uint; -pub const ImGuiCol_Text: c_int = 0; -pub const ImGuiCol_TextDisabled: c_int = 1; -pub const ImGuiCol_WindowBg: c_int = 2; -pub const ImGuiCol_ChildBg: c_int = 3; -pub const ImGuiCol_PopupBg: c_int = 4; -pub const ImGuiCol_Border: c_int = 5; -pub const ImGuiCol_BorderShadow: c_int = 6; -pub const ImGuiCol_FrameBg: c_int = 7; -pub const ImGuiCol_FrameBgHovered: c_int = 8; -pub const ImGuiCol_FrameBgActive: c_int = 9; -pub const ImGuiCol_TitleBg: c_int = 10; -pub const ImGuiCol_TitleBgActive: c_int = 11; -pub const ImGuiCol_TitleBgCollapsed: c_int = 12; -pub const ImGuiCol_MenuBarBg: c_int = 13; -pub const ImGuiCol_ScrollbarBg: c_int = 14; -pub const ImGuiCol_ScrollbarGrab: c_int = 15; -pub const ImGuiCol_ScrollbarGrabHovered: c_int = 16; -pub const ImGuiCol_ScrollbarGrabActive: c_int = 17; -pub const ImGuiCol_CheckMark: c_int = 18; -pub const ImGuiCol_SliderGrab: c_int = 19; -pub const ImGuiCol_SliderGrabActive: c_int = 20; -pub const ImGuiCol_Button: c_int = 21; -pub const ImGuiCol_ButtonHovered: c_int = 22; -pub const ImGuiCol_ButtonActive: c_int = 23; -pub const ImGuiCol_Header: c_int = 24; -pub const ImGuiCol_HeaderHovered: c_int = 25; -pub const ImGuiCol_HeaderActive: c_int = 26; -pub const ImGuiCol_Separator: c_int = 27; -pub const ImGuiCol_SeparatorHovered: c_int = 28; -pub const ImGuiCol_SeparatorActive: c_int = 29; -pub const ImGuiCol_ResizeGrip: c_int = 30; -pub const ImGuiCol_ResizeGripHovered: c_int = 31; -pub const ImGuiCol_ResizeGripActive: c_int = 32; -pub const ImGuiCol_Tab: c_int = 33; -pub const ImGuiCol_TabHovered: c_int = 34; -pub const ImGuiCol_TabActive: c_int = 35; -pub const ImGuiCol_TabUnfocused: c_int = 36; -pub const ImGuiCol_TabUnfocusedActive: c_int = 37; -pub const ImGuiCol_DockingPreview: c_int = 38; -pub const ImGuiCol_DockingEmptyBg: c_int = 39; -pub const ImGuiCol_PlotLines: c_int = 40; -pub const ImGuiCol_PlotLinesHovered: c_int = 41; -pub const ImGuiCol_PlotHistogram: c_int = 42; -pub const ImGuiCol_PlotHistogramHovered: c_int = 43; -pub const ImGuiCol_TableHeaderBg: c_int = 44; -pub const ImGuiCol_TableBorderStrong: c_int = 45; -pub const ImGuiCol_TableBorderLight: c_int = 46; -pub const ImGuiCol_TableRowBg: c_int = 47; -pub const ImGuiCol_TableRowBgAlt: c_int = 48; -pub const ImGuiCol_TextSelectedBg: c_int = 49; -pub const ImGuiCol_DragDropTarget: c_int = 50; -pub const ImGuiCol_NavHighlight: c_int = 51; -pub const ImGuiCol_NavWindowingHighlight: c_int = 52; -pub const ImGuiCol_NavWindowingDimBg: c_int = 53; -pub const ImGuiCol_ModalWindowDimBg: c_int = 54; -pub const ImGuiCol_COUNT: c_int = 55; -pub const ImGuiCol_ = c_uint; -pub const ImGuiStyleVar_Alpha: c_int = 0; -pub const ImGuiStyleVar_DisabledAlpha: c_int = 1; -pub const ImGuiStyleVar_WindowPadding: c_int = 2; -pub const ImGuiStyleVar_WindowRounding: c_int = 3; -pub const ImGuiStyleVar_WindowBorderSize: c_int = 4; -pub const ImGuiStyleVar_WindowMinSize: c_int = 5; -pub const ImGuiStyleVar_WindowTitleAlign: c_int = 6; -pub const ImGuiStyleVar_ChildRounding: c_int = 7; -pub const ImGuiStyleVar_ChildBorderSize: c_int = 8; -pub const ImGuiStyleVar_PopupRounding: c_int = 9; -pub const ImGuiStyleVar_PopupBorderSize: c_int = 10; -pub const ImGuiStyleVar_FramePadding: c_int = 11; -pub const ImGuiStyleVar_FrameRounding: c_int = 12; -pub const ImGuiStyleVar_FrameBorderSize: c_int = 13; -pub const ImGuiStyleVar_ItemSpacing: c_int = 14; -pub const ImGuiStyleVar_ItemInnerSpacing: c_int = 15; -pub const ImGuiStyleVar_IndentSpacing: c_int = 16; -pub const ImGuiStyleVar_CellPadding: c_int = 17; -pub const ImGuiStyleVar_ScrollbarSize: c_int = 18; -pub const ImGuiStyleVar_ScrollbarRounding: c_int = 19; -pub const ImGuiStyleVar_GrabMinSize: c_int = 20; -pub const ImGuiStyleVar_GrabRounding: c_int = 21; -pub const ImGuiStyleVar_TabRounding: c_int = 22; -pub const ImGuiStyleVar_ButtonTextAlign: c_int = 23; -pub const ImGuiStyleVar_SelectableTextAlign: c_int = 24; -pub const ImGuiStyleVar_COUNT: c_int = 25; -pub const ImGuiStyleVar_ = c_uint; -pub const ImGuiButtonFlags_None: c_int = 0; -pub const ImGuiButtonFlags_MouseButtonLeft: c_int = 1; -pub const ImGuiButtonFlags_MouseButtonRight: c_int = 2; -pub const ImGuiButtonFlags_MouseButtonMiddle: c_int = 4; -pub const ImGuiButtonFlags_MouseButtonMask_: c_int = 7; -pub const ImGuiButtonFlags_MouseButtonDefault_: c_int = 1; -pub const ImGuiButtonFlags_ = c_uint; -pub const ImGuiColorEditFlags_None: c_int = 0; -pub const ImGuiColorEditFlags_NoAlpha: c_int = 2; -pub const ImGuiColorEditFlags_NoPicker: c_int = 4; -pub const ImGuiColorEditFlags_NoOptions: c_int = 8; -pub const ImGuiColorEditFlags_NoSmallPreview: c_int = 16; -pub const ImGuiColorEditFlags_NoInputs: c_int = 32; -pub const ImGuiColorEditFlags_NoTooltip: c_int = 64; -pub const ImGuiColorEditFlags_NoLabel: c_int = 128; -pub const ImGuiColorEditFlags_NoSidePreview: c_int = 256; -pub const ImGuiColorEditFlags_NoDragDrop: c_int = 512; -pub const ImGuiColorEditFlags_NoBorder: c_int = 1024; -pub const ImGuiColorEditFlags_AlphaBar: c_int = 65536; -pub const ImGuiColorEditFlags_AlphaPreview: c_int = 131072; -pub const ImGuiColorEditFlags_AlphaPreviewHalf: c_int = 262144; -pub const ImGuiColorEditFlags_HDR: c_int = 524288; -pub const ImGuiColorEditFlags_DisplayRGB: c_int = 1048576; -pub const ImGuiColorEditFlags_DisplayHSV: c_int = 2097152; -pub const ImGuiColorEditFlags_DisplayHex: c_int = 4194304; -pub const ImGuiColorEditFlags_Uint8: c_int = 8388608; -pub const ImGuiColorEditFlags_Float: c_int = 16777216; -pub const ImGuiColorEditFlags_PickerHueBar: c_int = 33554432; -pub const ImGuiColorEditFlags_PickerHueWheel: c_int = 67108864; -pub const ImGuiColorEditFlags_InputRGB: c_int = 134217728; -pub const ImGuiColorEditFlags_InputHSV: c_int = 268435456; -pub const ImGuiColorEditFlags_DefaultOptions_: c_int = 177209344; -pub const ImGuiColorEditFlags_DisplayMask_: c_int = 7340032; -pub const ImGuiColorEditFlags_DataTypeMask_: c_int = 25165824; -pub const ImGuiColorEditFlags_PickerMask_: c_int = 100663296; -pub const ImGuiColorEditFlags_InputMask_: c_int = 402653184; -pub const ImGuiColorEditFlags_ = c_uint; -pub const ImGuiSliderFlags_None: c_int = 0; -pub const ImGuiSliderFlags_AlwaysClamp: c_int = 16; -pub const ImGuiSliderFlags_Logarithmic: c_int = 32; -pub const ImGuiSliderFlags_NoRoundToFormat: c_int = 64; -pub const ImGuiSliderFlags_NoInput: c_int = 128; -pub const ImGuiSliderFlags_InvalidMask_: c_int = 1879048207; -pub const ImGuiSliderFlags_ = c_uint; -pub const ImGuiMouseButton_Left: c_int = 0; -pub const ImGuiMouseButton_Right: c_int = 1; -pub const ImGuiMouseButton_Middle: c_int = 2; -pub const ImGuiMouseButton_COUNT: c_int = 5; -pub const ImGuiMouseButton_ = c_uint; -pub const ImGuiMouseCursor_None: c_int = -1; -pub const ImGuiMouseCursor_Arrow: c_int = 0; -pub const ImGuiMouseCursor_TextInput: c_int = 1; -pub const ImGuiMouseCursor_ResizeAll: c_int = 2; -pub const ImGuiMouseCursor_ResizeNS: c_int = 3; -pub const ImGuiMouseCursor_ResizeEW: c_int = 4; -pub const ImGuiMouseCursor_ResizeNESW: c_int = 5; -pub const ImGuiMouseCursor_ResizeNWSE: c_int = 6; -pub const ImGuiMouseCursor_Hand: c_int = 7; -pub const ImGuiMouseCursor_NotAllowed: c_int = 8; -pub const ImGuiMouseCursor_COUNT: c_int = 9; -pub const ImGuiMouseCursor_ = c_int; -pub const ImGuiCond_None: c_int = 0; -pub const ImGuiCond_Always: c_int = 1; -pub const ImGuiCond_Once: c_int = 2; -pub const ImGuiCond_FirstUseEver: c_int = 4; -pub const ImGuiCond_Appearing: c_int = 8; -pub const ImGuiCond_ = c_uint; -pub const ImDrawFlags_None: c_int = 0; -pub const ImDrawFlags_Closed: c_int = 1; -pub const ImDrawFlags_RoundCornersTopLeft: c_int = 16; -pub const ImDrawFlags_RoundCornersTopRight: c_int = 32; -pub const ImDrawFlags_RoundCornersBottomLeft: c_int = 64; -pub const ImDrawFlags_RoundCornersBottomRight: c_int = 128; -pub const ImDrawFlags_RoundCornersNone: c_int = 256; -pub const ImDrawFlags_RoundCornersTop: c_int = 48; -pub const ImDrawFlags_RoundCornersBottom: c_int = 192; -pub const ImDrawFlags_RoundCornersLeft: c_int = 80; -pub const ImDrawFlags_RoundCornersRight: c_int = 160; -pub const ImDrawFlags_RoundCornersAll: c_int = 240; -pub const ImDrawFlags_RoundCornersDefault_: c_int = 240; -pub const ImDrawFlags_RoundCornersMask_: c_int = 496; -pub const ImDrawFlags_ = c_uint; -pub const ImDrawListFlags_None: c_int = 0; -pub const ImDrawListFlags_AntiAliasedLines: c_int = 1; -pub const ImDrawListFlags_AntiAliasedLinesUseTex: c_int = 2; -pub const ImDrawListFlags_AntiAliasedFill: c_int = 4; -pub const ImDrawListFlags_AllowVtxOffset: c_int = 8; -pub const ImDrawListFlags_ = c_uint; -pub const ImFontAtlasFlags_None: c_int = 0; -pub const ImFontAtlasFlags_NoPowerOfTwoHeight: c_int = 1; -pub const ImFontAtlasFlags_NoMouseCursors: c_int = 2; -pub const ImFontAtlasFlags_NoBakedLines: c_int = 4; -pub const ImFontAtlasFlags_ = c_uint; -pub const ImGuiViewportFlags_None: c_int = 0; -pub const ImGuiViewportFlags_IsPlatformWindow: c_int = 1; -pub const ImGuiViewportFlags_IsPlatformMonitor: c_int = 2; -pub const ImGuiViewportFlags_OwnedByApp: c_int = 4; -pub const ImGuiViewportFlags_NoDecoration: c_int = 8; -pub const ImGuiViewportFlags_NoTaskBarIcon: c_int = 16; -pub const ImGuiViewportFlags_NoFocusOnAppearing: c_int = 32; -pub const ImGuiViewportFlags_NoFocusOnClick: c_int = 64; -pub const ImGuiViewportFlags_NoInputs: c_int = 128; -pub const ImGuiViewportFlags_NoRendererClear: c_int = 256; -pub const ImGuiViewportFlags_TopMost: c_int = 512; -pub const ImGuiViewportFlags_Minimized: c_int = 1024; -pub const ImGuiViewportFlags_NoAutoMerge: c_int = 2048; -pub const ImGuiViewportFlags_CanHostOtherWindows: c_int = 4096; -pub const ImGuiViewportFlags_ = c_uint; -pub const ImGuiDataAuthority = c_int; -pub const ImGuiNavHighlightFlags = c_int; -pub const ImGuiNavDirSourceFlags = c_int; -pub const ImGuiSeparatorFlags = c_int; -pub const ImGuiTextFlags = c_int; -pub const ImGuiTooltipFlags = c_int; -pub const ImGuiErrorLogCallback = ?*const fn (?*anyopaque, [*c]const u8, ...) callconv(.C) void; -pub extern var GImGui: [*c]ImGuiContext; -pub const struct_StbTexteditRow = extern struct { - x0: f32 = @import("std").mem.zeroes(f32), - x1: f32 = @import("std").mem.zeroes(f32), - baseline_y_delta: f32 = @import("std").mem.zeroes(f32), - ymin: f32 = @import("std").mem.zeroes(f32), - ymax: f32 = @import("std").mem.zeroes(f32), - num_chars: c_int = @import("std").mem.zeroes(c_int), -}; -pub const StbTexteditRow = struct_StbTexteditRow; -pub const ImGuiItemFlags_None: c_int = 0; -pub const ImGuiItemFlags_NoTabStop: c_int = 1; -pub const ImGuiItemFlags_ButtonRepeat: c_int = 2; -pub const ImGuiItemFlags_Disabled: c_int = 4; -pub const ImGuiItemFlags_NoNav: c_int = 8; -pub const ImGuiItemFlags_NoNavDefaultFocus: c_int = 16; -pub const ImGuiItemFlags_SelectableDontClosePopup: c_int = 32; -pub const ImGuiItemFlags_MixedValue: c_int = 64; -pub const ImGuiItemFlags_ReadOnly: c_int = 128; -pub const ImGuiItemFlags_Inputable: c_int = 256; -pub const ImGuiItemFlags_ = c_uint; -pub const ImGuiItemStatusFlags_None: c_int = 0; -pub const ImGuiItemStatusFlags_HoveredRect: c_int = 1; -pub const ImGuiItemStatusFlags_HasDisplayRect: c_int = 2; -pub const ImGuiItemStatusFlags_Edited: c_int = 4; -pub const ImGuiItemStatusFlags_ToggledSelection: c_int = 8; -pub const ImGuiItemStatusFlags_ToggledOpen: c_int = 16; -pub const ImGuiItemStatusFlags_HasDeactivated: c_int = 32; -pub const ImGuiItemStatusFlags_Deactivated: c_int = 64; -pub const ImGuiItemStatusFlags_HoveredWindow: c_int = 128; -pub const ImGuiItemStatusFlags_FocusedByTabbing: c_int = 256; -pub const ImGuiItemStatusFlags_ = c_uint; -pub const ImGuiInputTextFlags_Multiline: c_int = 67108864; -pub const ImGuiInputTextFlags_NoMarkEdited: c_int = 134217728; -pub const ImGuiInputTextFlags_MergedItem: c_int = 268435456; -pub const ImGuiInputTextFlagsPrivate_ = c_uint; -pub const ImGuiButtonFlags_PressedOnClick: c_int = 16; -pub const ImGuiButtonFlags_PressedOnClickRelease: c_int = 32; -pub const ImGuiButtonFlags_PressedOnClickReleaseAnywhere: c_int = 64; -pub const ImGuiButtonFlags_PressedOnRelease: c_int = 128; -pub const ImGuiButtonFlags_PressedOnDoubleClick: c_int = 256; -pub const ImGuiButtonFlags_PressedOnDragDropHold: c_int = 512; -pub const ImGuiButtonFlags_Repeat: c_int = 1024; -pub const ImGuiButtonFlags_FlattenChildren: c_int = 2048; -pub const ImGuiButtonFlags_AllowItemOverlap: c_int = 4096; -pub const ImGuiButtonFlags_DontClosePopups: c_int = 8192; -pub const ImGuiButtonFlags_AlignTextBaseLine: c_int = 32768; -pub const ImGuiButtonFlags_NoKeyModifiers: c_int = 65536; -pub const ImGuiButtonFlags_NoHoldingActiveId: c_int = 131072; -pub const ImGuiButtonFlags_NoNavFocus: c_int = 262144; -pub const ImGuiButtonFlags_NoHoveredOnFocus: c_int = 524288; -pub const ImGuiButtonFlags_PressedOnMask_: c_int = 1008; -pub const ImGuiButtonFlags_PressedOnDefault_: c_int = 32; -pub const ImGuiButtonFlagsPrivate_ = c_uint; -pub const ImGuiComboFlags_CustomPreview: c_int = 1048576; -pub const ImGuiComboFlagsPrivate_ = c_uint; -pub const ImGuiSliderFlags_Vertical: c_int = 1048576; -pub const ImGuiSliderFlags_ReadOnly: c_int = 2097152; -pub const ImGuiSliderFlagsPrivate_ = c_uint; -pub const ImGuiSelectableFlags_NoHoldingActiveID: c_int = 1048576; -pub const ImGuiSelectableFlags_SelectOnNav: c_int = 2097152; -pub const ImGuiSelectableFlags_SelectOnClick: c_int = 4194304; -pub const ImGuiSelectableFlags_SelectOnRelease: c_int = 8388608; -pub const ImGuiSelectableFlags_SpanAvailWidth: c_int = 16777216; -pub const ImGuiSelectableFlags_DrawHoveredWhenHeld: c_int = 33554432; -pub const ImGuiSelectableFlags_SetNavIdOnHover: c_int = 67108864; -pub const ImGuiSelectableFlags_NoPadWithHalfSpacing: c_int = 134217728; -pub const ImGuiSelectableFlagsPrivate_ = c_uint; -pub const ImGuiTreeNodeFlags_ClipLabelForTrailingButton: c_int = 1048576; -pub const ImGuiTreeNodeFlagsPrivate_ = c_uint; -pub const ImGuiSeparatorFlags_None: c_int = 0; -pub const ImGuiSeparatorFlags_Horizontal: c_int = 1; -pub const ImGuiSeparatorFlags_Vertical: c_int = 2; -pub const ImGuiSeparatorFlags_SpanAllColumns: c_int = 4; -pub const ImGuiSeparatorFlags_ = c_uint; -pub const ImGuiTextFlags_None: c_int = 0; -pub const ImGuiTextFlags_NoWidthForLargeClippedText: c_int = 1; -pub const ImGuiTextFlags_ = c_uint; -pub const ImGuiTooltipFlags_None: c_int = 0; -pub const ImGuiTooltipFlags_OverridePreviousTooltip: c_int = 1; -pub const ImGuiTooltipFlags_ = c_uint; -pub const ImGuiLayoutType_Horizontal: c_int = 0; -pub const ImGuiLayoutType_Vertical: c_int = 1; -pub const ImGuiLayoutType_ = c_uint; -pub const ImGuiLogType_None: c_int = 0; -pub const ImGuiLogType_TTY: c_int = 1; -pub const ImGuiLogType_File: c_int = 2; -pub const ImGuiLogType_Buffer: c_int = 3; -pub const ImGuiLogType_Clipboard: c_int = 4; -pub const ImGuiLogType = c_uint; -pub const ImGuiAxis_None: c_int = -1; -pub const ImGuiAxis_X: c_int = 0; -pub const ImGuiAxis_Y: c_int = 1; -pub const ImGuiAxis = c_int; -pub const ImGuiPlotType_Lines: c_int = 0; -pub const ImGuiPlotType_Histogram: c_int = 1; -pub const ImGuiPlotType = c_uint; -pub const ImGuiPopupPositionPolicy_Default: c_int = 0; -pub const ImGuiPopupPositionPolicy_ComboBox: c_int = 1; -pub const ImGuiPopupPositionPolicy_Tooltip: c_int = 2; -pub const ImGuiPopupPositionPolicy = c_uint; -pub const struct_ImGuiDataTypeTempStorage = extern struct { - Data: [8]ImU8 = @import("std").mem.zeroes([8]ImU8), -}; -pub const ImGuiDataTypeTempStorage = struct_ImGuiDataTypeTempStorage; -pub const ImGuiDataType_String: c_int = 11; -pub const ImGuiDataType_Pointer: c_int = 12; -pub const ImGuiDataType_ID: c_int = 13; -pub const ImGuiDataTypePrivate_ = c_uint; -pub const ImGuiNextWindowDataFlags_None: c_int = 0; -pub const ImGuiNextWindowDataFlags_HasPos: c_int = 1; -pub const ImGuiNextWindowDataFlags_HasSize: c_int = 2; -pub const ImGuiNextWindowDataFlags_HasContentSize: c_int = 4; -pub const ImGuiNextWindowDataFlags_HasCollapsed: c_int = 8; -pub const ImGuiNextWindowDataFlags_HasSizeConstraint: c_int = 16; -pub const ImGuiNextWindowDataFlags_HasFocus: c_int = 32; -pub const ImGuiNextWindowDataFlags_HasBgAlpha: c_int = 64; -pub const ImGuiNextWindowDataFlags_HasScroll: c_int = 128; -pub const ImGuiNextWindowDataFlags_HasViewport: c_int = 256; -pub const ImGuiNextWindowDataFlags_HasDock: c_int = 512; -pub const ImGuiNextWindowDataFlags_HasWindowClass: c_int = 1024; -pub const ImGuiNextWindowDataFlags_ = c_uint; -pub const ImGuiNextItemDataFlags_None: c_int = 0; -pub const ImGuiNextItemDataFlags_HasWidth: c_int = 1; -pub const ImGuiNextItemDataFlags_HasOpen: c_int = 2; -pub const ImGuiNextItemDataFlags_ = c_uint; -pub const ImGuiKey_LegacyNativeKey_BEGIN: c_int = 0; -pub const ImGuiKey_LegacyNativeKey_END: c_int = 512; -pub const ImGuiKey_Gamepad_BEGIN: c_int = 617; -pub const ImGuiKey_Gamepad_END: c_int = 641; -pub const ImGuiKeyPrivate_ = c_uint; -pub const ImGuiInputEventType_None: c_int = 0; -pub const ImGuiInputEventType_MousePos: c_int = 1; -pub const ImGuiInputEventType_MouseWheel: c_int = 2; -pub const ImGuiInputEventType_MouseButton: c_int = 3; -pub const ImGuiInputEventType_MouseViewport: c_int = 4; -pub const ImGuiInputEventType_Key: c_int = 5; -pub const ImGuiInputEventType_Text: c_int = 6; -pub const ImGuiInputEventType_Focus: c_int = 7; -pub const ImGuiInputEventType_COUNT: c_int = 8; -pub const ImGuiInputEventType = c_uint; -pub const ImGuiInputSource_None: c_int = 0; -pub const ImGuiInputSource_Mouse: c_int = 1; -pub const ImGuiInputSource_Keyboard: c_int = 2; -pub const ImGuiInputSource_Gamepad: c_int = 3; -pub const ImGuiInputSource_Clipboard: c_int = 4; -pub const ImGuiInputSource_Nav: c_int = 5; -pub const ImGuiInputSource_COUNT: c_int = 6; -pub const ImGuiInputSource = c_uint; -pub const ImGuiNavReadMode_Down: c_int = 0; -pub const ImGuiNavReadMode_Pressed: c_int = 1; -pub const ImGuiNavReadMode_Released: c_int = 2; -pub const ImGuiNavReadMode_Repeat: c_int = 3; -pub const ImGuiNavReadMode_RepeatSlow: c_int = 4; -pub const ImGuiNavReadMode_RepeatFast: c_int = 5; -pub const ImGuiNavReadMode = c_uint; -pub const ImGuiActivateFlags_None: c_int = 0; -pub const ImGuiActivateFlags_PreferInput: c_int = 1; -pub const ImGuiActivateFlags_PreferTweak: c_int = 2; -pub const ImGuiActivateFlags_TryToPreserveState: c_int = 4; -pub const ImGuiActivateFlags_ = c_uint; -pub const ImGuiScrollFlags_None: c_int = 0; -pub const ImGuiScrollFlags_KeepVisibleEdgeX: c_int = 1; -pub const ImGuiScrollFlags_KeepVisibleEdgeY: c_int = 2; -pub const ImGuiScrollFlags_KeepVisibleCenterX: c_int = 4; -pub const ImGuiScrollFlags_KeepVisibleCenterY: c_int = 8; -pub const ImGuiScrollFlags_AlwaysCenterX: c_int = 16; -pub const ImGuiScrollFlags_AlwaysCenterY: c_int = 32; -pub const ImGuiScrollFlags_NoScrollParent: c_int = 64; -pub const ImGuiScrollFlags_MaskX_: c_int = 21; -pub const ImGuiScrollFlags_MaskY_: c_int = 42; -pub const ImGuiScrollFlags_ = c_uint; -pub const ImGuiNavHighlightFlags_None: c_int = 0; -pub const ImGuiNavHighlightFlags_TypeDefault: c_int = 1; -pub const ImGuiNavHighlightFlags_TypeThin: c_int = 2; -pub const ImGuiNavHighlightFlags_AlwaysDraw: c_int = 4; -pub const ImGuiNavHighlightFlags_NoRounding: c_int = 8; -pub const ImGuiNavHighlightFlags_ = c_uint; -pub const ImGuiNavDirSourceFlags_None: c_int = 0; -pub const ImGuiNavDirSourceFlags_RawKeyboard: c_int = 1; -pub const ImGuiNavDirSourceFlags_Keyboard: c_int = 2; -pub const ImGuiNavDirSourceFlags_PadDPad: c_int = 4; -pub const ImGuiNavDirSourceFlags_PadLStick: c_int = 8; -pub const ImGuiNavDirSourceFlags_ = c_uint; -pub const ImGuiNavMoveFlags_None: c_int = 0; -pub const ImGuiNavMoveFlags_LoopX: c_int = 1; -pub const ImGuiNavMoveFlags_LoopY: c_int = 2; -pub const ImGuiNavMoveFlags_WrapX: c_int = 4; -pub const ImGuiNavMoveFlags_WrapY: c_int = 8; -pub const ImGuiNavMoveFlags_AllowCurrentNavId: c_int = 16; -pub const ImGuiNavMoveFlags_AlsoScoreVisibleSet: c_int = 32; -pub const ImGuiNavMoveFlags_ScrollToEdgeY: c_int = 64; -pub const ImGuiNavMoveFlags_Forwarded: c_int = 128; -pub const ImGuiNavMoveFlags_DebugNoResult: c_int = 256; -pub const ImGuiNavMoveFlags_FocusApi: c_int = 512; -pub const ImGuiNavMoveFlags_Tabbing: c_int = 1024; -pub const ImGuiNavMoveFlags_Activate: c_int = 2048; -pub const ImGuiNavMoveFlags_DontSetNavHighlight: c_int = 4096; -pub const ImGuiNavMoveFlags_ = c_uint; -pub const ImGuiNavLayer_Main: c_int = 0; -pub const ImGuiNavLayer_Menu: c_int = 1; -pub const ImGuiNavLayer_COUNT: c_int = 2; -pub const ImGuiNavLayer = c_uint; -pub const ImGuiOldColumnFlags_None: c_int = 0; -pub const ImGuiOldColumnFlags_NoBorder: c_int = 1; -pub const ImGuiOldColumnFlags_NoResize: c_int = 2; -pub const ImGuiOldColumnFlags_NoPreserveWidths: c_int = 4; -pub const ImGuiOldColumnFlags_NoForceWithinWindow: c_int = 8; -pub const ImGuiOldColumnFlags_GrowParentContentsSize: c_int = 16; -pub const ImGuiOldColumnFlags_ = c_uint; -pub const ImGuiDockNodeFlags_DockSpace: c_int = 1024; -pub const ImGuiDockNodeFlags_CentralNode: c_int = 2048; -pub const ImGuiDockNodeFlags_NoTabBar: c_int = 4096; -pub const ImGuiDockNodeFlags_HiddenTabBar: c_int = 8192; -pub const ImGuiDockNodeFlags_NoWindowMenuButton: c_int = 16384; -pub const ImGuiDockNodeFlags_NoCloseButton: c_int = 32768; -pub const ImGuiDockNodeFlags_NoDocking: c_int = 65536; -pub const ImGuiDockNodeFlags_NoDockingSplitMe: c_int = 131072; -pub const ImGuiDockNodeFlags_NoDockingSplitOther: c_int = 262144; -pub const ImGuiDockNodeFlags_NoDockingOverMe: c_int = 524288; -pub const ImGuiDockNodeFlags_NoDockingOverOther: c_int = 1048576; -pub const ImGuiDockNodeFlags_NoDockingOverEmpty: c_int = 2097152; -pub const ImGuiDockNodeFlags_NoResizeX: c_int = 4194304; -pub const ImGuiDockNodeFlags_NoResizeY: c_int = 8388608; -pub const ImGuiDockNodeFlags_SharedFlagsInheritMask_: c_int = -1; -pub const ImGuiDockNodeFlags_NoResizeFlagsMask_: c_int = 12582944; -pub const ImGuiDockNodeFlags_LocalFlagsMask_: c_int = 12713072; -pub const ImGuiDockNodeFlags_LocalFlagsTransferMask_: c_int = 12712048; -pub const ImGuiDockNodeFlags_SavedFlagsMask_: c_int = 12712992; -pub const ImGuiDockNodeFlagsPrivate_ = c_int; -pub const ImGuiDataAuthority_Auto: c_int = 0; -pub const ImGuiDataAuthority_DockNode: c_int = 1; -pub const ImGuiDataAuthority_Window: c_int = 2; -pub const ImGuiDataAuthority_ = c_uint; -pub const ImGuiDockNodeState_Unknown: c_int = 0; -pub const ImGuiDockNodeState_HostWindowHiddenBecauseSingleWindow: c_int = 1; -pub const ImGuiDockNodeState_HostWindowHiddenBecauseWindowsAreResizing: c_int = 2; -pub const ImGuiDockNodeState_HostWindowVisible: c_int = 3; -pub const ImGuiDockNodeState = c_uint; -pub const ImGuiWindowDockStyleCol_Text: c_int = 0; -pub const ImGuiWindowDockStyleCol_Tab: c_int = 1; -pub const ImGuiWindowDockStyleCol_TabHovered: c_int = 2; -pub const ImGuiWindowDockStyleCol_TabActive: c_int = 3; -pub const ImGuiWindowDockStyleCol_TabUnfocused: c_int = 4; -pub const ImGuiWindowDockStyleCol_TabUnfocusedActive: c_int = 5; -pub const ImGuiWindowDockStyleCol_COUNT: c_int = 6; -pub const ImGuiWindowDockStyleCol = c_uint; -pub const struct_ImGuiWindowDockStyle = extern struct { - Colors: [6]ImU32 = @import("std").mem.zeroes([6]ImU32), -}; -pub const ImGuiWindowDockStyle = struct_ImGuiWindowDockStyle; -pub const ImGuiDebugLogFlags_None: c_int = 0; -pub const ImGuiDebugLogFlags_EventActiveId: c_int = 1; -pub const ImGuiDebugLogFlags_EventFocus: c_int = 2; -pub const ImGuiDebugLogFlags_EventPopup: c_int = 4; -pub const ImGuiDebugLogFlags_EventNav: c_int = 8; -pub const ImGuiDebugLogFlags_EventIO: c_int = 16; -pub const ImGuiDebugLogFlags_EventDocking: c_int = 32; -pub const ImGuiDebugLogFlags_EventViewport: c_int = 64; -pub const ImGuiDebugLogFlags_EventMask_: c_int = 127; -pub const ImGuiDebugLogFlags_OutputToTTY: c_int = 1024; -pub const ImGuiDebugLogFlags_ = c_uint; -pub const ImGuiContextHookType_NewFramePre: c_int = 0; -pub const ImGuiContextHookType_NewFramePost: c_int = 1; -pub const ImGuiContextHookType_EndFramePre: c_int = 2; -pub const ImGuiContextHookType_EndFramePost: c_int = 3; -pub const ImGuiContextHookType_RenderPre: c_int = 4; -pub const ImGuiContextHookType_RenderPost: c_int = 5; -pub const ImGuiContextHookType_Shutdown: c_int = 6; -pub const ImGuiContextHookType_PendingRemoval_: c_int = 7; -pub const ImGuiContextHookType = c_uint; -pub const struct_ImVector_ImGuiOldColumns = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiOldColumns = @import("std").mem.zeroes([*c]ImGuiOldColumns), -}; -pub const ImVector_ImGuiOldColumns = struct_ImVector_ImGuiOldColumns; -pub const ImGuiTabBarFlags_DockNode: c_int = 1048576; -pub const ImGuiTabBarFlags_IsFocused: c_int = 2097152; -pub const ImGuiTabBarFlags_SaveSettings: c_int = 4194304; -pub const ImGuiTabBarFlagsPrivate_ = c_uint; -pub const ImGuiTabItemFlags_SectionMask_: c_int = 192; -pub const ImGuiTabItemFlags_NoCloseButton: c_int = 1048576; -pub const ImGuiTabItemFlags_Button: c_int = 2097152; -pub const ImGuiTabItemFlags_Unsorted: c_int = 4194304; -pub const ImGuiTabItemFlags_Preview: c_int = 8388608; -pub const ImGuiTabItemFlagsPrivate_ = c_uint; -pub const struct_ImVector_ImGuiTableInstanceData = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: [*c]ImGuiTableInstanceData = @import("std").mem.zeroes([*c]ImGuiTableInstanceData), -}; -pub const ImVector_ImGuiTableInstanceData = struct_ImVector_ImGuiTableInstanceData; -pub const struct_ImVector_ImGuiTableColumnSortSpecs = extern struct { - Size: c_int = @import("std").mem.zeroes(c_int), - Capacity: c_int = @import("std").mem.zeroes(c_int), - Data: ?*ImGuiTableColumnSortSpecs = @import("std").mem.zeroes(?*ImGuiTableColumnSortSpecs), -}; -pub const ImVector_ImGuiTableColumnSortSpecs = struct_ImVector_ImGuiTableColumnSortSpecs; -// cimgui2.h:2841:10: warning: struct demoted to opaque type - has bitfield -pub const struct_ImGuiTableColumnSettings = opaque {}; -pub const ImGuiTableColumnSettings = struct_ImGuiTableColumnSettings; -pub extern fn ImVec2_ImVec2_Nil() [*c]ImVec2; -pub extern fn ImVec2_destroy(self: [*c]ImVec2) void; -pub extern fn ImVec2_ImVec2_Float(_x: f32, _y: f32) [*c]ImVec2; -pub extern fn ImVec4_ImVec4_Nil() [*c]ImVec4; -pub extern fn ImVec4_destroy(self: [*c]ImVec4) void; -pub extern fn ImVec4_ImVec4_Float(_x: f32, _y: f32, _z: f32, _w: f32) [*c]ImVec4; -pub extern fn igCreateContext(shared_font_atlas: [*c]ImFontAtlas) [*c]ImGuiContext; -pub extern fn igDestroyContext(ctx: [*c]ImGuiContext) void; -pub extern fn igGetCurrentContext() [*c]ImGuiContext; -pub extern fn igSetCurrentContext(ctx: [*c]ImGuiContext) void; -pub extern fn igGetIO() [*c]ImGuiIO; -pub extern fn igGetStyle() [*c]ImGuiStyle; -pub extern fn igNewFrame() void; -pub extern fn igEndFrame() void; -pub extern fn igRender() void; -pub extern fn igGetDrawData() [*c]ImDrawData; -pub extern fn igShowDemoWindow(p_open: [*c]bool) void; -pub extern fn igShowMetricsWindow(p_open: [*c]bool) void; -pub extern fn igShowDebugLogWindow(p_open: [*c]bool) void; -pub extern fn igShowStackToolWindow(p_open: [*c]bool) void; -pub extern fn igShowAboutWindow(p_open: [*c]bool) void; -pub extern fn igShowStyleEditor(ref: [*c]ImGuiStyle) void; -pub extern fn igShowStyleSelector(label: [*c]const u8) bool; -pub extern fn igShowFontSelector(label: [*c]const u8) void; -pub extern fn igShowUserGuide() void; -pub extern fn igGetVersion() [*c]const u8; -pub extern fn igStyleColorsDark(dst: [*c]ImGuiStyle) void; -pub extern fn igStyleColorsLight(dst: [*c]ImGuiStyle) void; -pub extern fn igStyleColorsClassic(dst: [*c]ImGuiStyle) void; -pub extern fn igBegin(name: [*c]const u8, p_open: [*c]bool, flags: ImGuiWindowFlags) bool; -pub extern fn igEnd() void; -pub extern fn igBeginChild_Str(str_id: [*c]const u8, size: ImVec2, border: bool, flags: ImGuiWindowFlags) bool; -pub extern fn igBeginChild_ID(id: ImGuiID, size: ImVec2, border: bool, flags: ImGuiWindowFlags) bool; -pub extern fn igEndChild() void; -pub extern fn igIsWindowAppearing() bool; -pub extern fn igIsWindowCollapsed() bool; -pub extern fn igIsWindowFocused(flags: ImGuiFocusedFlags) bool; -pub extern fn igIsWindowHovered(flags: ImGuiHoveredFlags) bool; -pub extern fn igGetWindowDrawList() [*c]ImDrawList; -pub extern fn igGetWindowDpiScale() f32; -pub extern fn igGetWindowPos(pOut: [*c]ImVec2) void; -pub extern fn igGetWindowSize(pOut: [*c]ImVec2) void; -pub extern fn igGetWindowWidth() f32; -pub extern fn igGetWindowHeight() f32; -pub extern fn igGetWindowViewport() [*c]ImGuiViewport; -pub extern fn igSetNextWindowPos(pos: ImVec2, cond: ImGuiCond, pivot: ImVec2) void; -pub extern fn igSetNextWindowSize(size: ImVec2, cond: ImGuiCond) void; -pub extern fn igSetNextWindowSizeConstraints(size_min: ImVec2, size_max: ImVec2, custom_callback: ImGuiSizeCallback, custom_callback_data: ?*anyopaque) void; -pub extern fn igSetNextWindowContentSize(size: ImVec2) void; -pub extern fn igSetNextWindowCollapsed(collapsed: bool, cond: ImGuiCond) void; -pub extern fn igSetNextWindowFocus() void; -pub extern fn igSetNextWindowBgAlpha(alpha: f32) void; -pub extern fn igSetNextWindowViewport(viewport_id: ImGuiID) void; -pub extern fn igSetWindowPos_Vec2(pos: ImVec2, cond: ImGuiCond) void; -pub extern fn igSetWindowSize_Vec2(size: ImVec2, cond: ImGuiCond) void; -pub extern fn igSetWindowCollapsed_Bool(collapsed: bool, cond: ImGuiCond) void; -pub extern fn igSetWindowFocus_Nil() void; -pub extern fn igSetWindowFontScale(scale: f32) void; -pub extern fn igSetWindowPos_Str(name: [*c]const u8, pos: ImVec2, cond: ImGuiCond) void; -pub extern fn igSetWindowSize_Str(name: [*c]const u8, size: ImVec2, cond: ImGuiCond) void; -pub extern fn igSetWindowCollapsed_Str(name: [*c]const u8, collapsed: bool, cond: ImGuiCond) void; -pub extern fn igSetWindowFocus_Str(name: [*c]const u8) void; -pub extern fn igGetContentRegionAvail(pOut: [*c]ImVec2) void; -pub extern fn igGetContentRegionMax(pOut: [*c]ImVec2) void; -pub extern fn igGetWindowContentRegionMin(pOut: [*c]ImVec2) void; -pub extern fn igGetWindowContentRegionMax(pOut: [*c]ImVec2) void; -pub extern fn igGetScrollX() f32; -pub extern fn igGetScrollY() f32; -pub extern fn igSetScrollX_Float(scroll_x: f32) void; -pub extern fn igSetScrollY_Float(scroll_y: f32) void; -pub extern fn igGetScrollMaxX() f32; -pub extern fn igGetScrollMaxY() f32; -pub extern fn igSetScrollHereX(center_x_ratio: f32) void; -pub extern fn igSetScrollHereY(center_y_ratio: f32) void; -pub extern fn igSetScrollFromPosX_Float(local_x: f32, center_x_ratio: f32) void; -pub extern fn igSetScrollFromPosY_Float(local_y: f32, center_y_ratio: f32) void; -pub extern fn igPushFont(font: [*c]ImFont) void; -pub extern fn igPopFont() void; -pub extern fn igPushStyleColor_U32(idx: ImGuiCol, col: ImU32) void; -pub extern fn igPushStyleColor_Vec4(idx: ImGuiCol, col: ImVec4) void; -pub extern fn igPopStyleColor(count: c_int) void; -pub extern fn igPushStyleVar_Float(idx: ImGuiStyleVar, val: f32) void; -pub extern fn igPushStyleVar_Vec2(idx: ImGuiStyleVar, val: ImVec2) void; -pub extern fn igPopStyleVar(count: c_int) void; -pub extern fn igPushAllowKeyboardFocus(allow_keyboard_focus: bool) void; -pub extern fn igPopAllowKeyboardFocus() void; -pub extern fn igPushButtonRepeat(repeat: bool) void; -pub extern fn igPopButtonRepeat() void; -pub extern fn igPushItemWidth(item_width: f32) void; -pub extern fn igPopItemWidth() void; -pub extern fn igSetNextItemWidth(item_width: f32) void; -pub extern fn igCalcItemWidth() f32; -pub extern fn igPushTextWrapPos(wrap_local_pos_x: f32) void; -pub extern fn igPopTextWrapPos() void; -pub extern fn igGetFont() [*c]ImFont; -pub extern fn igGetFontSize() f32; -pub extern fn igGetFontTexUvWhitePixel(pOut: [*c]ImVec2) void; -pub extern fn igGetColorU32_Col(idx: ImGuiCol, alpha_mul: f32) ImU32; -pub extern fn igGetColorU32_Vec4(col: ImVec4) ImU32; -pub extern fn igGetColorU32_U32(col: ImU32) ImU32; -pub extern fn igGetStyleColorVec4(idx: ImGuiCol) [*c]const ImVec4; -pub extern fn igSeparator() void; -pub extern fn igSameLine(offset_from_start_x: f32, spacing: f32) void; -pub extern fn igNewLine() void; -pub extern fn igSpacing() void; -pub extern fn igDummy(size: ImVec2) void; -pub extern fn igIndent(indent_w: f32) void; -pub extern fn igUnindent(indent_w: f32) void; -pub extern fn igBeginGroup() void; -pub extern fn igEndGroup() void; -pub extern fn igGetCursorPos(pOut: [*c]ImVec2) void; -pub extern fn igGetCursorPosX() f32; -pub extern fn igGetCursorPosY() f32; -pub extern fn igSetCursorPos(local_pos: ImVec2) void; -pub extern fn igSetCursorPosX(local_x: f32) void; -pub extern fn igSetCursorPosY(local_y: f32) void; -pub extern fn igGetCursorStartPos(pOut: [*c]ImVec2) void; -pub extern fn igGetCursorScreenPos(pOut: [*c]ImVec2) void; -pub extern fn igSetCursorScreenPos(pos: ImVec2) void; -pub extern fn igAlignTextToFramePadding() void; -pub extern fn igGetTextLineHeight() f32; -pub extern fn igGetTextLineHeightWithSpacing() f32; -pub extern fn igGetFrameHeight() f32; -pub extern fn igGetFrameHeightWithSpacing() f32; -pub extern fn igPushID_Str(str_id: [*c]const u8) void; -pub extern fn igPushID_StrStr(str_id_begin: [*c]const u8, str_id_end: [*c]const u8) void; -pub extern fn igPushID_Ptr(ptr_id: ?*const anyopaque) void; -pub extern fn igPushID_Int(int_id: c_int) void; -pub extern fn igPopID() void; -pub extern fn igGetID_Str(str_id: [*c]const u8) ImGuiID; -pub extern fn igGetID_StrStr(str_id_begin: [*c]const u8, str_id_end: [*c]const u8) ImGuiID; -pub extern fn igGetID_Ptr(ptr_id: ?*const anyopaque) ImGuiID; -pub extern fn igTextUnformatted(text: [*c]const u8, text_end: [*c]const u8) void; -pub extern fn igText(fmt: [*c]const u8, ...) void; -pub extern fn igTextV(fmt: [*c]const u8, args: va_list) void; -pub extern fn igTextColored(col: ImVec4, fmt: [*c]const u8, ...) void; -pub extern fn igTextColoredV(col: ImVec4, fmt: [*c]const u8, args: va_list) void; -pub extern fn igTextDisabled(fmt: [*c]const u8, ...) void; -pub extern fn igTextDisabledV(fmt: [*c]const u8, args: va_list) void; -pub extern fn igTextWrapped(fmt: [*c]const u8, ...) void; -pub extern fn igTextWrappedV(fmt: [*c]const u8, args: va_list) void; -pub extern fn igLabelText(label: [*c]const u8, fmt: [*c]const u8, ...) void; -pub extern fn igLabelTextV(label: [*c]const u8, fmt: [*c]const u8, args: va_list) void; -pub extern fn igBulletText(fmt: [*c]const u8, ...) void; -pub extern fn igBulletTextV(fmt: [*c]const u8, args: va_list) void; -pub extern fn igButton(label: [*c]const u8, size: ImVec2) bool; -pub extern fn igSmallButton(label: [*c]const u8) bool; -pub extern fn igInvisibleButton(str_id: [*c]const u8, size: ImVec2, flags: ImGuiButtonFlags) bool; -pub extern fn igArrowButton(str_id: [*c]const u8, dir: ImGuiDir) bool; -pub extern fn igImage(user_texture_id: ImTextureID, size: ImVec2, uv0: ImVec2, uv1: ImVec2, tint_col: ImVec4, border_col: ImVec4) void; -pub extern fn igImageButton(user_texture_id: ImTextureID, size: ImVec2, uv0: ImVec2, uv1: ImVec2, frame_padding: c_int, bg_col: ImVec4, tint_col: ImVec4) bool; -pub extern fn igCheckbox(label: [*c]const u8, v: [*c]bool) bool; -pub extern fn igCheckboxFlags_IntPtr(label: [*c]const u8, flags: [*c]c_int, flags_value: c_int) bool; -pub extern fn igCheckboxFlags_UintPtr(label: [*c]const u8, flags: [*c]c_uint, flags_value: c_uint) bool; -pub extern fn igRadioButton_Bool(label: [*c]const u8, active: bool) bool; -pub extern fn igRadioButton_IntPtr(label: [*c]const u8, v: [*c]c_int, v_button: c_int) bool; -pub extern fn igProgressBar(fraction: f32, size_arg: ImVec2, overlay: [*c]const u8) void; -pub extern fn igBullet() void; -pub extern fn igBeginCombo(label: [*c]const u8, preview_value: [*c]const u8, flags: ImGuiComboFlags) bool; -pub extern fn igEndCombo() void; -pub extern fn igCombo_Str_arr(label: [*c]const u8, current_item: [*c]c_int, items: [*c]const [*c]const u8, items_count: c_int, popup_max_height_in_items: c_int) bool; -pub extern fn igCombo_Str(label: [*c]const u8, current_item: [*c]c_int, items_separated_by_zeros: [*c]const u8, popup_max_height_in_items: c_int) bool; -pub extern fn igCombo_FnBoolPtr(label: [*c]const u8, current_item: [*c]c_int, items_getter: ?*const fn (?*anyopaque, c_int, [*c][*c]const u8) callconv(.C) bool, data: ?*anyopaque, items_count: c_int, popup_max_height_in_items: c_int) bool; -pub extern fn igDragFloat(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragFloat2(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragFloat3(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragFloat4(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragFloatRange2(label: [*c]const u8, v_current_min: [*c]f32, v_current_max: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, format_max: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragInt(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragInt2(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragInt3(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragInt4(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragIntRange2(label: [*c]const u8, v_current_min: [*c]c_int, v_current_max: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, format_max: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragScalar(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, v_speed: f32, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igDragScalarN(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, components: c_int, v_speed: f32, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderFloat(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderFloat2(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderFloat3(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderFloat4(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderAngle(label: [*c]const u8, v_rad: [*c]f32, v_degrees_min: f32, v_degrees_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderInt(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderInt2(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderInt3(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderInt4(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderScalar(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderScalarN(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, components: c_int, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igVSliderFloat(label: [*c]const u8, size: ImVec2, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igVSliderInt(label: [*c]const u8, size: ImVec2, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igVSliderScalar(label: [*c]const u8, size: ImVec2, data_type: ImGuiDataType, p_data: ?*anyopaque, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igInputText(label: [*c]const u8, buf: [*c]u8, buf_size: usize, flags: ImGuiInputTextFlags, callback: ImGuiInputTextCallback, user_data: ?*anyopaque) bool; -pub extern fn igInputTextMultiline(label: [*c]const u8, buf: [*c]u8, buf_size: usize, size: ImVec2, flags: ImGuiInputTextFlags, callback: ImGuiInputTextCallback, user_data: ?*anyopaque) bool; -pub extern fn igInputTextWithHint(label: [*c]const u8, hint: [*c]const u8, buf: [*c]u8, buf_size: usize, flags: ImGuiInputTextFlags, callback: ImGuiInputTextCallback, user_data: ?*anyopaque) bool; -pub extern fn igInputFloat(label: [*c]const u8, v: [*c]f32, step: f32, step_fast: f32, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputFloat2(label: [*c]const u8, v: [*c]f32, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputFloat3(label: [*c]const u8, v: [*c]f32, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputFloat4(label: [*c]const u8, v: [*c]f32, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputInt(label: [*c]const u8, v: [*c]c_int, step: c_int, step_fast: c_int, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputInt2(label: [*c]const u8, v: [*c]c_int, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputInt3(label: [*c]const u8, v: [*c]c_int, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputInt4(label: [*c]const u8, v: [*c]c_int, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputDouble(label: [*c]const u8, v: [*c]f64, step: f64, step_fast: f64, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputScalar(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, p_step: ?*const anyopaque, p_step_fast: ?*const anyopaque, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; -pub extern fn igInputScalarN(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, components: c_int, p_step: ?*const anyopaque, p_step_fast: ?*const anyopaque, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; -pub extern fn igColorEdit3(label: [*c]const u8, col: [*c]f32, flags: ImGuiColorEditFlags) bool; -pub extern fn igColorEdit4(label: [*c]const u8, col: [*c]f32, flags: ImGuiColorEditFlags) bool; -pub extern fn igColorPicker3(label: [*c]const u8, col: [*c]f32, flags: ImGuiColorEditFlags) bool; -pub extern fn igColorPicker4(label: [*c]const u8, col: [*c]f32, flags: ImGuiColorEditFlags, ref_col: [*c]const f32) bool; -pub extern fn igColorButton(desc_id: [*c]const u8, col: ImVec4, flags: ImGuiColorEditFlags, size: ImVec2) bool; -pub extern fn igSetColorEditOptions(flags: ImGuiColorEditFlags) void; -pub extern fn igTreeNode_Str(label: [*c]const u8) bool; -pub extern fn igTreeNode_StrStr(str_id: [*c]const u8, fmt: [*c]const u8, ...) bool; -pub extern fn igTreeNode_Ptr(ptr_id: ?*const anyopaque, fmt: [*c]const u8, ...) bool; -pub extern fn igTreeNodeV_Str(str_id: [*c]const u8, fmt: [*c]const u8, args: va_list) bool; -pub extern fn igTreeNodeV_Ptr(ptr_id: ?*const anyopaque, fmt: [*c]const u8, args: va_list) bool; -pub extern fn igTreeNodeEx_Str(label: [*c]const u8, flags: ImGuiTreeNodeFlags) bool; -pub extern fn igTreeNodeEx_StrStr(str_id: [*c]const u8, flags: ImGuiTreeNodeFlags, fmt: [*c]const u8, ...) bool; -pub extern fn igTreeNodeEx_Ptr(ptr_id: ?*const anyopaque, flags: ImGuiTreeNodeFlags, fmt: [*c]const u8, ...) bool; -pub extern fn igTreeNodeExV_Str(str_id: [*c]const u8, flags: ImGuiTreeNodeFlags, fmt: [*c]const u8, args: va_list) bool; -pub extern fn igTreeNodeExV_Ptr(ptr_id: ?*const anyopaque, flags: ImGuiTreeNodeFlags, fmt: [*c]const u8, args: va_list) bool; -pub extern fn igTreePush_Str(str_id: [*c]const u8) void; -pub extern fn igTreePush_Ptr(ptr_id: ?*const anyopaque) void; -pub extern fn igTreePop() void; -pub extern fn igGetTreeNodeToLabelSpacing() f32; -pub extern fn igCollapsingHeader_TreeNodeFlags(label: [*c]const u8, flags: ImGuiTreeNodeFlags) bool; -pub extern fn igCollapsingHeader_BoolPtr(label: [*c]const u8, p_visible: [*c]bool, flags: ImGuiTreeNodeFlags) bool; -pub extern fn igSetNextItemOpen(is_open: bool, cond: ImGuiCond) void; -pub extern fn igSelectable_Bool(label: [*c]const u8, selected: bool, flags: ImGuiSelectableFlags, size: ImVec2) bool; -pub extern fn igSelectable_BoolPtr(label: [*c]const u8, p_selected: [*c]bool, flags: ImGuiSelectableFlags, size: ImVec2) bool; -pub extern fn igBeginListBox(label: [*c]const u8, size: ImVec2) bool; -pub extern fn igEndListBox() void; -pub extern fn igListBox_Str_arr(label: [*c]const u8, current_item: [*c]c_int, items: [*c]const [*c]const u8, items_count: c_int, height_in_items: c_int) bool; -pub extern fn igListBox_FnBoolPtr(label: [*c]const u8, current_item: [*c]c_int, items_getter: ?*const fn (?*anyopaque, c_int, [*c][*c]const u8) callconv(.C) bool, data: ?*anyopaque, items_count: c_int, height_in_items: c_int) bool; -pub extern fn igPlotLines_FloatPtr(label: [*c]const u8, values: [*c]const f32, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: ImVec2, stride: c_int) void; -pub extern fn igPlotLines_FnFloatPtr(label: [*c]const u8, values_getter: ?*const fn (?*anyopaque, c_int) callconv(.C) f32, data: ?*anyopaque, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: ImVec2) void; -pub extern fn igPlotHistogram_FloatPtr(label: [*c]const u8, values: [*c]const f32, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: ImVec2, stride: c_int) void; -pub extern fn igPlotHistogram_FnFloatPtr(label: [*c]const u8, values_getter: ?*const fn (?*anyopaque, c_int) callconv(.C) f32, data: ?*anyopaque, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: ImVec2) void; -pub extern fn igValue_Bool(prefix: [*c]const u8, b: bool) void; -pub extern fn igValue_Int(prefix: [*c]const u8, v: c_int) void; -pub extern fn igValue_Uint(prefix: [*c]const u8, v: c_uint) void; -pub extern fn igValue_Float(prefix: [*c]const u8, v: f32, float_format: [*c]const u8) void; -pub extern fn igBeginMenuBar() bool; -pub extern fn igEndMenuBar() void; -pub extern fn igBeginMainMenuBar() bool; -pub extern fn igEndMainMenuBar() void; -pub extern fn igBeginMenu(label: [*c]const u8, enabled: bool) bool; -pub extern fn igEndMenu() void; -pub extern fn igMenuItem_Bool(label: [*c]const u8, shortcut: [*c]const u8, selected: bool, enabled: bool) bool; -pub extern fn igMenuItem_BoolPtr(label: [*c]const u8, shortcut: [*c]const u8, p_selected: [*c]bool, enabled: bool) bool; -pub extern fn igBeginTooltip() void; -pub extern fn igEndTooltip() void; -pub extern fn igSetTooltip(fmt: [*c]const u8, ...) void; -pub extern fn igSetTooltipV(fmt: [*c]const u8, args: va_list) void; -pub extern fn igBeginPopup(str_id: [*c]const u8, flags: ImGuiWindowFlags) bool; -pub extern fn igBeginPopupModal(name: [*c]const u8, p_open: [*c]bool, flags: ImGuiWindowFlags) bool; -pub extern fn igEndPopup() void; -pub extern fn igOpenPopup_Str(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) void; -pub extern fn igOpenPopup_ID(id: ImGuiID, popup_flags: ImGuiPopupFlags) void; -pub extern fn igOpenPopupOnItemClick(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) void; -pub extern fn igCloseCurrentPopup() void; -pub extern fn igBeginPopupContextItem(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) bool; -pub extern fn igBeginPopupContextWindow(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) bool; -pub extern fn igBeginPopupContextVoid(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) bool; -pub extern fn igIsPopupOpen_Str(str_id: [*c]const u8, flags: ImGuiPopupFlags) bool; -pub extern fn igBeginTable(str_id: [*c]const u8, column: c_int, flags: ImGuiTableFlags, outer_size: ImVec2, inner_width: f32) bool; -pub extern fn igEndTable() void; -pub extern fn igTableNextRow(row_flags: ImGuiTableRowFlags, min_row_height: f32) void; -pub extern fn igTableNextColumn() bool; -pub extern fn igTableSetColumnIndex(column_n: c_int) bool; -pub extern fn igTableSetupColumn(label: [*c]const u8, flags: ImGuiTableColumnFlags, init_width_or_weight: f32, user_id: ImGuiID) void; -pub extern fn igTableSetupScrollFreeze(cols: c_int, rows: c_int) void; -pub extern fn igTableHeadersRow() void; -pub extern fn igTableHeader(label: [*c]const u8) void; -pub extern fn igTableGetSortSpecs() [*c]ImGuiTableSortSpecs; -pub extern fn igTableGetColumnCount() c_int; -pub extern fn igTableGetColumnIndex() c_int; -pub extern fn igTableGetRowIndex() c_int; -pub extern fn igTableGetColumnName_Int(column_n: c_int) [*c]const u8; -pub extern fn igTableGetColumnFlags(column_n: c_int) ImGuiTableColumnFlags; -pub extern fn igTableSetColumnEnabled(column_n: c_int, v: bool) void; -pub extern fn igTableSetBgColor(target: ImGuiTableBgTarget, color: ImU32, column_n: c_int) void; -pub extern fn igColumns(count: c_int, id: [*c]const u8, border: bool) void; -pub extern fn igNextColumn() void; -pub extern fn igGetColumnIndex() c_int; -pub extern fn igGetColumnWidth(column_index: c_int) f32; -pub extern fn igSetColumnWidth(column_index: c_int, width: f32) void; -pub extern fn igGetColumnOffset(column_index: c_int) f32; -pub extern fn igSetColumnOffset(column_index: c_int, offset_x: f32) void; -pub extern fn igGetColumnsCount() c_int; -pub extern fn igBeginTabBar(str_id: [*c]const u8, flags: ImGuiTabBarFlags) bool; -pub extern fn igEndTabBar() void; -pub extern fn igBeginTabItem(label: [*c]const u8, p_open: [*c]bool, flags: ImGuiTabItemFlags) bool; -pub extern fn igEndTabItem() void; -pub extern fn igTabItemButton(label: [*c]const u8, flags: ImGuiTabItemFlags) bool; -pub extern fn igSetTabItemClosed(tab_or_docked_window_label: [*c]const u8) void; -pub extern fn igDockSpace(id: ImGuiID, size: ImVec2, flags: ImGuiDockNodeFlags, window_class: [*c]const ImGuiWindowClass) ImGuiID; -pub extern fn igDockSpaceOverViewport(viewport: [*c]const ImGuiViewport, flags: ImGuiDockNodeFlags, window_class: [*c]const ImGuiWindowClass) ImGuiID; -pub extern fn igSetNextWindowDockID(dock_id: ImGuiID, cond: ImGuiCond) void; -pub extern fn igSetNextWindowClass(window_class: [*c]const ImGuiWindowClass) void; -pub extern fn igGetWindowDockID() ImGuiID; -pub extern fn igIsWindowDocked() bool; -pub extern fn igLogToTTY(auto_open_depth: c_int) void; -pub extern fn igLogToFile(auto_open_depth: c_int, filename: [*c]const u8) void; -pub extern fn igLogToClipboard(auto_open_depth: c_int) void; -pub extern fn igLogFinish() void; -pub extern fn igLogButtons() void; -pub extern fn igLogTextV(fmt: [*c]const u8, args: va_list) void; -pub extern fn igBeginDragDropSource(flags: ImGuiDragDropFlags) bool; -pub extern fn igSetDragDropPayload(@"type": [*c]const u8, data: ?*const anyopaque, sz: usize, cond: ImGuiCond) bool; -pub extern fn igEndDragDropSource() void; -pub extern fn igBeginDragDropTarget() bool; -pub extern fn igAcceptDragDropPayload(@"type": [*c]const u8, flags: ImGuiDragDropFlags) [*c]const ImGuiPayload; -pub extern fn igEndDragDropTarget() void; -pub extern fn igGetDragDropPayload() [*c]const ImGuiPayload; -pub extern fn igBeginDisabled(disabled: bool) void; -pub extern fn igEndDisabled() void; -pub extern fn igPushClipRect(clip_rect_min: ImVec2, clip_rect_max: ImVec2, intersect_with_current_clip_rect: bool) void; -pub extern fn igPopClipRect() void; -pub extern fn igSetItemDefaultFocus() void; -pub extern fn igSetKeyboardFocusHere(offset: c_int) void; -pub extern fn igIsItemHovered(flags: ImGuiHoveredFlags) bool; -pub extern fn igIsItemActive() bool; -pub extern fn igIsItemFocused() bool; -pub extern fn igIsItemClicked(mouse_button: ImGuiMouseButton) bool; -pub extern fn igIsItemVisible() bool; -pub extern fn igIsItemEdited() bool; -pub extern fn igIsItemActivated() bool; -pub extern fn igIsItemDeactivated() bool; -pub extern fn igIsItemDeactivatedAfterEdit() bool; -pub extern fn igIsItemToggledOpen() bool; -pub extern fn igIsAnyItemHovered() bool; -pub extern fn igIsAnyItemActive() bool; -pub extern fn igIsAnyItemFocused() bool; -pub extern fn igGetItemRectMin(pOut: [*c]ImVec2) void; -pub extern fn igGetItemRectMax(pOut: [*c]ImVec2) void; -pub extern fn igGetItemRectSize(pOut: [*c]ImVec2) void; -pub extern fn igSetItemAllowOverlap() void; -pub extern fn igGetMainViewport() [*c]ImGuiViewport; -pub extern fn igGetBackgroundDrawList_Nil() [*c]ImDrawList; -pub extern fn igGetForegroundDrawList_Nil() [*c]ImDrawList; -pub extern fn igGetBackgroundDrawList_ViewportPtr(viewport: [*c]ImGuiViewport) [*c]ImDrawList; -pub extern fn igGetForegroundDrawList_ViewportPtr(viewport: [*c]ImGuiViewport) [*c]ImDrawList; -pub extern fn igIsRectVisible_Nil(size: ImVec2) bool; -pub extern fn igIsRectVisible_Vec2(rect_min: ImVec2, rect_max: ImVec2) bool; -pub extern fn igGetTime() f64; -pub extern fn igGetFrameCount() c_int; -pub extern fn igGetDrawListSharedData() [*c]ImDrawListSharedData; -pub extern fn igGetStyleColorName(idx: ImGuiCol) [*c]const u8; -pub extern fn igSetStateStorage(storage: [*c]ImGuiStorage) void; -pub extern fn igGetStateStorage() [*c]ImGuiStorage; -pub extern fn igBeginChildFrame(id: ImGuiID, size: ImVec2, flags: ImGuiWindowFlags) bool; -pub extern fn igEndChildFrame() void; -pub extern fn igCalcTextSize(pOut: [*c]ImVec2, text: [*c]const u8, text_end: [*c]const u8, hide_text_after_double_hash: bool, wrap_width: f32) void; -pub extern fn igColorConvertU32ToFloat4(pOut: [*c]ImVec4, in: ImU32) void; -pub extern fn igColorConvertFloat4ToU32(in: ImVec4) ImU32; -pub extern fn igColorConvertRGBtoHSV(r: f32, g: f32, b: f32, out_h: [*c]f32, out_s: [*c]f32, out_v: [*c]f32) void; -pub extern fn igColorConvertHSVtoRGB(h: f32, s: f32, v: f32, out_r: [*c]f32, out_g: [*c]f32, out_b: [*c]f32) void; -pub extern fn igIsKeyDown(key: ImGuiKey) bool; -pub extern fn igIsKeyPressed(key: ImGuiKey, repeat: bool) bool; -pub extern fn igIsKeyReleased(key: ImGuiKey) bool; -pub extern fn igGetKeyPressedAmount(key: ImGuiKey, repeat_delay: f32, rate: f32) c_int; -pub extern fn igGetKeyName(key: ImGuiKey) [*c]const u8; -pub extern fn igSetNextFrameWantCaptureKeyboard(want_capture_keyboard: bool) void; -pub extern fn igIsMouseDown(button: ImGuiMouseButton) bool; -pub extern fn igIsMouseClicked(button: ImGuiMouseButton, repeat: bool) bool; -pub extern fn igIsMouseReleased(button: ImGuiMouseButton) bool; -pub extern fn igIsMouseDoubleClicked(button: ImGuiMouseButton) bool; -pub extern fn igGetMouseClickedCount(button: ImGuiMouseButton) c_int; -pub extern fn igIsMouseHoveringRect(r_min: ImVec2, r_max: ImVec2, clip: bool) bool; -pub extern fn igIsMousePosValid(mouse_pos: [*c]const ImVec2) bool; -pub extern fn igIsAnyMouseDown() bool; -pub extern fn igGetMousePos(pOut: [*c]ImVec2) void; -pub extern fn igGetMousePosOnOpeningCurrentPopup(pOut: [*c]ImVec2) void; -pub extern fn igIsMouseDragging(button: ImGuiMouseButton, lock_threshold: f32) bool; -pub extern fn igGetMouseDragDelta(pOut: [*c]ImVec2, button: ImGuiMouseButton, lock_threshold: f32) void; -pub extern fn igResetMouseDragDelta(button: ImGuiMouseButton) void; -pub extern fn igGetMouseCursor() ImGuiMouseCursor; -pub extern fn igSetMouseCursor(cursor_type: ImGuiMouseCursor) void; -pub extern fn igSetNextFrameWantCaptureMouse(want_capture_mouse: bool) void; -pub extern fn igGetClipboardText() [*c]const u8; -pub extern fn igSetClipboardText(text: [*c]const u8) void; -pub extern fn igLoadIniSettingsFromDisk(ini_filename: [*c]const u8) void; -pub extern fn igLoadIniSettingsFromMemory(ini_data: [*c]const u8, ini_size: usize) void; -pub extern fn igSaveIniSettingsToDisk(ini_filename: [*c]const u8) void; -pub extern fn igSaveIniSettingsToMemory(out_ini_size: [*c]usize) [*c]const u8; -pub extern fn igDebugTextEncoding(text: [*c]const u8) void; -pub extern fn igDebugCheckVersionAndDataLayout(version_str: [*c]const u8, sz_io: usize, sz_style: usize, sz_vec2: usize, sz_vec4: usize, sz_drawvert: usize, sz_drawidx: usize) bool; -pub extern fn igSetAllocatorFunctions(alloc_func: ImGuiMemAllocFunc, free_func: ImGuiMemFreeFunc, user_data: ?*anyopaque) void; -pub extern fn igGetAllocatorFunctions(p_alloc_func: [*c]ImGuiMemAllocFunc, p_free_func: [*c]ImGuiMemFreeFunc, p_user_data: [*c]?*anyopaque) void; -pub extern fn igMemAlloc(size: usize) ?*anyopaque; -pub extern fn igMemFree(ptr: ?*anyopaque) void; -pub extern fn igGetPlatformIO() [*c]ImGuiPlatformIO; -pub extern fn igUpdatePlatformWindows() void; -pub extern fn igRenderPlatformWindowsDefault(platform_render_arg: ?*anyopaque, renderer_render_arg: ?*anyopaque) void; -pub extern fn igDestroyPlatformWindows() void; -pub extern fn igFindViewportByID(id: ImGuiID) [*c]ImGuiViewport; -pub extern fn igFindViewportByPlatformHandle(platform_handle: ?*anyopaque) [*c]ImGuiViewport; -pub extern fn ImGuiStyle_ImGuiStyle() [*c]ImGuiStyle; -pub extern fn ImGuiStyle_destroy(self: [*c]ImGuiStyle) void; -pub extern fn ImGuiStyle_ScaleAllSizes(self: [*c]ImGuiStyle, scale_factor: f32) void; -pub extern fn ImGuiIO_AddKeyEvent(self: [*c]ImGuiIO, key: ImGuiKey, down: bool) void; -pub extern fn ImGuiIO_AddKeyAnalogEvent(self: [*c]ImGuiIO, key: ImGuiKey, down: bool, v: f32) void; -pub extern fn ImGuiIO_AddMousePosEvent(self: [*c]ImGuiIO, x: f32, y: f32) void; -pub extern fn ImGuiIO_AddMouseButtonEvent(self: [*c]ImGuiIO, button: c_int, down: bool) void; -pub extern fn ImGuiIO_AddMouseWheelEvent(self: [*c]ImGuiIO, wh_x: f32, wh_y: f32) void; -pub extern fn ImGuiIO_AddMouseViewportEvent(self: [*c]ImGuiIO, id: ImGuiID) void; -pub extern fn ImGuiIO_AddFocusEvent(self: [*c]ImGuiIO, focused: bool) void; -pub extern fn ImGuiIO_AddInputCharacter(self: [*c]ImGuiIO, c: c_uint) void; -pub extern fn ImGuiIO_AddInputCharacterUTF16(self: [*c]ImGuiIO, c: ImWchar16) void; -pub extern fn ImGuiIO_AddInputCharactersUTF8(self: [*c]ImGuiIO, str: [*c]const u8) void; -pub extern fn ImGuiIO_SetKeyEventNativeData(self: [*c]ImGuiIO, key: ImGuiKey, native_keycode: c_int, native_scancode: c_int, native_legacy_index: c_int) void; -pub extern fn ImGuiIO_SetAppAcceptingEvents(self: [*c]ImGuiIO, accepting_events: bool) void; -pub extern fn ImGuiIO_ClearInputCharacters(self: [*c]ImGuiIO) void; -pub extern fn ImGuiIO_ClearInputKeys(self: [*c]ImGuiIO) void; -pub extern fn ImGuiIO_ImGuiIO() [*c]ImGuiIO; -pub extern fn ImGuiIO_destroy(self: [*c]ImGuiIO) void; -pub extern fn ImGuiInputTextCallbackData_ImGuiInputTextCallbackData() [*c]ImGuiInputTextCallbackData; -pub extern fn ImGuiInputTextCallbackData_destroy(self: [*c]ImGuiInputTextCallbackData) void; -pub extern fn ImGuiInputTextCallbackData_DeleteChars(self: [*c]ImGuiInputTextCallbackData, pos: c_int, bytes_count: c_int) void; -pub extern fn ImGuiInputTextCallbackData_InsertChars(self: [*c]ImGuiInputTextCallbackData, pos: c_int, text: [*c]const u8, text_end: [*c]const u8) void; -pub extern fn ImGuiInputTextCallbackData_SelectAll(self: [*c]ImGuiInputTextCallbackData) void; -pub extern fn ImGuiInputTextCallbackData_ClearSelection(self: [*c]ImGuiInputTextCallbackData) void; -pub extern fn ImGuiInputTextCallbackData_HasSelection(self: [*c]ImGuiInputTextCallbackData) bool; -pub extern fn ImGuiWindowClass_ImGuiWindowClass() [*c]ImGuiWindowClass; -pub extern fn ImGuiWindowClass_destroy(self: [*c]ImGuiWindowClass) void; -pub extern fn ImGuiPayload_ImGuiPayload() [*c]ImGuiPayload; -pub extern fn ImGuiPayload_destroy(self: [*c]ImGuiPayload) void; -pub extern fn ImGuiPayload_Clear(self: [*c]ImGuiPayload) void; -pub extern fn ImGuiPayload_IsDataType(self: [*c]ImGuiPayload, @"type": [*c]const u8) bool; -pub extern fn ImGuiPayload_IsPreview(self: [*c]ImGuiPayload) bool; -pub extern fn ImGuiPayload_IsDelivery(self: [*c]ImGuiPayload) bool; -pub extern fn ImGuiTableColumnSortSpecs_ImGuiTableColumnSortSpecs() ?*ImGuiTableColumnSortSpecs; -pub extern fn ImGuiTableColumnSortSpecs_destroy(self: ?*ImGuiTableColumnSortSpecs) void; -pub extern fn ImGuiTableSortSpecs_ImGuiTableSortSpecs() [*c]ImGuiTableSortSpecs; -pub extern fn ImGuiTableSortSpecs_destroy(self: [*c]ImGuiTableSortSpecs) void; -pub extern fn ImGuiOnceUponAFrame_ImGuiOnceUponAFrame() [*c]ImGuiOnceUponAFrame; -pub extern fn ImGuiOnceUponAFrame_destroy(self: [*c]ImGuiOnceUponAFrame) void; -pub extern fn ImGuiTextFilter_ImGuiTextFilter(default_filter: [*c]const u8) [*c]ImGuiTextFilter; -pub extern fn ImGuiTextFilter_destroy(self: [*c]ImGuiTextFilter) void; -pub extern fn ImGuiTextFilter_Draw(self: [*c]ImGuiTextFilter, label: [*c]const u8, width: f32) bool; -pub extern fn ImGuiTextFilter_PassFilter(self: [*c]ImGuiTextFilter, text: [*c]const u8, text_end: [*c]const u8) bool; -pub extern fn ImGuiTextFilter_Build(self: [*c]ImGuiTextFilter) void; -pub extern fn ImGuiTextFilter_Clear(self: [*c]ImGuiTextFilter) void; -pub extern fn ImGuiTextFilter_IsActive(self: [*c]ImGuiTextFilter) bool; -pub extern fn ImGuiTextRange_ImGuiTextRange_Nil() [*c]ImGuiTextRange; -pub extern fn ImGuiTextRange_destroy(self: [*c]ImGuiTextRange) void; -pub extern fn ImGuiTextRange_ImGuiTextRange_Str(_b: [*c]const u8, _e: [*c]const u8) [*c]ImGuiTextRange; -pub extern fn ImGuiTextRange_empty(self: [*c]ImGuiTextRange) bool; -pub extern fn ImGuiTextRange_split(self: [*c]ImGuiTextRange, separator: u8, out: [*c]ImVector_ImGuiTextRange) void; -pub extern fn ImGuiTextBuffer_ImGuiTextBuffer() [*c]ImGuiTextBuffer; -pub extern fn ImGuiTextBuffer_destroy(self: [*c]ImGuiTextBuffer) void; -pub extern fn ImGuiTextBuffer_begin(self: [*c]ImGuiTextBuffer) [*c]const u8; -pub extern fn ImGuiTextBuffer_end(self: [*c]ImGuiTextBuffer) [*c]const u8; -pub extern fn ImGuiTextBuffer_size(self: [*c]ImGuiTextBuffer) c_int; -pub extern fn ImGuiTextBuffer_empty(self: [*c]ImGuiTextBuffer) bool; -pub extern fn ImGuiTextBuffer_clear(self: [*c]ImGuiTextBuffer) void; -pub extern fn ImGuiTextBuffer_reserve(self: [*c]ImGuiTextBuffer, capacity: c_int) void; -pub extern fn ImGuiTextBuffer_c_str(self: [*c]ImGuiTextBuffer) [*c]const u8; -pub extern fn ImGuiTextBuffer_append(self: [*c]ImGuiTextBuffer, str: [*c]const u8, str_end: [*c]const u8) void; -pub extern fn ImGuiTextBuffer_appendfv(self: [*c]ImGuiTextBuffer, fmt: [*c]const u8, args: va_list) void; -pub extern fn ImGuiStoragePair_ImGuiStoragePair_Int(_key: ImGuiID, _val_i: c_int) [*c]ImGuiStoragePair; -pub extern fn ImGuiStoragePair_destroy(self: [*c]ImGuiStoragePair) void; -pub extern fn ImGuiStoragePair_ImGuiStoragePair_Float(_key: ImGuiID, _val_f: f32) [*c]ImGuiStoragePair; -pub extern fn ImGuiStoragePair_ImGuiStoragePair_Ptr(_key: ImGuiID, _val_p: ?*anyopaque) [*c]ImGuiStoragePair; -pub extern fn ImGuiStorage_Clear(self: [*c]ImGuiStorage) void; -pub extern fn ImGuiStorage_GetInt(self: [*c]ImGuiStorage, key: ImGuiID, default_val: c_int) c_int; -pub extern fn ImGuiStorage_SetInt(self: [*c]ImGuiStorage, key: ImGuiID, val: c_int) void; -pub extern fn ImGuiStorage_GetBool(self: [*c]ImGuiStorage, key: ImGuiID, default_val: bool) bool; -pub extern fn ImGuiStorage_SetBool(self: [*c]ImGuiStorage, key: ImGuiID, val: bool) void; -pub extern fn ImGuiStorage_GetFloat(self: [*c]ImGuiStorage, key: ImGuiID, default_val: f32) f32; -pub extern fn ImGuiStorage_SetFloat(self: [*c]ImGuiStorage, key: ImGuiID, val: f32) void; -pub extern fn ImGuiStorage_GetVoidPtr(self: [*c]ImGuiStorage, key: ImGuiID) ?*anyopaque; -pub extern fn ImGuiStorage_SetVoidPtr(self: [*c]ImGuiStorage, key: ImGuiID, val: ?*anyopaque) void; -pub extern fn ImGuiStorage_GetIntRef(self: [*c]ImGuiStorage, key: ImGuiID, default_val: c_int) [*c]c_int; -pub extern fn ImGuiStorage_GetBoolRef(self: [*c]ImGuiStorage, key: ImGuiID, default_val: bool) [*c]bool; -pub extern fn ImGuiStorage_GetFloatRef(self: [*c]ImGuiStorage, key: ImGuiID, default_val: f32) [*c]f32; -pub extern fn ImGuiStorage_GetVoidPtrRef(self: [*c]ImGuiStorage, key: ImGuiID, default_val: ?*anyopaque) [*c]?*anyopaque; -pub extern fn ImGuiStorage_SetAllInt(self: [*c]ImGuiStorage, val: c_int) void; -pub extern fn ImGuiStorage_BuildSortByKey(self: [*c]ImGuiStorage) void; -pub extern fn ImGuiListClipper_ImGuiListClipper() [*c]ImGuiListClipper; -pub extern fn ImGuiListClipper_destroy(self: [*c]ImGuiListClipper) void; -pub extern fn ImGuiListClipper_Begin(self: [*c]ImGuiListClipper, items_count: c_int, items_height: f32) void; -pub extern fn ImGuiListClipper_End(self: [*c]ImGuiListClipper) void; -pub extern fn ImGuiListClipper_Step(self: [*c]ImGuiListClipper) bool; -pub extern fn ImGuiListClipper_ForceDisplayRangeByIndices(self: [*c]ImGuiListClipper, item_min: c_int, item_max: c_int) void; -pub extern fn ImColor_ImColor_Nil() [*c]ImColor; -pub extern fn ImColor_destroy(self: [*c]ImColor) void; -pub extern fn ImColor_ImColor_Float(r: f32, g: f32, b: f32, a: f32) [*c]ImColor; -pub extern fn ImColor_ImColor_Vec4(col: ImVec4) [*c]ImColor; -pub extern fn ImColor_ImColor_Int(r: c_int, g: c_int, b: c_int, a: c_int) [*c]ImColor; -pub extern fn ImColor_ImColor_U32(rgba: ImU32) [*c]ImColor; -pub extern fn ImColor_SetHSV(self: [*c]ImColor, h: f32, s: f32, v: f32, a: f32) void; -pub extern fn ImColor_HSV(pOut: [*c]ImColor, h: f32, s: f32, v: f32, a: f32) void; -pub extern fn ImDrawCmd_ImDrawCmd() [*c]ImDrawCmd; -pub extern fn ImDrawCmd_destroy(self: [*c]ImDrawCmd) void; -pub extern fn ImDrawCmd_GetTexID(self: [*c]ImDrawCmd) ImTextureID; -pub extern fn ImDrawListSplitter_ImDrawListSplitter() [*c]ImDrawListSplitter; -pub extern fn ImDrawListSplitter_destroy(self: [*c]ImDrawListSplitter) void; -pub extern fn ImDrawListSplitter_Clear(self: [*c]ImDrawListSplitter) void; -pub extern fn ImDrawListSplitter_ClearFreeMemory(self: [*c]ImDrawListSplitter) void; -pub extern fn ImDrawListSplitter_Split(self: [*c]ImDrawListSplitter, draw_list: [*c]ImDrawList, count: c_int) void; -pub extern fn ImDrawListSplitter_Merge(self: [*c]ImDrawListSplitter, draw_list: [*c]ImDrawList) void; -pub extern fn ImDrawListSplitter_SetCurrentChannel(self: [*c]ImDrawListSplitter, draw_list: [*c]ImDrawList, channel_idx: c_int) void; -pub extern fn ImDrawList_ImDrawList(shared_data: [*c]const ImDrawListSharedData) [*c]ImDrawList; -pub extern fn ImDrawList_destroy(self: [*c]ImDrawList) void; -pub extern fn ImDrawList_PushClipRect(self: [*c]ImDrawList, clip_rect_min: ImVec2, clip_rect_max: ImVec2, intersect_with_current_clip_rect: bool) void; -pub extern fn ImDrawList_PushClipRectFullScreen(self: [*c]ImDrawList) void; -pub extern fn ImDrawList_PopClipRect(self: [*c]ImDrawList) void; -pub extern fn ImDrawList_PushTextureID(self: [*c]ImDrawList, texture_id: ImTextureID) void; -pub extern fn ImDrawList_PopTextureID(self: [*c]ImDrawList) void; -pub extern fn ImDrawList_GetClipRectMin(pOut: [*c]ImVec2, self: [*c]ImDrawList) void; -pub extern fn ImDrawList_GetClipRectMax(pOut: [*c]ImVec2, self: [*c]ImDrawList) void; -pub extern fn ImDrawList_AddLine(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, col: ImU32, thickness: f32) void; -pub extern fn ImDrawList_AddRect(self: [*c]ImDrawList, p_min: ImVec2, p_max: ImVec2, col: ImU32, rounding: f32, flags: ImDrawFlags, thickness: f32) void; -pub extern fn ImDrawList_AddRectFilled(self: [*c]ImDrawList, p_min: ImVec2, p_max: ImVec2, col: ImU32, rounding: f32, flags: ImDrawFlags) void; -pub extern fn ImDrawList_AddRectFilledMultiColor(self: [*c]ImDrawList, p_min: ImVec2, p_max: ImVec2, col_upr_left: ImU32, col_upr_right: ImU32, col_bot_right: ImU32, col_bot_left: ImU32) void; -pub extern fn ImDrawList_AddQuad(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32, thickness: f32) void; -pub extern fn ImDrawList_AddQuadFilled(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32) void; -pub extern fn ImDrawList_AddTriangle(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32, thickness: f32) void; -pub extern fn ImDrawList_AddTriangleFilled(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32) void; -pub extern fn ImDrawList_AddCircle(self: [*c]ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: c_int, thickness: f32) void; -pub extern fn ImDrawList_AddCircleFilled(self: [*c]ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: c_int) void; -pub extern fn ImDrawList_AddNgon(self: [*c]ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: c_int, thickness: f32) void; -pub extern fn ImDrawList_AddNgonFilled(self: [*c]ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: c_int) void; -pub extern fn ImDrawList_AddText_Vec2(self: [*c]ImDrawList, pos: ImVec2, col: ImU32, text_begin: [*c]const u8, text_end: [*c]const u8) void; -pub extern fn ImDrawList_AddText_FontPtr(self: [*c]ImDrawList, font: [*c]const ImFont, font_size: f32, pos: ImVec2, col: ImU32, text_begin: [*c]const u8, text_end: [*c]const u8, wrap_width: f32, cpu_fine_clip_rect: [*c]const ImVec4) void; -pub extern fn ImDrawList_AddPolyline(self: [*c]ImDrawList, points: [*c]const ImVec2, num_points: c_int, col: ImU32, flags: ImDrawFlags, thickness: f32) void; -pub extern fn ImDrawList_AddConvexPolyFilled(self: [*c]ImDrawList, points: [*c]const ImVec2, num_points: c_int, col: ImU32) void; -pub extern fn ImDrawList_AddBezierCubic(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32, thickness: f32, num_segments: c_int) void; -pub extern fn ImDrawList_AddBezierQuadratic(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32, thickness: f32, num_segments: c_int) void; -pub extern fn ImDrawList_AddImage(self: [*c]ImDrawList, user_texture_id: ImTextureID, p_min: ImVec2, p_max: ImVec2, uv_min: ImVec2, uv_max: ImVec2, col: ImU32) void; -pub extern fn ImDrawList_AddImageQuad(self: [*c]ImDrawList, user_texture_id: ImTextureID, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, uv1: ImVec2, uv2: ImVec2, uv3: ImVec2, uv4: ImVec2, col: ImU32) void; -pub extern fn ImDrawList_AddImageRounded(self: [*c]ImDrawList, user_texture_id: ImTextureID, p_min: ImVec2, p_max: ImVec2, uv_min: ImVec2, uv_max: ImVec2, col: ImU32, rounding: f32, flags: ImDrawFlags) void; -pub extern fn ImDrawList_PathClear(self: [*c]ImDrawList) void; -pub extern fn ImDrawList_PathLineTo(self: [*c]ImDrawList, pos: ImVec2) void; -pub extern fn ImDrawList_PathLineToMergeDuplicate(self: [*c]ImDrawList, pos: ImVec2) void; -pub extern fn ImDrawList_PathFillConvex(self: [*c]ImDrawList, col: ImU32) void; -pub extern fn ImDrawList_PathStroke(self: [*c]ImDrawList, col: ImU32, flags: ImDrawFlags, thickness: f32) void; -pub extern fn ImDrawList_PathArcTo(self: [*c]ImDrawList, center: ImVec2, radius: f32, a_min: f32, a_max: f32, num_segments: c_int) void; -pub extern fn ImDrawList_PathArcToFast(self: [*c]ImDrawList, center: ImVec2, radius: f32, a_min_of_12: c_int, a_max_of_12: c_int) void; -pub extern fn ImDrawList_PathBezierCubicCurveTo(self: [*c]ImDrawList, p2: ImVec2, p3: ImVec2, p4: ImVec2, num_segments: c_int) void; -pub extern fn ImDrawList_PathBezierQuadraticCurveTo(self: [*c]ImDrawList, p2: ImVec2, p3: ImVec2, num_segments: c_int) void; -pub extern fn ImDrawList_PathRect(self: [*c]ImDrawList, rect_min: ImVec2, rect_max: ImVec2, rounding: f32, flags: ImDrawFlags) void; -pub extern fn ImDrawList_AddCallback(self: [*c]ImDrawList, callback: ImDrawCallback, callback_data: ?*anyopaque) void; -pub extern fn ImDrawList_AddDrawCmd(self: [*c]ImDrawList) void; -pub extern fn ImDrawList_CloneOutput(self: [*c]ImDrawList) [*c]ImDrawList; -pub extern fn ImDrawList_ChannelsSplit(self: [*c]ImDrawList, count: c_int) void; -pub extern fn ImDrawList_ChannelsMerge(self: [*c]ImDrawList) void; -pub extern fn ImDrawList_ChannelsSetCurrent(self: [*c]ImDrawList, n: c_int) void; -pub extern fn ImDrawList_PrimReserve(self: [*c]ImDrawList, idx_count: c_int, vtx_count: c_int) void; -pub extern fn ImDrawList_PrimUnreserve(self: [*c]ImDrawList, idx_count: c_int, vtx_count: c_int) void; -pub extern fn ImDrawList_PrimRect(self: [*c]ImDrawList, a: ImVec2, b: ImVec2, col: ImU32) void; -pub extern fn ImDrawList_PrimRectUV(self: [*c]ImDrawList, a: ImVec2, b: ImVec2, uv_a: ImVec2, uv_b: ImVec2, col: ImU32) void; -pub extern fn ImDrawList_PrimQuadUV(self: [*c]ImDrawList, a: ImVec2, b: ImVec2, c: ImVec2, d: ImVec2, uv_a: ImVec2, uv_b: ImVec2, uv_c: ImVec2, uv_d: ImVec2, col: ImU32) void; -pub extern fn ImDrawList_PrimWriteVtx(self: [*c]ImDrawList, pos: ImVec2, uv: ImVec2, col: ImU32) void; -pub extern fn ImDrawList_PrimWriteIdx(self: [*c]ImDrawList, idx: ImDrawIdx) void; -pub extern fn ImDrawList_PrimVtx(self: [*c]ImDrawList, pos: ImVec2, uv: ImVec2, col: ImU32) void; -pub extern fn ImDrawList__ResetForNewFrame(self: [*c]ImDrawList) void; -pub extern fn ImDrawList__ClearFreeMemory(self: [*c]ImDrawList) void; -pub extern fn ImDrawList__PopUnusedDrawCmd(self: [*c]ImDrawList) void; -pub extern fn ImDrawList__TryMergeDrawCmds(self: [*c]ImDrawList) void; -pub extern fn ImDrawList__OnChangedClipRect(self: [*c]ImDrawList) void; -pub extern fn ImDrawList__OnChangedTextureID(self: [*c]ImDrawList) void; -pub extern fn ImDrawList__OnChangedVtxOffset(self: [*c]ImDrawList) void; -pub extern fn ImDrawList__CalcCircleAutoSegmentCount(self: [*c]ImDrawList, radius: f32) c_int; -pub extern fn ImDrawList__PathArcToFastEx(self: [*c]ImDrawList, center: ImVec2, radius: f32, a_min_sample: c_int, a_max_sample: c_int, a_step: c_int) void; -pub extern fn ImDrawList__PathArcToN(self: [*c]ImDrawList, center: ImVec2, radius: f32, a_min: f32, a_max: f32, num_segments: c_int) void; -pub extern fn ImDrawData_ImDrawData() [*c]ImDrawData; -pub extern fn ImDrawData_destroy(self: [*c]ImDrawData) void; -pub extern fn ImDrawData_Clear(self: [*c]ImDrawData) void; -pub extern fn ImDrawData_DeIndexAllBuffers(self: [*c]ImDrawData) void; -pub extern fn ImDrawData_ScaleClipRects(self: [*c]ImDrawData, fb_scale: ImVec2) void; -pub extern fn ImFontConfig_ImFontConfig() [*c]ImFontConfig; -pub extern fn ImFontConfig_destroy(self: [*c]ImFontConfig) void; -pub extern fn ImFontGlyphRangesBuilder_ImFontGlyphRangesBuilder() [*c]ImFontGlyphRangesBuilder; -pub extern fn ImFontGlyphRangesBuilder_destroy(self: [*c]ImFontGlyphRangesBuilder) void; -pub extern fn ImFontGlyphRangesBuilder_Clear(self: [*c]ImFontGlyphRangesBuilder) void; -pub extern fn ImFontGlyphRangesBuilder_GetBit(self: [*c]ImFontGlyphRangesBuilder, n: usize) bool; -pub extern fn ImFontGlyphRangesBuilder_SetBit(self: [*c]ImFontGlyphRangesBuilder, n: usize) void; -pub extern fn ImFontGlyphRangesBuilder_AddChar(self: [*c]ImFontGlyphRangesBuilder, c: ImWchar) void; -pub extern fn ImFontGlyphRangesBuilder_AddText(self: [*c]ImFontGlyphRangesBuilder, text: [*c]const u8, text_end: [*c]const u8) void; -pub extern fn ImFontGlyphRangesBuilder_AddRanges(self: [*c]ImFontGlyphRangesBuilder, ranges: [*c]const ImWchar) void; -pub extern fn ImFontGlyphRangesBuilder_BuildRanges(self: [*c]ImFontGlyphRangesBuilder, out_ranges: [*c]ImVector_ImWchar) void; -pub extern fn ImFontAtlasCustomRect_ImFontAtlasCustomRect() [*c]ImFontAtlasCustomRect; -pub extern fn ImFontAtlasCustomRect_destroy(self: [*c]ImFontAtlasCustomRect) void; -pub extern fn ImFontAtlasCustomRect_IsPacked(self: [*c]ImFontAtlasCustomRect) bool; -pub extern fn ImFontAtlas_ImFontAtlas() [*c]ImFontAtlas; -pub extern fn ImFontAtlas_destroy(self: [*c]ImFontAtlas) void; -pub extern fn ImFontAtlas_AddFont(self: [*c]ImFontAtlas, font_cfg: [*c]const ImFontConfig) [*c]ImFont; -pub extern fn ImFontAtlas_AddFontDefault(self: [*c]ImFontAtlas, font_cfg: [*c]const ImFontConfig) [*c]ImFont; -pub extern fn ImFontAtlas_AddFontFromFileTTF(self: [*c]ImFontAtlas, filename: [*c]const u8, size_pixels: f32, font_cfg: [*c]const ImFontConfig, glyph_ranges: [*c]const ImWchar) [*c]ImFont; -pub extern fn ImFontAtlas_AddFontFromMemoryTTF(self: [*c]ImFontAtlas, font_data: ?*anyopaque, font_size: c_int, size_pixels: f32, font_cfg: [*c]const ImFontConfig, glyph_ranges: [*c]const ImWchar) [*c]ImFont; -pub extern fn ImFontAtlas_AddFontFromMemoryCompressedTTF(self: [*c]ImFontAtlas, compressed_font_data: ?*const anyopaque, compressed_font_size: c_int, size_pixels: f32, font_cfg: [*c]const ImFontConfig, glyph_ranges: [*c]const ImWchar) [*c]ImFont; -pub extern fn ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(self: [*c]ImFontAtlas, compressed_font_data_base85: [*c]const u8, size_pixels: f32, font_cfg: [*c]const ImFontConfig, glyph_ranges: [*c]const ImWchar) [*c]ImFont; -pub extern fn ImFontAtlas_ClearInputData(self: [*c]ImFontAtlas) void; -pub extern fn ImFontAtlas_ClearTexData(self: [*c]ImFontAtlas) void; -pub extern fn ImFontAtlas_ClearFonts(self: [*c]ImFontAtlas) void; -pub extern fn ImFontAtlas_Clear(self: [*c]ImFontAtlas) void; -pub extern fn ImFontAtlas_Build(self: [*c]ImFontAtlas) bool; -pub extern fn ImFontAtlas_GetTexDataAsAlpha8(self: [*c]ImFontAtlas, out_pixels: [*c][*c]u8, out_width: [*c]c_int, out_height: [*c]c_int, out_bytes_per_pixel: [*c]c_int) void; -pub extern fn ImFontAtlas_GetTexDataAsRGBA32(self: [*c]ImFontAtlas, out_pixels: [*c][*c]u8, out_width: [*c]c_int, out_height: [*c]c_int, out_bytes_per_pixel: [*c]c_int) void; -pub extern fn ImFontAtlas_IsBuilt(self: [*c]ImFontAtlas) bool; -pub extern fn ImFontAtlas_SetTexID(self: [*c]ImFontAtlas, id: ImTextureID) void; -pub extern fn ImFontAtlas_GetGlyphRangesDefault(self: [*c]ImFontAtlas) [*c]const ImWchar; -pub extern fn ImFontAtlas_GetGlyphRangesKorean(self: [*c]ImFontAtlas) [*c]const ImWchar; -pub extern fn ImFontAtlas_GetGlyphRangesJapanese(self: [*c]ImFontAtlas) [*c]const ImWchar; -pub extern fn ImFontAtlas_GetGlyphRangesChineseFull(self: [*c]ImFontAtlas) [*c]const ImWchar; -pub extern fn ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(self: [*c]ImFontAtlas) [*c]const ImWchar; -pub extern fn ImFontAtlas_GetGlyphRangesCyrillic(self: [*c]ImFontAtlas) [*c]const ImWchar; -pub extern fn ImFontAtlas_GetGlyphRangesThai(self: [*c]ImFontAtlas) [*c]const ImWchar; -pub extern fn ImFontAtlas_GetGlyphRangesVietnamese(self: [*c]ImFontAtlas) [*c]const ImWchar; -pub extern fn ImFontAtlas_AddCustomRectRegular(self: [*c]ImFontAtlas, width: c_int, height: c_int) c_int; -pub extern fn ImFontAtlas_AddCustomRectFontGlyph(self: [*c]ImFontAtlas, font: [*c]ImFont, id: ImWchar, width: c_int, height: c_int, advance_x: f32, offset: ImVec2) c_int; -pub extern fn ImFontAtlas_GetCustomRectByIndex(self: [*c]ImFontAtlas, index: c_int) [*c]ImFontAtlasCustomRect; -pub extern fn ImFontAtlas_CalcCustomRectUV(self: [*c]ImFontAtlas, rect: [*c]const ImFontAtlasCustomRect, out_uv_min: [*c]ImVec2, out_uv_max: [*c]ImVec2) void; -pub extern fn ImFontAtlas_GetMouseCursorTexData(self: [*c]ImFontAtlas, cursor: ImGuiMouseCursor, out_offset: [*c]ImVec2, out_size: [*c]ImVec2, out_uv_border: [*c]ImVec2, out_uv_fill: [*c]ImVec2) bool; -pub extern fn ImFont_ImFont() [*c]ImFont; -pub extern fn ImFont_destroy(self: [*c]ImFont) void; -pub extern fn ImFont_FindGlyph(self: [*c]ImFont, c: ImWchar) ?*const ImFontGlyph; -pub extern fn ImFont_FindGlyphNoFallback(self: [*c]ImFont, c: ImWchar) ?*const ImFontGlyph; -pub extern fn ImFont_GetCharAdvance(self: [*c]ImFont, c: ImWchar) f32; -pub extern fn ImFont_IsLoaded(self: [*c]ImFont) bool; -pub extern fn ImFont_GetDebugName(self: [*c]ImFont) [*c]const u8; -pub extern fn ImFont_CalcTextSizeA(pOut: [*c]ImVec2, self: [*c]ImFont, size: f32, max_width: f32, wrap_width: f32, text_begin: [*c]const u8, text_end: [*c]const u8, remaining: [*c][*c]const u8) void; -pub extern fn ImFont_CalcWordWrapPositionA(self: [*c]ImFont, scale: f32, text: [*c]const u8, text_end: [*c]const u8, wrap_width: f32) [*c]const u8; -pub extern fn ImFont_RenderChar(self: [*c]ImFont, draw_list: [*c]ImDrawList, size: f32, pos: ImVec2, col: ImU32, c: ImWchar) void; -pub extern fn ImFont_RenderText(self: [*c]ImFont, draw_list: [*c]ImDrawList, size: f32, pos: ImVec2, col: ImU32, clip_rect: ImVec4, text_begin: [*c]const u8, text_end: [*c]const u8, wrap_width: f32, cpu_fine_clip: bool) void; -pub extern fn ImFont_BuildLookupTable(self: [*c]ImFont) void; -pub extern fn ImFont_ClearOutputData(self: [*c]ImFont) void; -pub extern fn ImFont_GrowIndex(self: [*c]ImFont, new_size: c_int) void; -pub extern fn ImFont_AddGlyph(self: [*c]ImFont, src_cfg: [*c]const ImFontConfig, c: ImWchar, x0: f32, y0: f32, x1: f32, y1: f32, @"u0": f32, v0: f32, @"u1": f32, v1: f32, advance_x: f32) void; -pub extern fn ImFont_AddRemapChar(self: [*c]ImFont, dst: ImWchar, src: ImWchar, overwrite_dst: bool) void; -pub extern fn ImFont_SetGlyphVisible(self: [*c]ImFont, c: ImWchar, visible: bool) void; -pub extern fn ImFont_IsGlyphRangeUnused(self: [*c]ImFont, c_begin: c_uint, c_last: c_uint) bool; -pub extern fn ImGuiViewport_ImGuiViewport() [*c]ImGuiViewport; -pub extern fn ImGuiViewport_destroy(self: [*c]ImGuiViewport) void; -pub extern fn ImGuiViewport_GetCenter(pOut: [*c]ImVec2, self: [*c]ImGuiViewport) void; -pub extern fn ImGuiViewport_GetWorkCenter(pOut: [*c]ImVec2, self: [*c]ImGuiViewport) void; -pub extern fn ImGuiPlatformIO_ImGuiPlatformIO() [*c]ImGuiPlatformIO; -pub extern fn ImGuiPlatformIO_destroy(self: [*c]ImGuiPlatformIO) void; -pub extern fn ImGuiPlatformMonitor_ImGuiPlatformMonitor() [*c]ImGuiPlatformMonitor; -pub extern fn ImGuiPlatformMonitor_destroy(self: [*c]ImGuiPlatformMonitor) void; -pub extern fn ImGuiPlatformImeData_ImGuiPlatformImeData() [*c]ImGuiPlatformImeData; -pub extern fn ImGuiPlatformImeData_destroy(self: [*c]ImGuiPlatformImeData) void; -pub extern fn igGetKeyIndex(key: ImGuiKey) c_int; -pub extern fn igImHashData(data: ?*const anyopaque, data_size: usize, seed: ImU32) ImGuiID; -pub extern fn igImHashStr(data: [*c]const u8, data_size: usize, seed: ImU32) ImGuiID; -pub extern fn igImQsort(base: ?*anyopaque, count: usize, size_of_element: usize, compare_func: ?*const fn (?*const anyopaque, ?*const anyopaque) callconv(.C) c_int) void; -pub extern fn igImAlphaBlendColors(col_a: ImU32, col_b: ImU32) ImU32; -pub extern fn igImIsPowerOfTwo_Int(v: c_int) bool; -pub extern fn igImIsPowerOfTwo_U64(v: ImU64) bool; -pub extern fn igImUpperPowerOfTwo(v: c_int) c_int; -pub extern fn igImStricmp(str1: [*c]const u8, str2: [*c]const u8) c_int; -pub extern fn igImStrnicmp(str1: [*c]const u8, str2: [*c]const u8, count: usize) c_int; -pub extern fn igImStrncpy(dst: [*c]u8, src: [*c]const u8, count: usize) void; -pub extern fn igImStrdup(str: [*c]const u8) [*c]u8; -pub extern fn igImStrdupcpy(dst: [*c]u8, p_dst_size: [*c]usize, str: [*c]const u8) [*c]u8; -pub extern fn igImStrchrRange(str_begin: [*c]const u8, str_end: [*c]const u8, c: u8) [*c]const u8; -pub extern fn igImStrlenW(str: [*c]const ImWchar) c_int; -pub extern fn igImStreolRange(str: [*c]const u8, str_end: [*c]const u8) [*c]const u8; -pub extern fn igImStrbolW(buf_mid_line: [*c]const ImWchar, buf_begin: [*c]const ImWchar) [*c]const ImWchar; -pub extern fn igImStristr(haystack: [*c]const u8, haystack_end: [*c]const u8, needle: [*c]const u8, needle_end: [*c]const u8) [*c]const u8; -pub extern fn igImStrTrimBlanks(str: [*c]u8) void; -pub extern fn igImStrSkipBlank(str: [*c]const u8) [*c]const u8; -pub extern fn igImCharIsBlankA(c: u8) bool; -pub extern fn igImCharIsBlankW(c: c_uint) bool; -pub extern fn igImFormatString(buf: [*c]u8, buf_size: usize, fmt: [*c]const u8, ...) c_int; -pub extern fn igImFormatStringV(buf: [*c]u8, buf_size: usize, fmt: [*c]const u8, args: va_list) c_int; -pub extern fn igImFormatStringToTempBuffer(out_buf: [*c][*c]const u8, out_buf_end: [*c][*c]const u8, fmt: [*c]const u8, ...) void; -pub extern fn igImFormatStringToTempBufferV(out_buf: [*c][*c]const u8, out_buf_end: [*c][*c]const u8, fmt: [*c]const u8, args: va_list) void; -pub extern fn igImParseFormatFindStart(format: [*c]const u8) [*c]const u8; -pub extern fn igImParseFormatFindEnd(format: [*c]const u8) [*c]const u8; -pub extern fn igImParseFormatTrimDecorations(format: [*c]const u8, buf: [*c]u8, buf_size: usize) [*c]const u8; -pub extern fn igImParseFormatSanitizeForPrinting(fmt_in: [*c]const u8, fmt_out: [*c]u8, fmt_out_size: usize) void; -pub extern fn igImParseFormatSanitizeForScanning(fmt_in: [*c]const u8, fmt_out: [*c]u8, fmt_out_size: usize) [*c]const u8; -pub extern fn igImParseFormatPrecision(format: [*c]const u8, default_value: c_int) c_int; -pub extern fn igImTextCharToUtf8(out_buf: [*c]u8, c: c_uint) [*c]const u8; -pub extern fn igImTextStrToUtf8(out_buf: [*c]u8, out_buf_size: c_int, in_text: [*c]const ImWchar, in_text_end: [*c]const ImWchar) c_int; -pub extern fn igImTextCharFromUtf8(out_char: [*c]c_uint, in_text: [*c]const u8, in_text_end: [*c]const u8) c_int; -pub extern fn igImTextStrFromUtf8(out_buf: [*c]ImWchar, out_buf_size: c_int, in_text: [*c]const u8, in_text_end: [*c]const u8, in_remaining: [*c][*c]const u8) c_int; -pub extern fn igImTextCountCharsFromUtf8(in_text: [*c]const u8, in_text_end: [*c]const u8) c_int; -pub extern fn igImTextCountUtf8BytesFromChar(in_text: [*c]const u8, in_text_end: [*c]const u8) c_int; -pub extern fn igImTextCountUtf8BytesFromStr(in_text: [*c]const ImWchar, in_text_end: [*c]const ImWchar) c_int; -pub extern fn igImFileLoadToMemory(filename: [*c]const u8, mode: [*c]const u8, out_file_size: [*c]usize, padding_bytes: c_int) ?*anyopaque; -pub extern fn igImPow_Float(x: f32, y: f32) f32; -pub extern fn igImPow_double(x: f64, y: f64) f64; -pub extern fn igImLog_Float(x: f32) f32; -pub extern fn igImLog_double(x: f64) f64; -pub extern fn igImAbs_Int(x: c_int) c_int; -pub extern fn igImAbs_Float(x: f32) f32; -pub extern fn igImAbs_double(x: f64) f64; -pub extern fn igImSign_Float(x: f32) f32; -pub extern fn igImSign_double(x: f64) f64; -pub extern fn igImRsqrt_Float(x: f32) f32; -pub extern fn igImRsqrt_double(x: f64) f64; -pub extern fn igImMin(pOut: [*c]ImVec2, lhs: ImVec2, rhs: ImVec2) void; -pub extern fn igImMax(pOut: [*c]ImVec2, lhs: ImVec2, rhs: ImVec2) void; -pub extern fn igImClamp(pOut: [*c]ImVec2, v: ImVec2, mn: ImVec2, mx: ImVec2) void; -pub extern fn igImLerp_Vec2Float(pOut: [*c]ImVec2, a: ImVec2, b: ImVec2, t: f32) void; -pub extern fn igImLerp_Vec2Vec2(pOut: [*c]ImVec2, a: ImVec2, b: ImVec2, t: ImVec2) void; -pub extern fn igImLerp_Vec4(pOut: [*c]ImVec4, a: ImVec4, b: ImVec4, t: f32) void; -pub extern fn igImSaturate(f: f32) f32; -pub extern fn igImLengthSqr_Vec2(lhs: ImVec2) f32; -pub extern fn igImLengthSqr_Vec4(lhs: ImVec4) f32; -pub extern fn igImInvLength(lhs: ImVec2, fail_value: f32) f32; -pub extern fn igImFloor_Float(f: f32) f32; -pub extern fn igImFloorSigned_Float(f: f32) f32; -pub extern fn igImFloor_Vec2(pOut: [*c]ImVec2, v: ImVec2) void; -pub extern fn igImFloorSigned_Vec2(pOut: [*c]ImVec2, v: ImVec2) void; -pub extern fn igImModPositive(a: c_int, b: c_int) c_int; -pub extern fn igImDot(a: ImVec2, b: ImVec2) f32; -pub extern fn igImRotate(pOut: [*c]ImVec2, v: ImVec2, cos_a: f32, sin_a: f32) void; -pub extern fn igImLinearSweep(current: f32, target: f32, speed: f32) f32; -pub extern fn igImMul(pOut: [*c]ImVec2, lhs: ImVec2, rhs: ImVec2) void; -pub extern fn igImIsFloatAboveGuaranteedIntegerPrecision(f: f32) bool; -pub extern fn igImBezierCubicCalc(pOut: [*c]ImVec2, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, t: f32) void; -pub extern fn igImBezierCubicClosestPoint(pOut: [*c]ImVec2, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, p: ImVec2, num_segments: c_int) void; -pub extern fn igImBezierCubicClosestPointCasteljau(pOut: [*c]ImVec2, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, p: ImVec2, tess_tol: f32) void; -pub extern fn igImBezierQuadraticCalc(pOut: [*c]ImVec2, p1: ImVec2, p2: ImVec2, p3: ImVec2, t: f32) void; -pub extern fn igImLineClosestPoint(pOut: [*c]ImVec2, a: ImVec2, b: ImVec2, p: ImVec2) void; -pub extern fn igImTriangleContainsPoint(a: ImVec2, b: ImVec2, c: ImVec2, p: ImVec2) bool; -pub extern fn igImTriangleClosestPoint(pOut: [*c]ImVec2, a: ImVec2, b: ImVec2, c: ImVec2, p: ImVec2) void; -pub extern fn igImTriangleBarycentricCoords(a: ImVec2, b: ImVec2, c: ImVec2, p: ImVec2, out_u: [*c]f32, out_v: [*c]f32, out_w: [*c]f32) void; -pub extern fn igImTriangleArea(a: ImVec2, b: ImVec2, c: ImVec2) f32; -pub extern fn igImGetDirQuadrantFromDelta(dx: f32, dy: f32) ImGuiDir; -pub extern fn ImVec1_ImVec1_Nil() [*c]ImVec1; -pub extern fn ImVec1_destroy(self: [*c]ImVec1) void; -pub extern fn ImVec1_ImVec1_Float(_x: f32) [*c]ImVec1; -pub extern fn ImVec2ih_ImVec2ih_Nil() [*c]ImVec2ih; -pub extern fn ImVec2ih_destroy(self: [*c]ImVec2ih) void; -pub extern fn ImVec2ih_ImVec2ih_short(_x: c_short, _y: c_short) [*c]ImVec2ih; -pub extern fn ImVec2ih_ImVec2ih_Vec2(rhs: ImVec2) [*c]ImVec2ih; -pub extern fn ImRect_ImRect_Nil() [*c]ImRect; -pub extern fn ImRect_destroy(self: [*c]ImRect) void; -pub extern fn ImRect_ImRect_Vec2(min: ImVec2, max: ImVec2) [*c]ImRect; -pub extern fn ImRect_ImRect_Vec4(v: ImVec4) [*c]ImRect; -pub extern fn ImRect_ImRect_Float(x1: f32, y1: f32, x2: f32, y2: f32) [*c]ImRect; -pub extern fn ImRect_GetCenter(pOut: [*c]ImVec2, self: [*c]ImRect) void; -pub extern fn ImRect_GetSize(pOut: [*c]ImVec2, self: [*c]ImRect) void; -pub extern fn ImRect_GetWidth(self: [*c]ImRect) f32; -pub extern fn ImRect_GetHeight(self: [*c]ImRect) f32; -pub extern fn ImRect_GetArea(self: [*c]ImRect) f32; -pub extern fn ImRect_GetTL(pOut: [*c]ImVec2, self: [*c]ImRect) void; -pub extern fn ImRect_GetTR(pOut: [*c]ImVec2, self: [*c]ImRect) void; -pub extern fn ImRect_GetBL(pOut: [*c]ImVec2, self: [*c]ImRect) void; -pub extern fn ImRect_GetBR(pOut: [*c]ImVec2, self: [*c]ImRect) void; -pub extern fn ImRect_Contains_Vec2(self: [*c]ImRect, p: ImVec2) bool; -pub extern fn ImRect_Contains_Rect(self: [*c]ImRect, r: ImRect) bool; -pub extern fn ImRect_Overlaps(self: [*c]ImRect, r: ImRect) bool; -pub extern fn ImRect_Add_Vec2(self: [*c]ImRect, p: ImVec2) void; -pub extern fn ImRect_Add_Rect(self: [*c]ImRect, r: ImRect) void; -pub extern fn ImRect_Expand_Float(self: [*c]ImRect, amount: f32) void; -pub extern fn ImRect_Expand_Vec2(self: [*c]ImRect, amount: ImVec2) void; -pub extern fn ImRect_Translate(self: [*c]ImRect, d: ImVec2) void; -pub extern fn ImRect_TranslateX(self: [*c]ImRect, dx: f32) void; -pub extern fn ImRect_TranslateY(self: [*c]ImRect, dy: f32) void; -pub extern fn ImRect_ClipWith(self: [*c]ImRect, r: ImRect) void; -pub extern fn ImRect_ClipWithFull(self: [*c]ImRect, r: ImRect) void; -pub extern fn ImRect_Floor(self: [*c]ImRect) void; -pub extern fn ImRect_IsInverted(self: [*c]ImRect) bool; -pub extern fn ImRect_ToVec4(pOut: [*c]ImVec4, self: [*c]ImRect) void; -pub extern fn igImBitArrayTestBit(arr: [*c]const ImU32, n: c_int) bool; -pub extern fn igImBitArrayClearBit(arr: [*c]ImU32, n: c_int) void; -pub extern fn igImBitArraySetBit(arr: [*c]ImU32, n: c_int) void; -pub extern fn igImBitArraySetBitRange(arr: [*c]ImU32, n: c_int, n2: c_int) void; -pub extern fn ImBitVector_Create(self: [*c]ImBitVector, sz: c_int) void; -pub extern fn ImBitVector_Clear(self: [*c]ImBitVector) void; -pub extern fn ImBitVector_TestBit(self: [*c]ImBitVector, n: c_int) bool; -pub extern fn ImBitVector_SetBit(self: [*c]ImBitVector, n: c_int) void; -pub extern fn ImBitVector_ClearBit(self: [*c]ImBitVector, n: c_int) void; -pub extern fn ImDrawListSharedData_ImDrawListSharedData() [*c]ImDrawListSharedData; -pub extern fn ImDrawListSharedData_destroy(self: [*c]ImDrawListSharedData) void; -pub extern fn ImDrawListSharedData_SetCircleTessellationMaxError(self: [*c]ImDrawListSharedData, max_error: f32) void; -pub extern fn ImDrawDataBuilder_Clear(self: [*c]ImDrawDataBuilder) void; -pub extern fn ImDrawDataBuilder_ClearFreeMemory(self: [*c]ImDrawDataBuilder) void; -pub extern fn ImDrawDataBuilder_GetDrawListCount(self: [*c]ImDrawDataBuilder) c_int; -pub extern fn ImDrawDataBuilder_FlattenIntoSingleLayer(self: [*c]ImDrawDataBuilder) void; -pub extern fn ImGuiStyleMod_ImGuiStyleMod_Int(idx: ImGuiStyleVar, v: c_int) [*c]ImGuiStyleMod; -pub extern fn ImGuiStyleMod_destroy(self: [*c]ImGuiStyleMod) void; -pub extern fn ImGuiStyleMod_ImGuiStyleMod_Float(idx: ImGuiStyleVar, v: f32) [*c]ImGuiStyleMod; -pub extern fn ImGuiStyleMod_ImGuiStyleMod_Vec2(idx: ImGuiStyleVar, v: ImVec2) [*c]ImGuiStyleMod; -pub extern fn ImGuiComboPreviewData_ImGuiComboPreviewData() [*c]ImGuiComboPreviewData; -pub extern fn ImGuiComboPreviewData_destroy(self: [*c]ImGuiComboPreviewData) void; -pub extern fn ImGuiMenuColumns_ImGuiMenuColumns() [*c]ImGuiMenuColumns; -pub extern fn ImGuiMenuColumns_destroy(self: [*c]ImGuiMenuColumns) void; -pub extern fn ImGuiMenuColumns_Update(self: [*c]ImGuiMenuColumns, spacing: f32, window_reappearing: bool) void; -pub extern fn ImGuiMenuColumns_DeclColumns(self: [*c]ImGuiMenuColumns, w_icon: f32, w_label: f32, w_shortcut: f32, w_mark: f32) f32; -pub extern fn ImGuiMenuColumns_CalcNextTotalWidth(self: [*c]ImGuiMenuColumns, update_offsets: bool) void; -pub extern fn ImGuiInputTextState_ImGuiInputTextState() [*c]ImGuiInputTextState; -pub extern fn ImGuiInputTextState_destroy(self: [*c]ImGuiInputTextState) void; -pub extern fn ImGuiInputTextState_ClearText(self: [*c]ImGuiInputTextState) void; -pub extern fn ImGuiInputTextState_ClearFreeMemory(self: [*c]ImGuiInputTextState) void; -pub extern fn ImGuiInputTextState_GetUndoAvailCount(self: [*c]ImGuiInputTextState) c_int; -pub extern fn ImGuiInputTextState_GetRedoAvailCount(self: [*c]ImGuiInputTextState) c_int; -pub extern fn ImGuiInputTextState_OnKeyPressed(self: [*c]ImGuiInputTextState, key: c_int) void; -pub extern fn ImGuiInputTextState_CursorAnimReset(self: [*c]ImGuiInputTextState) void; -pub extern fn ImGuiInputTextState_CursorClamp(self: [*c]ImGuiInputTextState) void; -pub extern fn ImGuiInputTextState_HasSelection(self: [*c]ImGuiInputTextState) bool; -pub extern fn ImGuiInputTextState_ClearSelection(self: [*c]ImGuiInputTextState) void; -pub extern fn ImGuiInputTextState_GetCursorPos(self: [*c]ImGuiInputTextState) c_int; -pub extern fn ImGuiInputTextState_GetSelectionStart(self: [*c]ImGuiInputTextState) c_int; -pub extern fn ImGuiInputTextState_GetSelectionEnd(self: [*c]ImGuiInputTextState) c_int; -pub extern fn ImGuiInputTextState_SelectAll(self: [*c]ImGuiInputTextState) void; -pub extern fn ImGuiPopupData_ImGuiPopupData() [*c]ImGuiPopupData; -pub extern fn ImGuiPopupData_destroy(self: [*c]ImGuiPopupData) void; -pub extern fn ImGuiNextWindowData_ImGuiNextWindowData() [*c]ImGuiNextWindowData; -pub extern fn ImGuiNextWindowData_destroy(self: [*c]ImGuiNextWindowData) void; -pub extern fn ImGuiNextWindowData_ClearFlags(self: [*c]ImGuiNextWindowData) void; -pub extern fn ImGuiNextItemData_ImGuiNextItemData() [*c]ImGuiNextItemData; -pub extern fn ImGuiNextItemData_destroy(self: [*c]ImGuiNextItemData) void; -pub extern fn ImGuiNextItemData_ClearFlags(self: [*c]ImGuiNextItemData) void; -pub extern fn ImGuiLastItemData_ImGuiLastItemData() [*c]ImGuiLastItemData; -pub extern fn ImGuiLastItemData_destroy(self: [*c]ImGuiLastItemData) void; -pub extern fn ImGuiStackSizes_ImGuiStackSizes() [*c]ImGuiStackSizes; -pub extern fn ImGuiStackSizes_destroy(self: [*c]ImGuiStackSizes) void; -pub extern fn ImGuiStackSizes_SetToCurrentState(self: [*c]ImGuiStackSizes) void; -pub extern fn ImGuiStackSizes_CompareWithCurrentState(self: [*c]ImGuiStackSizes) void; -pub extern fn ImGuiPtrOrIndex_ImGuiPtrOrIndex_Ptr(ptr: ?*anyopaque) [*c]ImGuiPtrOrIndex; -pub extern fn ImGuiPtrOrIndex_destroy(self: [*c]ImGuiPtrOrIndex) void; -pub extern fn ImGuiPtrOrIndex_ImGuiPtrOrIndex_Int(index: c_int) [*c]ImGuiPtrOrIndex; -pub extern fn ImGuiInputEvent_ImGuiInputEvent() [*c]ImGuiInputEvent; -pub extern fn ImGuiInputEvent_destroy(self: [*c]ImGuiInputEvent) void; -pub extern fn ImGuiListClipperRange_FromIndices(min: c_int, max: c_int) ImGuiListClipperRange; -pub extern fn ImGuiListClipperRange_FromPositions(y1: f32, y2: f32, off_min: c_int, off_max: c_int) ImGuiListClipperRange; -pub extern fn ImGuiListClipperData_ImGuiListClipperData() [*c]ImGuiListClipperData; -pub extern fn ImGuiListClipperData_destroy(self: [*c]ImGuiListClipperData) void; -pub extern fn ImGuiListClipperData_Reset(self: [*c]ImGuiListClipperData, clipper: [*c]ImGuiListClipper) void; -pub extern fn ImGuiNavItemData_ImGuiNavItemData() [*c]ImGuiNavItemData; -pub extern fn ImGuiNavItemData_destroy(self: [*c]ImGuiNavItemData) void; -pub extern fn ImGuiNavItemData_Clear(self: [*c]ImGuiNavItemData) void; -pub extern fn ImGuiOldColumnData_ImGuiOldColumnData() [*c]ImGuiOldColumnData; -pub extern fn ImGuiOldColumnData_destroy(self: [*c]ImGuiOldColumnData) void; -pub extern fn ImGuiOldColumns_ImGuiOldColumns() [*c]ImGuiOldColumns; -pub extern fn ImGuiOldColumns_destroy(self: [*c]ImGuiOldColumns) void; -pub extern fn ImGuiDockNode_ImGuiDockNode(id: ImGuiID) ?*ImGuiDockNode; -pub extern fn ImGuiDockNode_destroy(self: ?*ImGuiDockNode) void; -pub extern fn ImGuiDockNode_IsRootNode(self: ?*ImGuiDockNode) bool; -pub extern fn ImGuiDockNode_IsDockSpace(self: ?*ImGuiDockNode) bool; -pub extern fn ImGuiDockNode_IsFloatingNode(self: ?*ImGuiDockNode) bool; -pub extern fn ImGuiDockNode_IsCentralNode(self: ?*ImGuiDockNode) bool; -pub extern fn ImGuiDockNode_IsHiddenTabBar(self: ?*ImGuiDockNode) bool; -pub extern fn ImGuiDockNode_IsNoTabBar(self: ?*ImGuiDockNode) bool; -pub extern fn ImGuiDockNode_IsSplitNode(self: ?*ImGuiDockNode) bool; -pub extern fn ImGuiDockNode_IsLeafNode(self: ?*ImGuiDockNode) bool; -pub extern fn ImGuiDockNode_IsEmpty(self: ?*ImGuiDockNode) bool; -pub extern fn ImGuiDockNode_Rect(pOut: [*c]ImRect, self: ?*ImGuiDockNode) void; -pub extern fn ImGuiDockNode_SetLocalFlags(self: ?*ImGuiDockNode, flags: ImGuiDockNodeFlags) void; -pub extern fn ImGuiDockNode_UpdateMergedFlags(self: ?*ImGuiDockNode) void; -pub extern fn ImGuiDockContext_ImGuiDockContext() [*c]ImGuiDockContext; -pub extern fn ImGuiDockContext_destroy(self: [*c]ImGuiDockContext) void; -pub extern fn ImGuiViewportP_ImGuiViewportP() [*c]ImGuiViewportP; -pub extern fn ImGuiViewportP_destroy(self: [*c]ImGuiViewportP) void; -pub extern fn ImGuiViewportP_ClearRequestFlags(self: [*c]ImGuiViewportP) void; -pub extern fn ImGuiViewportP_CalcWorkRectPos(pOut: [*c]ImVec2, self: [*c]ImGuiViewportP, off_min: ImVec2) void; -pub extern fn ImGuiViewportP_CalcWorkRectSize(pOut: [*c]ImVec2, self: [*c]ImGuiViewportP, off_min: ImVec2, off_max: ImVec2) void; -pub extern fn ImGuiViewportP_UpdateWorkRect(self: [*c]ImGuiViewportP) void; -pub extern fn ImGuiViewportP_GetMainRect(pOut: [*c]ImRect, self: [*c]ImGuiViewportP) void; -pub extern fn ImGuiViewportP_GetWorkRect(pOut: [*c]ImRect, self: [*c]ImGuiViewportP) void; -pub extern fn ImGuiViewportP_GetBuildWorkRect(pOut: [*c]ImRect, self: [*c]ImGuiViewportP) void; -pub extern fn ImGuiWindowSettings_ImGuiWindowSettings() [*c]ImGuiWindowSettings; -pub extern fn ImGuiWindowSettings_destroy(self: [*c]ImGuiWindowSettings) void; -pub extern fn ImGuiWindowSettings_GetName(self: [*c]ImGuiWindowSettings) [*c]u8; -pub extern fn ImGuiSettingsHandler_ImGuiSettingsHandler() [*c]ImGuiSettingsHandler; -pub extern fn ImGuiSettingsHandler_destroy(self: [*c]ImGuiSettingsHandler) void; -pub extern fn ImGuiMetricsConfig_ImGuiMetricsConfig() [*c]ImGuiMetricsConfig; -pub extern fn ImGuiMetricsConfig_destroy(self: [*c]ImGuiMetricsConfig) void; -pub extern fn ImGuiStackLevelInfo_ImGuiStackLevelInfo() ?*ImGuiStackLevelInfo; -pub extern fn ImGuiStackLevelInfo_destroy(self: ?*ImGuiStackLevelInfo) void; -pub extern fn ImGuiStackTool_ImGuiStackTool() [*c]ImGuiStackTool; -pub extern fn ImGuiStackTool_destroy(self: [*c]ImGuiStackTool) void; -pub extern fn ImGuiContextHook_ImGuiContextHook() [*c]ImGuiContextHook; -pub extern fn ImGuiContextHook_destroy(self: [*c]ImGuiContextHook) void; -pub extern fn ImGuiContext_ImGuiContext(shared_font_atlas: [*c]ImFontAtlas) [*c]ImGuiContext; -pub extern fn ImGuiContext_destroy(self: [*c]ImGuiContext) void; -pub extern fn ImGuiWindow_ImGuiWindow(context: [*c]ImGuiContext, name: [*c]const u8) ?*ImGuiWindow; -pub extern fn ImGuiWindow_destroy(self: ?*ImGuiWindow) void; -pub extern fn ImGuiWindow_GetID_Str(self: ?*ImGuiWindow, str: [*c]const u8, str_end: [*c]const u8) ImGuiID; -pub extern fn ImGuiWindow_GetID_Ptr(self: ?*ImGuiWindow, ptr: ?*const anyopaque) ImGuiID; -pub extern fn ImGuiWindow_GetID_Int(self: ?*ImGuiWindow, n: c_int) ImGuiID; -pub extern fn ImGuiWindow_GetIDFromRectangle(self: ?*ImGuiWindow, r_abs: ImRect) ImGuiID; -pub extern fn ImGuiWindow_Rect(pOut: [*c]ImRect, self: ?*ImGuiWindow) void; -pub extern fn ImGuiWindow_CalcFontSize(self: ?*ImGuiWindow) f32; -pub extern fn ImGuiWindow_TitleBarHeight(self: ?*ImGuiWindow) f32; -pub extern fn ImGuiWindow_TitleBarRect(pOut: [*c]ImRect, self: ?*ImGuiWindow) void; -pub extern fn ImGuiWindow_MenuBarHeight(self: ?*ImGuiWindow) f32; -pub extern fn ImGuiWindow_MenuBarRect(pOut: [*c]ImRect, self: ?*ImGuiWindow) void; -pub extern fn ImGuiTabItem_ImGuiTabItem() [*c]ImGuiTabItem; -pub extern fn ImGuiTabItem_destroy(self: [*c]ImGuiTabItem) void; -pub extern fn ImGuiTabBar_ImGuiTabBar() [*c]ImGuiTabBar; -pub extern fn ImGuiTabBar_destroy(self: [*c]ImGuiTabBar) void; -pub extern fn ImGuiTabBar_GetTabOrder(self: [*c]ImGuiTabBar, tab: [*c]const ImGuiTabItem) c_int; -pub extern fn ImGuiTabBar_GetTabName(self: [*c]ImGuiTabBar, tab: [*c]const ImGuiTabItem) [*c]const u8; -pub extern fn ImGuiTableColumn_ImGuiTableColumn() ?*ImGuiTableColumn; -pub extern fn ImGuiTableColumn_destroy(self: ?*ImGuiTableColumn) void; -pub extern fn ImGuiTableInstanceData_ImGuiTableInstanceData() [*c]ImGuiTableInstanceData; -pub extern fn ImGuiTableInstanceData_destroy(self: [*c]ImGuiTableInstanceData) void; -pub extern fn ImGuiTable_ImGuiTable() ?*ImGuiTable; -pub extern fn ImGuiTable_destroy(self: ?*ImGuiTable) void; -pub extern fn ImGuiTableTempData_ImGuiTableTempData() [*c]ImGuiTableTempData; -pub extern fn ImGuiTableTempData_destroy(self: [*c]ImGuiTableTempData) void; -pub extern fn ImGuiTableColumnSettings_ImGuiTableColumnSettings() ?*ImGuiTableColumnSettings; -pub extern fn ImGuiTableColumnSettings_destroy(self: ?*ImGuiTableColumnSettings) void; -pub extern fn ImGuiTableSettings_ImGuiTableSettings() [*c]ImGuiTableSettings; -pub extern fn ImGuiTableSettings_destroy(self: [*c]ImGuiTableSettings) void; -pub extern fn ImGuiTableSettings_GetColumnSettings(self: [*c]ImGuiTableSettings) ?*ImGuiTableColumnSettings; -pub extern fn igGetCurrentWindowRead() ?*ImGuiWindow; -pub extern fn igGetCurrentWindow() ?*ImGuiWindow; -pub extern fn igFindWindowByID(id: ImGuiID) ?*ImGuiWindow; -pub extern fn igFindWindowByName(name: [*c]const u8) ?*ImGuiWindow; -pub extern fn igUpdateWindowParentAndRootLinks(window: ?*ImGuiWindow, flags: ImGuiWindowFlags, parent_window: ?*ImGuiWindow) void; -pub extern fn igCalcWindowNextAutoFitSize(pOut: [*c]ImVec2, window: ?*ImGuiWindow) void; -pub extern fn igIsWindowChildOf(window: ?*ImGuiWindow, potential_parent: ?*ImGuiWindow, popup_hierarchy: bool, dock_hierarchy: bool) bool; -pub extern fn igIsWindowWithinBeginStackOf(window: ?*ImGuiWindow, potential_parent: ?*ImGuiWindow) bool; -pub extern fn igIsWindowAbove(potential_above: ?*ImGuiWindow, potential_below: ?*ImGuiWindow) bool; -pub extern fn igIsWindowNavFocusable(window: ?*ImGuiWindow) bool; -pub extern fn igSetWindowPos_WindowPtr(window: ?*ImGuiWindow, pos: ImVec2, cond: ImGuiCond) void; -pub extern fn igSetWindowSize_WindowPtr(window: ?*ImGuiWindow, size: ImVec2, cond: ImGuiCond) void; -pub extern fn igSetWindowCollapsed_WindowPtr(window: ?*ImGuiWindow, collapsed: bool, cond: ImGuiCond) void; -pub extern fn igSetWindowHitTestHole(window: ?*ImGuiWindow, pos: ImVec2, size: ImVec2) void; -pub extern fn igWindowRectAbsToRel(pOut: [*c]ImRect, window: ?*ImGuiWindow, r: ImRect) void; -pub extern fn igWindowRectRelToAbs(pOut: [*c]ImRect, window: ?*ImGuiWindow, r: ImRect) void; -pub extern fn igFocusWindow(window: ?*ImGuiWindow) void; -pub extern fn igFocusTopMostWindowUnderOne(under_this_window: ?*ImGuiWindow, ignore_window: ?*ImGuiWindow) void; -pub extern fn igBringWindowToFocusFront(window: ?*ImGuiWindow) void; -pub extern fn igBringWindowToDisplayFront(window: ?*ImGuiWindow) void; -pub extern fn igBringWindowToDisplayBack(window: ?*ImGuiWindow) void; -pub extern fn igBringWindowToDisplayBehind(window: ?*ImGuiWindow, above_window: ?*ImGuiWindow) void; -pub extern fn igFindWindowDisplayIndex(window: ?*ImGuiWindow) c_int; -pub extern fn igFindBottomMostVisibleWindowWithinBeginStack(window: ?*ImGuiWindow) ?*ImGuiWindow; -pub extern fn igSetCurrentFont(font: [*c]ImFont) void; -pub extern fn igGetDefaultFont() [*c]ImFont; -pub extern fn igGetForegroundDrawList_WindowPtr(window: ?*ImGuiWindow) [*c]ImDrawList; -pub extern fn igInitialize() void; -pub extern fn igShutdown() void; -pub extern fn igUpdateInputEvents(trickle_fast_inputs: bool) void; -pub extern fn igUpdateHoveredWindowAndCaptureFlags() void; -pub extern fn igStartMouseMovingWindow(window: ?*ImGuiWindow) void; -pub extern fn igStartMouseMovingWindowOrNode(window: ?*ImGuiWindow, node: ?*ImGuiDockNode, undock_floating_node: bool) void; -pub extern fn igUpdateMouseMovingWindowNewFrame() void; -pub extern fn igUpdateMouseMovingWindowEndFrame() void; -pub extern fn igAddContextHook(context: [*c]ImGuiContext, hook: [*c]const ImGuiContextHook) ImGuiID; -pub extern fn igRemoveContextHook(context: [*c]ImGuiContext, hook_to_remove: ImGuiID) void; -pub extern fn igCallContextHooks(context: [*c]ImGuiContext, @"type": ImGuiContextHookType) void; -pub extern fn igTranslateWindowsInViewport(viewport: [*c]ImGuiViewportP, old_pos: ImVec2, new_pos: ImVec2) void; -pub extern fn igScaleWindowsInViewport(viewport: [*c]ImGuiViewportP, scale: f32) void; -pub extern fn igDestroyPlatformWindow(viewport: [*c]ImGuiViewportP) void; -pub extern fn igSetWindowViewport(window: ?*ImGuiWindow, viewport: [*c]ImGuiViewportP) void; -pub extern fn igSetCurrentViewport(window: ?*ImGuiWindow, viewport: [*c]ImGuiViewportP) void; -pub extern fn igGetViewportPlatformMonitor(viewport: [*c]ImGuiViewport) [*c]const ImGuiPlatformMonitor; -pub extern fn igFindHoveredViewportFromPlatformWindowStack(mouse_platform_pos: ImVec2) [*c]ImGuiViewportP; -pub extern fn igMarkIniSettingsDirty_Nil() void; -pub extern fn igMarkIniSettingsDirty_WindowPtr(window: ?*ImGuiWindow) void; -pub extern fn igClearIniSettings() void; -pub extern fn igCreateNewWindowSettings(name: [*c]const u8) [*c]ImGuiWindowSettings; -pub extern fn igFindWindowSettings(id: ImGuiID) [*c]ImGuiWindowSettings; -pub extern fn igFindOrCreateWindowSettings(name: [*c]const u8) [*c]ImGuiWindowSettings; -pub extern fn igAddSettingsHandler(handler: [*c]const ImGuiSettingsHandler) void; -pub extern fn igRemoveSettingsHandler(type_name: [*c]const u8) void; -pub extern fn igFindSettingsHandler(type_name: [*c]const u8) [*c]ImGuiSettingsHandler; -pub extern fn igSetNextWindowScroll(scroll: ImVec2) void; -pub extern fn igSetScrollX_WindowPtr(window: ?*ImGuiWindow, scroll_x: f32) void; -pub extern fn igSetScrollY_WindowPtr(window: ?*ImGuiWindow, scroll_y: f32) void; -pub extern fn igSetScrollFromPosX_WindowPtr(window: ?*ImGuiWindow, local_x: f32, center_x_ratio: f32) void; -pub extern fn igSetScrollFromPosY_WindowPtr(window: ?*ImGuiWindow, local_y: f32, center_y_ratio: f32) void; -pub extern fn igScrollToItem(flags: ImGuiScrollFlags) void; -pub extern fn igScrollToRect(window: ?*ImGuiWindow, rect: ImRect, flags: ImGuiScrollFlags) void; -pub extern fn igScrollToRectEx(pOut: [*c]ImVec2, window: ?*ImGuiWindow, rect: ImRect, flags: ImGuiScrollFlags) void; -pub extern fn igScrollToBringRectIntoView(window: ?*ImGuiWindow, rect: ImRect) void; -pub extern fn igGetItemID() ImGuiID; -pub extern fn igGetItemStatusFlags() ImGuiItemStatusFlags; -pub extern fn igGetItemFlags() ImGuiItemFlags; -pub extern fn igGetActiveID() ImGuiID; -pub extern fn igGetFocusID() ImGuiID; -pub extern fn igSetActiveID(id: ImGuiID, window: ?*ImGuiWindow) void; -pub extern fn igSetFocusID(id: ImGuiID, window: ?*ImGuiWindow) void; -pub extern fn igClearActiveID() void; -pub extern fn igGetHoveredID() ImGuiID; -pub extern fn igSetHoveredID(id: ImGuiID) void; -pub extern fn igKeepAliveID(id: ImGuiID) void; -pub extern fn igMarkItemEdited(id: ImGuiID) void; -pub extern fn igPushOverrideID(id: ImGuiID) void; -pub extern fn igGetIDWithSeed(str_id_begin: [*c]const u8, str_id_end: [*c]const u8, seed: ImGuiID) ImGuiID; -pub extern fn igItemSize_Vec2(size: ImVec2, text_baseline_y: f32) void; -pub extern fn igItemSize_Rect(bb: ImRect, text_baseline_y: f32) void; -pub extern fn igItemAdd(bb: ImRect, id: ImGuiID, nav_bb: [*c]const ImRect, extra_flags: ImGuiItemFlags) bool; -pub extern fn igItemHoverable(bb: ImRect, id: ImGuiID) bool; -pub extern fn igIsClippedEx(bb: ImRect, id: ImGuiID) bool; -pub extern fn igSetLastItemData(item_id: ImGuiID, in_flags: ImGuiItemFlags, status_flags: ImGuiItemStatusFlags, item_rect: ImRect) void; -pub extern fn igCalcItemSize(pOut: [*c]ImVec2, size: ImVec2, default_w: f32, default_h: f32) void; -pub extern fn igCalcWrapWidthForPos(pos: ImVec2, wrap_pos_x: f32) f32; -pub extern fn igPushMultiItemsWidths(components: c_int, width_full: f32) void; -pub extern fn igIsItemToggledSelection() bool; -pub extern fn igGetContentRegionMaxAbs(pOut: [*c]ImVec2) void; -pub extern fn igShrinkWidths(items: [*c]ImGuiShrinkWidthItem, count: c_int, width_excess: f32) void; -pub extern fn igPushItemFlag(option: ImGuiItemFlags, enabled: bool) void; -pub extern fn igPopItemFlag() void; -pub extern fn igLogBegin(@"type": ImGuiLogType, auto_open_depth: c_int) void; -pub extern fn igLogToBuffer(auto_open_depth: c_int) void; -pub extern fn igLogRenderedText(ref_pos: [*c]const ImVec2, text: [*c]const u8, text_end: [*c]const u8) void; -pub extern fn igLogSetNextTextDecoration(prefix: [*c]const u8, suffix: [*c]const u8) void; -pub extern fn igBeginChildEx(name: [*c]const u8, id: ImGuiID, size_arg: ImVec2, border: bool, flags: ImGuiWindowFlags) bool; -pub extern fn igOpenPopupEx(id: ImGuiID, popup_flags: ImGuiPopupFlags) void; -pub extern fn igClosePopupToLevel(remaining: c_int, restore_focus_to_window_under_popup: bool) void; -pub extern fn igClosePopupsOverWindow(ref_window: ?*ImGuiWindow, restore_focus_to_window_under_popup: bool) void; -pub extern fn igClosePopupsExceptModals() void; -pub extern fn igIsPopupOpen_ID(id: ImGuiID, popup_flags: ImGuiPopupFlags) bool; -pub extern fn igBeginPopupEx(id: ImGuiID, extra_flags: ImGuiWindowFlags) bool; -pub extern fn igBeginTooltipEx(tooltip_flags: ImGuiTooltipFlags, extra_window_flags: ImGuiWindowFlags) void; -pub extern fn igGetPopupAllowedExtentRect(pOut: [*c]ImRect, window: ?*ImGuiWindow) void; -pub extern fn igGetTopMostPopupModal() ?*ImGuiWindow; -pub extern fn igGetTopMostAndVisiblePopupModal() ?*ImGuiWindow; -pub extern fn igFindBestWindowPosForPopup(pOut: [*c]ImVec2, window: ?*ImGuiWindow) void; -pub extern fn igFindBestWindowPosForPopupEx(pOut: [*c]ImVec2, ref_pos: ImVec2, size: ImVec2, last_dir: [*c]ImGuiDir, r_outer: ImRect, r_avoid: ImRect, policy: ImGuiPopupPositionPolicy) void; -pub extern fn igBeginViewportSideBar(name: [*c]const u8, viewport: [*c]ImGuiViewport, dir: ImGuiDir, size: f32, window_flags: ImGuiWindowFlags) bool; -pub extern fn igBeginMenuEx(label: [*c]const u8, icon: [*c]const u8, enabled: bool) bool; -pub extern fn igMenuItemEx(label: [*c]const u8, icon: [*c]const u8, shortcut: [*c]const u8, selected: bool, enabled: bool) bool; -pub extern fn igBeginComboPopup(popup_id: ImGuiID, bb: ImRect, flags: ImGuiComboFlags) bool; -pub extern fn igBeginComboPreview() bool; -pub extern fn igEndComboPreview() void; -pub extern fn igNavInitWindow(window: ?*ImGuiWindow, force_reinit: bool) void; -pub extern fn igNavInitRequestApplyResult() void; -pub extern fn igNavMoveRequestButNoResultYet() bool; -pub extern fn igNavMoveRequestSubmit(move_dir: ImGuiDir, clip_dir: ImGuiDir, move_flags: ImGuiNavMoveFlags, scroll_flags: ImGuiScrollFlags) void; -pub extern fn igNavMoveRequestForward(move_dir: ImGuiDir, clip_dir: ImGuiDir, move_flags: ImGuiNavMoveFlags, scroll_flags: ImGuiScrollFlags) void; -pub extern fn igNavMoveRequestResolveWithLastItem(result: [*c]ImGuiNavItemData) void; -pub extern fn igNavMoveRequestCancel() void; -pub extern fn igNavMoveRequestApplyResult() void; -pub extern fn igNavMoveRequestTryWrapping(window: ?*ImGuiWindow, move_flags: ImGuiNavMoveFlags) void; -pub extern fn igGetNavInputName(n: ImGuiNavInput) [*c]const u8; -pub extern fn igGetNavInputAmount(n: ImGuiNavInput, mode: ImGuiNavReadMode) f32; -pub extern fn igGetNavInputAmount2d(pOut: [*c]ImVec2, dir_sources: ImGuiNavDirSourceFlags, mode: ImGuiNavReadMode, slow_factor: f32, fast_factor: f32) void; -pub extern fn igCalcTypematicRepeatAmount(t0: f32, t1: f32, repeat_delay: f32, repeat_rate: f32) c_int; -pub extern fn igActivateItem(id: ImGuiID) void; -pub extern fn igSetNavWindow(window: ?*ImGuiWindow) void; -pub extern fn igSetNavID(id: ImGuiID, nav_layer: ImGuiNavLayer, focus_scope_id: ImGuiID, rect_rel: ImRect) void; -pub extern fn igPushFocusScope(id: ImGuiID) void; -pub extern fn igPopFocusScope() void; -pub extern fn igGetFocusedFocusScope() ImGuiID; -pub extern fn igGetFocusScope() ImGuiID; -pub extern fn igIsNamedKey(key: ImGuiKey) bool; -pub extern fn igIsLegacyKey(key: ImGuiKey) bool; -pub extern fn igIsGamepadKey(key: ImGuiKey) bool; -pub extern fn igGetKeyData(key: ImGuiKey) [*c]ImGuiKeyData; -pub extern fn igSetItemUsingMouseWheel() void; -pub extern fn igSetActiveIdUsingNavAndKeys() void; -pub extern fn igIsActiveIdUsingNavDir(dir: ImGuiDir) bool; -pub extern fn igIsActiveIdUsingNavInput(input: ImGuiNavInput) bool; -pub extern fn igIsActiveIdUsingKey(key: ImGuiKey) bool; -pub extern fn igSetActiveIdUsingKey(key: ImGuiKey) void; -pub extern fn igIsMouseDragPastThreshold(button: ImGuiMouseButton, lock_threshold: f32) bool; -pub extern fn igIsNavInputDown(n: ImGuiNavInput) bool; -pub extern fn igIsNavInputTest(n: ImGuiNavInput, rm: ImGuiNavReadMode) bool; -pub extern fn igGetMergedModFlags() ImGuiModFlags; -pub extern fn igIsKeyPressedMap(key: ImGuiKey, repeat: bool) bool; -pub extern fn igDockContextInitialize(ctx: [*c]ImGuiContext) void; -pub extern fn igDockContextShutdown(ctx: [*c]ImGuiContext) void; -pub extern fn igDockContextClearNodes(ctx: [*c]ImGuiContext, root_id: ImGuiID, clear_settings_refs: bool) void; -pub extern fn igDockContextRebuildNodes(ctx: [*c]ImGuiContext) void; -pub extern fn igDockContextNewFrameUpdateUndocking(ctx: [*c]ImGuiContext) void; -pub extern fn igDockContextNewFrameUpdateDocking(ctx: [*c]ImGuiContext) void; -pub extern fn igDockContextEndFrame(ctx: [*c]ImGuiContext) void; -pub extern fn igDockContextGenNodeID(ctx: [*c]ImGuiContext) ImGuiID; -pub extern fn igDockContextQueueDock(ctx: [*c]ImGuiContext, target: ?*ImGuiWindow, target_node: ?*ImGuiDockNode, payload: ?*ImGuiWindow, split_dir: ImGuiDir, split_ratio: f32, split_outer: bool) void; -pub extern fn igDockContextQueueUndockWindow(ctx: [*c]ImGuiContext, window: ?*ImGuiWindow) void; -pub extern fn igDockContextQueueUndockNode(ctx: [*c]ImGuiContext, node: ?*ImGuiDockNode) void; -pub extern fn igDockContextCalcDropPosForDocking(target: ?*ImGuiWindow, target_node: ?*ImGuiDockNode, payload: ?*ImGuiWindow, split_dir: ImGuiDir, split_outer: bool, out_pos: [*c]ImVec2) bool; -pub extern fn igDockNodeBeginAmendTabBar(node: ?*ImGuiDockNode) bool; -pub extern fn igDockNodeEndAmendTabBar() void; -pub extern fn igDockNodeGetRootNode(node: ?*ImGuiDockNode) ?*ImGuiDockNode; -pub extern fn igDockNodeIsInHierarchyOf(node: ?*ImGuiDockNode, parent: ?*ImGuiDockNode) bool; -pub extern fn igDockNodeGetDepth(node: ?*const ImGuiDockNode) c_int; -pub extern fn igDockNodeGetWindowMenuButtonId(node: ?*const ImGuiDockNode) ImGuiID; -pub extern fn igGetWindowDockNode() ?*ImGuiDockNode; -pub extern fn igGetWindowAlwaysWantOwnTabBar(window: ?*ImGuiWindow) bool; -pub extern fn igBeginDocked(window: ?*ImGuiWindow, p_open: [*c]bool) void; -pub extern fn igBeginDockableDragDropSource(window: ?*ImGuiWindow) void; -pub extern fn igBeginDockableDragDropTarget(window: ?*ImGuiWindow) void; -pub extern fn igSetWindowDock(window: ?*ImGuiWindow, dock_id: ImGuiID, cond: ImGuiCond) void; -pub extern fn igDockBuilderDockWindow(window_name: [*c]const u8, node_id: ImGuiID) void; -pub extern fn igDockBuilderGetNode(node_id: ImGuiID) ?*ImGuiDockNode; -pub extern fn igDockBuilderGetCentralNode(node_id: ImGuiID) ?*ImGuiDockNode; -pub extern fn igDockBuilderAddNode(node_id: ImGuiID, flags: ImGuiDockNodeFlags) ImGuiID; -pub extern fn igDockBuilderRemoveNode(node_id: ImGuiID) void; -pub extern fn igDockBuilderRemoveNodeDockedWindows(node_id: ImGuiID, clear_settings_refs: bool) void; -pub extern fn igDockBuilderRemoveNodeChildNodes(node_id: ImGuiID) void; -pub extern fn igDockBuilderSetNodePos(node_id: ImGuiID, pos: ImVec2) void; -pub extern fn igDockBuilderSetNodeSize(node_id: ImGuiID, size: ImVec2) void; -pub extern fn igDockBuilderSplitNode(node_id: ImGuiID, split_dir: ImGuiDir, size_ratio_for_node_at_dir: f32, out_id_at_dir: [*c]ImGuiID, out_id_at_opposite_dir: [*c]ImGuiID) ImGuiID; -pub extern fn igDockBuilderCopyDockSpace(src_dockspace_id: ImGuiID, dst_dockspace_id: ImGuiID, in_window_remap_pairs: [*c]ImVector_const_charPtr) void; -pub extern fn igDockBuilderCopyNode(src_node_id: ImGuiID, dst_node_id: ImGuiID, out_node_remap_pairs: [*c]ImVector_ImGuiID) void; -pub extern fn igDockBuilderCopyWindowSettings(src_name: [*c]const u8, dst_name: [*c]const u8) void; -pub extern fn igDockBuilderFinish(node_id: ImGuiID) void; -pub extern fn igIsDragDropActive() bool; -pub extern fn igBeginDragDropTargetCustom(bb: ImRect, id: ImGuiID) bool; -pub extern fn igClearDragDrop() void; -pub extern fn igIsDragDropPayloadBeingAccepted() bool; -pub extern fn igSetWindowClipRectBeforeSetChannel(window: ?*ImGuiWindow, clip_rect: ImRect) void; -pub extern fn igBeginColumns(str_id: [*c]const u8, count: c_int, flags: ImGuiOldColumnFlags) void; -pub extern fn igEndColumns() void; -pub extern fn igPushColumnClipRect(column_index: c_int) void; -pub extern fn igPushColumnsBackground() void; -pub extern fn igPopColumnsBackground() void; -pub extern fn igGetColumnsID(str_id: [*c]const u8, count: c_int) ImGuiID; -pub extern fn igFindOrCreateColumns(window: ?*ImGuiWindow, id: ImGuiID) [*c]ImGuiOldColumns; -pub extern fn igGetColumnOffsetFromNorm(columns: [*c]const ImGuiOldColumns, offset_norm: f32) f32; -pub extern fn igGetColumnNormFromOffset(columns: [*c]const ImGuiOldColumns, offset: f32) f32; -pub extern fn igTableOpenContextMenu(column_n: c_int) void; -pub extern fn igTableSetColumnWidth(column_n: c_int, width: f32) void; -pub extern fn igTableSetColumnSortDirection(column_n: c_int, sort_direction: ImGuiSortDirection, append_to_sort_specs: bool) void; -pub extern fn igTableGetHoveredColumn() c_int; -pub extern fn igTableGetHeaderRowHeight() f32; -pub extern fn igTablePushBackgroundChannel() void; -pub extern fn igTablePopBackgroundChannel() void; -pub extern fn igGetCurrentTable() ?*ImGuiTable; -pub extern fn igTableFindByID(id: ImGuiID) ?*ImGuiTable; -pub extern fn igBeginTableEx(name: [*c]const u8, id: ImGuiID, columns_count: c_int, flags: ImGuiTableFlags, outer_size: ImVec2, inner_width: f32) bool; -pub extern fn igTableBeginInitMemory(table: ?*ImGuiTable, columns_count: c_int) void; -pub extern fn igTableBeginApplyRequests(table: ?*ImGuiTable) void; -pub extern fn igTableSetupDrawChannels(table: ?*ImGuiTable) void; -pub extern fn igTableUpdateLayout(table: ?*ImGuiTable) void; -pub extern fn igTableUpdateBorders(table: ?*ImGuiTable) void; -pub extern fn igTableUpdateColumnsWeightFromWidth(table: ?*ImGuiTable) void; -pub extern fn igTableDrawBorders(table: ?*ImGuiTable) void; -pub extern fn igTableDrawContextMenu(table: ?*ImGuiTable) void; -pub extern fn igTableMergeDrawChannels(table: ?*ImGuiTable) void; -pub extern fn igTableGetInstanceData(table: ?*ImGuiTable, instance_no: c_int) [*c]ImGuiTableInstanceData; -pub extern fn igTableSortSpecsSanitize(table: ?*ImGuiTable) void; -pub extern fn igTableSortSpecsBuild(table: ?*ImGuiTable) void; -pub extern fn igTableGetColumnNextSortDirection(column: ?*ImGuiTableColumn) ImGuiSortDirection; -pub extern fn igTableFixColumnSortDirection(table: ?*ImGuiTable, column: ?*ImGuiTableColumn) void; -pub extern fn igTableGetColumnWidthAuto(table: ?*ImGuiTable, column: ?*ImGuiTableColumn) f32; -pub extern fn igTableBeginRow(table: ?*ImGuiTable) void; -pub extern fn igTableEndRow(table: ?*ImGuiTable) void; -pub extern fn igTableBeginCell(table: ?*ImGuiTable, column_n: c_int) void; -pub extern fn igTableEndCell(table: ?*ImGuiTable) void; -pub extern fn igTableGetCellBgRect(pOut: [*c]ImRect, table: ?*const ImGuiTable, column_n: c_int) void; -pub extern fn igTableGetColumnName_TablePtr(table: ?*const ImGuiTable, column_n: c_int) [*c]const u8; -pub extern fn igTableGetColumnResizeID(table: ?*const ImGuiTable, column_n: c_int, instance_no: c_int) ImGuiID; -pub extern fn igTableGetMaxColumnWidth(table: ?*const ImGuiTable, column_n: c_int) f32; -pub extern fn igTableSetColumnWidthAutoSingle(table: ?*ImGuiTable, column_n: c_int) void; -pub extern fn igTableSetColumnWidthAutoAll(table: ?*ImGuiTable) void; -pub extern fn igTableRemove(table: ?*ImGuiTable) void; -pub extern fn igTableGcCompactTransientBuffers_TablePtr(table: ?*ImGuiTable) void; -pub extern fn igTableGcCompactTransientBuffers_TableTempDataPtr(table: [*c]ImGuiTableTempData) void; -pub extern fn igTableGcCompactSettings() void; -pub extern fn igTableLoadSettings(table: ?*ImGuiTable) void; -pub extern fn igTableSaveSettings(table: ?*ImGuiTable) void; -pub extern fn igTableResetSettings(table: ?*ImGuiTable) void; -pub extern fn igTableGetBoundSettings(table: ?*ImGuiTable) [*c]ImGuiTableSettings; -pub extern fn igTableSettingsAddSettingsHandler() void; -pub extern fn igTableSettingsCreate(id: ImGuiID, columns_count: c_int) [*c]ImGuiTableSettings; -pub extern fn igTableSettingsFindByID(id: ImGuiID) [*c]ImGuiTableSettings; -pub extern fn igBeginTabBarEx(tab_bar: [*c]ImGuiTabBar, bb: ImRect, flags: ImGuiTabBarFlags, dock_node: ?*ImGuiDockNode) bool; -pub extern fn igTabBarFindTabByID(tab_bar: [*c]ImGuiTabBar, tab_id: ImGuiID) [*c]ImGuiTabItem; -pub extern fn igTabBarFindMostRecentlySelectedTabForActiveWindow(tab_bar: [*c]ImGuiTabBar) [*c]ImGuiTabItem; -pub extern fn igTabBarAddTab(tab_bar: [*c]ImGuiTabBar, tab_flags: ImGuiTabItemFlags, window: ?*ImGuiWindow) void; -pub extern fn igTabBarRemoveTab(tab_bar: [*c]ImGuiTabBar, tab_id: ImGuiID) void; -pub extern fn igTabBarCloseTab(tab_bar: [*c]ImGuiTabBar, tab: [*c]ImGuiTabItem) void; -pub extern fn igTabBarQueueReorder(tab_bar: [*c]ImGuiTabBar, tab: [*c]const ImGuiTabItem, offset: c_int) void; -pub extern fn igTabBarQueueReorderFromMousePos(tab_bar: [*c]ImGuiTabBar, tab: [*c]const ImGuiTabItem, mouse_pos: ImVec2) void; -pub extern fn igTabBarProcessReorder(tab_bar: [*c]ImGuiTabBar) bool; -pub extern fn igTabItemEx(tab_bar: [*c]ImGuiTabBar, label: [*c]const u8, p_open: [*c]bool, flags: ImGuiTabItemFlags, docked_window: ?*ImGuiWindow) bool; -pub extern fn igTabItemCalcSize(pOut: [*c]ImVec2, label: [*c]const u8, has_close_button: bool) void; -pub extern fn igTabItemBackground(draw_list: [*c]ImDrawList, bb: ImRect, flags: ImGuiTabItemFlags, col: ImU32) void; -pub extern fn igTabItemLabelAndCloseButton(draw_list: [*c]ImDrawList, bb: ImRect, flags: ImGuiTabItemFlags, frame_padding: ImVec2, label: [*c]const u8, tab_id: ImGuiID, close_button_id: ImGuiID, is_contents_visible: bool, out_just_closed: [*c]bool, out_text_clipped: [*c]bool -) void; -pub extern fn igRenderText(pos: ImVec2, text: [*c]const u8, text_end: [*c]const u8, hide_text_after_hash: bool) void; -pub extern fn igRenderTextWrapped(pos: ImVec2, text: [*c]const u8, text_end: [*c]const u8, wrap_width: f32) void; -pub extern fn igRenderTextClipped(pos_min: ImVec2, pos_max: ImVec2, text: [*c]const u8, text_end: [*c]const u8, text_size_if_known: [*c]const ImVec2, @"align": ImVec2, clip_rect: [*c]const ImRect) void; -pub extern fn igRenderTextClippedEx(draw_list: [*c]ImDrawList, pos_min: ImVec2, pos_max: ImVec2, text: [*c]const u8, text_end: [*c]const u8, text_size_if_known: [*c]const ImVec2, @"align": ImVec2, clip_rect: [*c]const ImRect) void; -pub extern fn igRenderTextEllipsis(draw_list: [*c]ImDrawList, pos_min: ImVec2, pos_max: ImVec2, clip_max_x: f32, ellipsis_max_x: f32, text: [*c]const u8, text_end: [*c]const u8, text_size_if_known: [*c]const ImVec2) void; -pub extern fn igRenderFrame(p_min: ImVec2, p_max: ImVec2, fill_col: ImU32, border: bool, rounding: f32) void; -pub extern fn igRenderFrameBorder(p_min: ImVec2, p_max: ImVec2, rounding: f32) void; -pub extern fn igRenderColorRectWithAlphaCheckerboard(draw_list: [*c]ImDrawList, p_min: ImVec2, p_max: ImVec2, fill_col: ImU32, grid_step: f32, grid_off: ImVec2, rounding: f32, flags: ImDrawFlags) void; -pub extern fn igRenderNavHighlight(bb: ImRect, id: ImGuiID, flags: ImGuiNavHighlightFlags) void; -pub extern fn igFindRenderedTextEnd(text: [*c]const u8, text_end: [*c]const u8) [*c]const u8; -pub extern fn igRenderMouseCursor(pos: ImVec2, scale: f32, mouse_cursor: ImGuiMouseCursor, col_fill: ImU32, col_border: ImU32, col_shadow: ImU32) void; -pub extern fn igRenderArrow(draw_list: [*c]ImDrawList, pos: ImVec2, col: ImU32, dir: ImGuiDir, scale: f32) void; -pub extern fn igRenderBullet(draw_list: [*c]ImDrawList, pos: ImVec2, col: ImU32) void; -pub extern fn igRenderCheckMark(draw_list: [*c]ImDrawList, pos: ImVec2, col: ImU32, sz: f32) void; -pub extern fn igRenderArrowPointingAt(draw_list: [*c]ImDrawList, pos: ImVec2, half_sz: ImVec2, direction: ImGuiDir, col: ImU32) void; -pub extern fn igRenderArrowDockMenu(draw_list: [*c]ImDrawList, p_min: ImVec2, sz: f32, col: ImU32) void; -pub extern fn igRenderRectFilledRangeH(draw_list: [*c]ImDrawList, rect: ImRect, col: ImU32, x_start_norm: f32, x_end_norm: f32, rounding: f32) void; -pub extern fn igRenderRectFilledWithHole(draw_list: [*c]ImDrawList, outer: ImRect, inner: ImRect, col: ImU32, rounding: f32) void; -pub extern fn igCalcRoundingFlagsForRectInRect(r_in: ImRect, r_outer: ImRect, threshold: f32) ImDrawFlags; -pub extern fn igTextEx(text: [*c]const u8, text_end: [*c]const u8, flags: ImGuiTextFlags) void; -pub extern fn igButtonEx(label: [*c]const u8, size_arg: ImVec2, flags: ImGuiButtonFlags) bool; -pub extern fn igCloseButton(id: ImGuiID, pos: ImVec2) bool; -pub extern fn igCollapseButton(id: ImGuiID, pos: ImVec2, dock_node: ?*ImGuiDockNode) bool; -pub extern fn igArrowButtonEx(str_id: [*c]const u8, dir: ImGuiDir, size_arg: ImVec2, flags: ImGuiButtonFlags) bool; -pub extern fn igScrollbar(axis: ImGuiAxis) void; -pub extern fn igScrollbarEx(bb: ImRect, id: ImGuiID, axis: ImGuiAxis, p_scroll_v: [*c]ImS64, avail_v: ImS64, contents_v: ImS64, flags: ImDrawFlags) bool; -pub extern fn igImageButtonEx(id: ImGuiID, texture_id: ImTextureID, size: ImVec2, uv0: ImVec2, uv1: ImVec2, padding: ImVec2, bg_col: ImVec4, tint_col: ImVec4) bool; -pub extern fn igGetWindowScrollbarRect(pOut: [*c]ImRect, window: ?*ImGuiWindow, axis: ImGuiAxis) void; -pub extern fn igGetWindowScrollbarID(window: ?*ImGuiWindow, axis: ImGuiAxis) ImGuiID; -pub extern fn igGetWindowResizeCornerID(window: ?*ImGuiWindow, n: c_int) ImGuiID; -pub extern fn igGetWindowResizeBorderID(window: ?*ImGuiWindow, dir: ImGuiDir) ImGuiID; -pub extern fn igSeparatorEx(flags: ImGuiSeparatorFlags) void; -pub extern fn igCheckboxFlags_S64Ptr(label: [*c]const u8, flags: [*c]ImS64, flags_value: ImS64) bool; -pub extern fn igCheckboxFlags_U64Ptr(label: [*c]const u8, flags: [*c]ImU64, flags_value: ImU64) bool; -pub extern fn igButtonBehavior(bb: ImRect, id: ImGuiID, out_hovered: [*c]bool, out_held: [*c]bool, flags: ImGuiButtonFlags) bool; -pub extern fn igDragBehavior(id: ImGuiID, data_type: ImGuiDataType, p_v: ?*anyopaque, v_speed: f32, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; -pub extern fn igSliderBehavior(bb: ImRect, id: ImGuiID, data_type: ImGuiDataType, p_v: ?*anyopaque, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags, out_grab_bb: [*c]ImRect) bool; -pub extern fn igSplitterBehavior(bb: ImRect, id: ImGuiID, axis: ImGuiAxis, size1: [*c]f32, size2: [*c]f32, min_size1: f32, min_size2: f32, hover_extend: f32, hover_visibility_delay: f32, bg_col: ImU32) bool; -pub extern fn igTreeNodeBehavior(id: ImGuiID, flags: ImGuiTreeNodeFlags, label: [*c]const u8, label_end: [*c]const u8) bool; -pub extern fn igTreeNodeBehaviorIsOpen(id: ImGuiID, flags: ImGuiTreeNodeFlags) bool; -pub extern fn igTreePushOverrideID(id: ImGuiID) void; -pub extern fn igDataTypeGetInfo(data_type: ImGuiDataType) [*c]const ImGuiDataTypeInfo; -pub extern fn igDataTypeFormatString(buf: [*c]u8, buf_size: c_int, data_type: ImGuiDataType, p_data: ?*const anyopaque, format: [*c]const u8) c_int; -pub extern fn igDataTypeApplyOp(data_type: ImGuiDataType, op: c_int, output: ?*anyopaque, arg_1: ?*const anyopaque, arg_2: ?*const anyopaque) void; -pub extern fn igDataTypeApplyFromText(buf: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, format: [*c]const u8) bool; -pub extern fn igDataTypeCompare(data_type: ImGuiDataType, arg_1: ?*const anyopaque, arg_2: ?*const anyopaque) c_int; -pub extern fn igDataTypeClamp(data_type: ImGuiDataType, p_data: ?*anyopaque, p_min: ?*const anyopaque, p_max: ?*const anyopaque) bool; -pub extern fn igInputTextEx(label: [*c]const u8, hint: [*c]const u8, buf: [*c]u8, buf_size: c_int, size_arg: ImVec2, flags: ImGuiInputTextFlags, callback: ImGuiInputTextCallback, user_data: ?*anyopaque) bool; -pub extern fn igTempInputText(bb: ImRect, id: ImGuiID, label: [*c]const u8, buf: [*c]u8, buf_size: c_int, flags: ImGuiInputTextFlags) bool; -pub extern fn igTempInputScalar(bb: ImRect, id: ImGuiID, label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, format: [*c]const u8, p_clamp_min: ?*const anyopaque, p_clamp_max: ?*const anyopaque) bool; -pub extern fn igTempInputIsActive(id: ImGuiID) bool; -pub extern fn igGetInputTextState(id: ImGuiID) [*c]ImGuiInputTextState; -pub extern fn igColorTooltip(text: [*c]const u8, col: [*c]const f32, flags: ImGuiColorEditFlags) void; -pub extern fn igColorEditOptionsPopup(col: [*c]const f32, flags: ImGuiColorEditFlags) void; -pub extern fn igColorPickerOptionsPopup(ref_col: [*c]const f32, flags: ImGuiColorEditFlags) void; -pub extern fn igPlotEx(plot_type: ImGuiPlotType, label: [*c]const u8, values_getter: ?*const fn (?*anyopaque, c_int) callconv(.C) f32, data: ?*anyopaque, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, frame_size: ImVec2 -) c_int; -pub extern fn igShadeVertsLinearColorGradientKeepAlpha(draw_list: [*c]ImDrawList, vert_start_idx: c_int, vert_end_idx: c_int, gradient_p0: ImVec2, gradient_p1: ImVec2, col0: ImU32, col1: ImU32) void; -pub extern fn igShadeVertsLinearUV(draw_list: [*c]ImDrawList, vert_start_idx: c_int, vert_end_idx: c_int, a: ImVec2, b: ImVec2, uv_a: ImVec2, uv_b: ImVec2, clamp: bool) void; -pub extern fn igGcCompactTransientMiscBuffers() void; -pub extern fn igGcCompactTransientWindowBuffers(window: ?*ImGuiWindow) void; -pub extern fn igGcAwakeTransientWindowBuffers(window: ?*ImGuiWindow) void; -pub extern fn igDebugLog(fmt: [*c]const u8, ...) void; -pub extern fn igDebugLogV(fmt: [*c]const u8, args: va_list) void; -pub extern fn igErrorCheckEndFrameRecover(log_callback: ImGuiErrorLogCallback, user_data: ?*anyopaque) void; -pub extern fn igErrorCheckEndWindowRecover(log_callback: ImGuiErrorLogCallback, user_data: ?*anyopaque) void; -pub extern fn igDebugDrawItemRect(col: ImU32) void; -pub extern fn igDebugStartItemPicker() void; -pub extern fn igShowFontAtlas(atlas: [*c]ImFontAtlas) void; -pub extern fn igDebugHookIdInfo(id: ImGuiID, data_type: ImGuiDataType, data_id: ?*const anyopaque, data_id_end: ?*const anyopaque) void; -pub extern fn igDebugNodeColumns(columns: [*c]ImGuiOldColumns) void; -pub extern fn igDebugNodeDockNode(node: ?*ImGuiDockNode, label: [*c]const u8) void; -pub extern fn igDebugNodeDrawList(window: ?*ImGuiWindow, viewport: [*c]ImGuiViewportP, draw_list: [*c]const ImDrawList, label: [*c]const u8) void; -pub extern fn igDebugNodeDrawCmdShowMeshAndBoundingBox(out_draw_list: [*c]ImDrawList, draw_list: [*c]const ImDrawList, draw_cmd: [*c]const ImDrawCmd, show_mesh: bool, show_aabb: bool) void; -pub extern fn igDebugNodeFont(font: [*c]ImFont) void; -pub extern fn igDebugNodeFontGlyph(font: [*c]ImFont, glyph: ?*const ImFontGlyph) void; -pub extern fn igDebugNodeStorage(storage: [*c]ImGuiStorage, label: [*c]const u8) void; -pub extern fn igDebugNodeTabBar(tab_bar: [*c]ImGuiTabBar, label: [*c]const u8) void; -pub extern fn igDebugNodeTable(table: ?*ImGuiTable) void; -pub extern fn igDebugNodeTableSettings(settings: [*c]ImGuiTableSettings) void; -pub extern fn igDebugNodeInputTextState(state: [*c]ImGuiInputTextState) void; -pub extern fn igDebugNodeWindow(window: ?*ImGuiWindow, label: [*c]const u8) void; -pub extern fn igDebugNodeWindowSettings(settings: [*c]ImGuiWindowSettings) void; -pub extern fn igDebugNodeWindowsList(windows: [*c]ImVector_ImGuiWindowPtr, label: [*c]const u8) void; -pub extern fn igDebugNodeWindowsListByBeginStackParent(windows: [*c]?*ImGuiWindow, windows_size: c_int, parent_in_begin_stack: ?*ImGuiWindow) void; -pub extern fn igDebugNodeViewport(viewport: [*c]ImGuiViewportP) void; -pub extern fn igDebugRenderViewportThumbnail(draw_list: [*c]ImDrawList, viewport: [*c]ImGuiViewportP, bb: ImRect) void; -pub extern fn igImFontAtlasGetBuilderForStbTruetype() [*c]const ImFontBuilderIO; -pub extern fn igImFontAtlasBuildInit(atlas: [*c]ImFontAtlas) void; -pub extern fn igImFontAtlasBuildSetupFont(atlas: [*c]ImFontAtlas, font: [*c]ImFont, font_config: [*c]ImFontConfig, ascent: f32, descent: f32) void; -pub extern fn igImFontAtlasBuildPackCustomRects(atlas: [*c]ImFontAtlas, stbrp_context_opaque: ?*anyopaque) void; -pub extern fn igImFontAtlasBuildFinish(atlas: [*c]ImFontAtlas) void; -pub extern fn igImFontAtlasBuildRender8bppRectFromString(atlas: [*c]ImFontAtlas, x: c_int, y: c_int, w: c_int, h: c_int, in_str: [*c]const u8, in_marker_char: u8, in_marker_pixel_value: u8) void; -pub extern fn igImFontAtlasBuildRender32bppRectFromString(atlas: [*c]ImFontAtlas, x: c_int, y: c_int, w: c_int, h: c_int, in_str: [*c]const u8, in_marker_char: u8, in_marker_pixel_value: c_uint) void; -pub extern fn igImFontAtlasBuildMultiplyCalcLookupTable(out_table: [*c]u8, in_multiply_factor: f32) void; -pub extern fn igImFontAtlasBuildMultiplyRectAlpha8(table: [*c]const u8, pixels: [*c]u8, x: c_int, y: c_int, w: c_int, h: c_int, stride: c_int) void; -pub extern fn igLogText(fmt: [*c]const u8, ...) void; -pub extern fn ImGuiTextBuffer_appendf(buffer: [*c]struct_ImGuiTextBuffer, fmt: [*c]const u8, ...) void; -pub extern fn igGET_FLT_MAX() f32; -pub extern fn igGET_FLT_MIN() f32; -pub extern fn ImVector_ImWchar_create() [*c]ImVector_ImWchar; -pub extern fn ImVector_ImWchar_destroy(self: [*c]ImVector_ImWchar) void; -pub extern fn ImVector_ImWchar_Init(p: [*c]ImVector_ImWchar) void; -pub extern fn ImVector_ImWchar_UnInit(p: [*c]ImVector_ImWchar) void; -pub const __llvm__ = @as(c_int, 1); -pub const __clang__ = @as(c_int, 1); -pub const __clang_major__ = @as(c_int, 18); -pub const __clang_minor__ = @as(c_int, 1); -pub const __clang_patchlevel__ = @as(c_int, 6); -pub const __clang_version__ = "18.1.6 (https://github.com/ziglang/zig-bootstrap 98bc6bf4fc4009888d33941daf6b600d20a42a56)"; -pub const __GNUC__ = @as(c_int, 4); -pub const __GNUC_MINOR__ = @as(c_int, 2); -pub const __GNUC_PATCHLEVEL__ = @as(c_int, 1); -pub const __GXX_ABI_VERSION = @as(c_int, 1002); -pub const __ATOMIC_RELAXED = @as(c_int, 0); -pub const __ATOMIC_CONSUME = @as(c_int, 1); -pub const __ATOMIC_ACQUIRE = @as(c_int, 2); -pub const __ATOMIC_RELEASE = @as(c_int, 3); -pub const __ATOMIC_ACQ_REL = @as(c_int, 4); -pub const __ATOMIC_SEQ_CST = @as(c_int, 5); -pub const __MEMORY_SCOPE_SYSTEM = @as(c_int, 0); -pub const __MEMORY_SCOPE_DEVICE = @as(c_int, 1); -pub const __MEMORY_SCOPE_WRKGRP = @as(c_int, 2); -pub const __MEMORY_SCOPE_WVFRNT = @as(c_int, 3); -pub const __MEMORY_SCOPE_SINGLE = @as(c_int, 4); -pub const __OPENCL_MEMORY_SCOPE_WORK_ITEM = @as(c_int, 0); -pub const __OPENCL_MEMORY_SCOPE_WORK_GROUP = @as(c_int, 1); -pub const __OPENCL_MEMORY_SCOPE_DEVICE = @as(c_int, 2); -pub const __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES = @as(c_int, 3); -pub const __OPENCL_MEMORY_SCOPE_SUB_GROUP = @as(c_int, 4); -pub const __FPCLASS_SNAN = @as(c_int, 0x0001); -pub const __FPCLASS_QNAN = @as(c_int, 0x0002); -pub const __FPCLASS_NEGINF = @as(c_int, 0x0004); -pub const __FPCLASS_NEGNORMAL = @as(c_int, 0x0008); -pub const __FPCLASS_NEGSUBNORMAL = @as(c_int, 0x0010); -pub const __FPCLASS_NEGZERO = @as(c_int, 0x0020); -pub const __FPCLASS_POSZERO = @as(c_int, 0x0040); -pub const __FPCLASS_POSSUBNORMAL = @as(c_int, 0x0080); -pub const __FPCLASS_POSNORMAL = @as(c_int, 0x0100); -pub const __FPCLASS_POSINF = @as(c_int, 0x0200); -pub const __PRAGMA_REDEFINE_EXTNAME = @as(c_int, 1); -pub const __VERSION__ = "Clang 18.1.6 (https://github.com/ziglang/zig-bootstrap 98bc6bf4fc4009888d33941daf6b600d20a42a56)"; -pub const __OBJC_BOOL_IS_BOOL = @as(c_int, 0); -pub const __CONSTANT_CFSTRINGS__ = @as(c_int, 1); -pub const __SEH__ = @as(c_int, 1); -pub const __clang_literal_encoding__ = "UTF-8"; -pub const __clang_wide_literal_encoding__ = "UTF-16"; -pub const __ORDER_LITTLE_ENDIAN__ = @as(c_int, 1234); -pub const __ORDER_BIG_ENDIAN__ = @as(c_int, 4321); -pub const __ORDER_PDP_ENDIAN__ = @as(c_int, 3412); -pub const __BYTE_ORDER__ = __ORDER_LITTLE_ENDIAN__; -pub const __LITTLE_ENDIAN__ = @as(c_int, 1); -pub const __CHAR_BIT__ = @as(c_int, 8); -pub const __BOOL_WIDTH__ = @as(c_int, 8); -pub const __SHRT_WIDTH__ = @as(c_int, 16); -pub const __INT_WIDTH__ = @as(c_int, 32); -pub const __LONG_WIDTH__ = @as(c_int, 32); -pub const __LLONG_WIDTH__ = @as(c_int, 64); -pub const __BITINT_MAXWIDTH__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 8388608, .decimal); -pub const __SCHAR_MAX__ = @as(c_int, 127); -pub const __SHRT_MAX__ = @as(c_int, 32767); -pub const __INT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __LONG_MAX__ = @as(c_long, 2147483647); -pub const __LONG_LONG_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __WCHAR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); -pub const __WCHAR_WIDTH__ = @as(c_int, 16); -pub const __WINT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); -pub const __WINT_WIDTH__ = @as(c_int, 16); -pub const __INTMAX_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __INTMAX_WIDTH__ = @as(c_int, 64); -pub const __SIZE_MAX__ = @as(c_ulonglong, 18446744073709551615); -pub const __SIZE_WIDTH__ = @as(c_int, 64); -pub const __UINTMAX_MAX__ = @as(c_ulonglong, 18446744073709551615); -pub const __UINTMAX_WIDTH__ = @as(c_int, 64); -pub const __PTRDIFF_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __PTRDIFF_WIDTH__ = @as(c_int, 64); -pub const __INTPTR_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __INTPTR_WIDTH__ = @as(c_int, 64); -pub const __UINTPTR_MAX__ = @as(c_ulonglong, 18446744073709551615); -pub const __UINTPTR_WIDTH__ = @as(c_int, 64); -pub const __SIZEOF_DOUBLE__ = @as(c_int, 8); -pub const __SIZEOF_FLOAT__ = @as(c_int, 4); -pub const __SIZEOF_INT__ = @as(c_int, 4); -pub const __SIZEOF_LONG__ = @as(c_int, 4); -pub const __SIZEOF_LONG_DOUBLE__ = @as(c_int, 16); -pub const __SIZEOF_LONG_LONG__ = @as(c_int, 8); -pub const __SIZEOF_POINTER__ = @as(c_int, 8); -pub const __SIZEOF_SHORT__ = @as(c_int, 2); -pub const __SIZEOF_PTRDIFF_T__ = @as(c_int, 8); -pub const __SIZEOF_SIZE_T__ = @as(c_int, 8); -pub const __SIZEOF_WCHAR_T__ = @as(c_int, 2); -pub const __SIZEOF_WINT_T__ = @as(c_int, 2); -pub const __SIZEOF_INT128__ = @as(c_int, 16); -pub const __INTMAX_TYPE__ = c_longlong; -pub const __INTMAX_FMTd__ = "lld"; -pub const __INTMAX_FMTi__ = "lli"; -pub const __INTMAX_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `LL`"); -// (no file):94:9 -pub const __UINTMAX_TYPE__ = c_ulonglong; -pub const __UINTMAX_FMTo__ = "llo"; -pub const __UINTMAX_FMTu__ = "llu"; -pub const __UINTMAX_FMTx__ = "llx"; -pub const __UINTMAX_FMTX__ = "llX"; -pub const __UINTMAX_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `ULL`"); -// (no file):100:9 -pub const __PTRDIFF_TYPE__ = c_longlong; -pub const __PTRDIFF_FMTd__ = "lld"; -pub const __PTRDIFF_FMTi__ = "lli"; -pub const __INTPTR_TYPE__ = c_longlong; -pub const __INTPTR_FMTd__ = "lld"; -pub const __INTPTR_FMTi__ = "lli"; -pub const __SIZE_TYPE__ = c_ulonglong; -pub const __SIZE_FMTo__ = "llo"; -pub const __SIZE_FMTu__ = "llu"; -pub const __SIZE_FMTx__ = "llx"; -pub const __SIZE_FMTX__ = "llX"; -pub const __WCHAR_TYPE__ = c_ushort; -pub const __WINT_TYPE__ = c_ushort; -pub const __SIG_ATOMIC_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __SIG_ATOMIC_WIDTH__ = @as(c_int, 32); -pub const __CHAR16_TYPE__ = c_ushort; -pub const __CHAR32_TYPE__ = c_uint; -pub const __UINTPTR_TYPE__ = c_ulonglong; -pub const __UINTPTR_FMTo__ = "llo"; -pub const __UINTPTR_FMTu__ = "llu"; -pub const __UINTPTR_FMTx__ = "llx"; -pub const __UINTPTR_FMTX__ = "llX"; -pub const __FLT16_DENORM_MIN__ = @as(f16, 5.9604644775390625e-8); -pub const __FLT16_HAS_DENORM__ = @as(c_int, 1); -pub const __FLT16_DIG__ = @as(c_int, 3); -pub const __FLT16_DECIMAL_DIG__ = @as(c_int, 5); -pub const __FLT16_EPSILON__ = @as(f16, 9.765625e-4); -pub const __FLT16_HAS_INFINITY__ = @as(c_int, 1); -pub const __FLT16_HAS_QUIET_NAN__ = @as(c_int, 1); -pub const __FLT16_MANT_DIG__ = @as(c_int, 11); -pub const __FLT16_MAX_10_EXP__ = @as(c_int, 4); -pub const __FLT16_MAX_EXP__ = @as(c_int, 16); -pub const __FLT16_MAX__ = @as(f16, 6.5504e+4); -pub const __FLT16_MIN_10_EXP__ = -@as(c_int, 4); -pub const __FLT16_MIN_EXP__ = -@as(c_int, 13); -pub const __FLT16_MIN__ = @as(f16, 6.103515625e-5); -pub const __FLT_DENORM_MIN__ = @as(f32, 1.40129846e-45); -pub const __FLT_HAS_DENORM__ = @as(c_int, 1); -pub const __FLT_DIG__ = @as(c_int, 6); -pub const __FLT_DECIMAL_DIG__ = @as(c_int, 9); -pub const __FLT_EPSILON__ = @as(f32, 1.19209290e-7); -pub const __FLT_HAS_INFINITY__ = @as(c_int, 1); -pub const __FLT_HAS_QUIET_NAN__ = @as(c_int, 1); -pub const __FLT_MANT_DIG__ = @as(c_int, 24); -pub const __FLT_MAX_10_EXP__ = @as(c_int, 38); -pub const __FLT_MAX_EXP__ = @as(c_int, 128); -pub const __FLT_MAX__ = @as(f32, 3.40282347e+38); -pub const __FLT_MIN_10_EXP__ = -@as(c_int, 37); -pub const __FLT_MIN_EXP__ = -@as(c_int, 125); -pub const __FLT_MIN__ = @as(f32, 1.17549435e-38); -pub const __DBL_DENORM_MIN__ = @as(f64, 4.9406564584124654e-324); -pub const __DBL_HAS_DENORM__ = @as(c_int, 1); -pub const __DBL_DIG__ = @as(c_int, 15); -pub const __DBL_DECIMAL_DIG__ = @as(c_int, 17); -pub const __DBL_EPSILON__ = @as(f64, 2.2204460492503131e-16); -pub const __DBL_HAS_INFINITY__ = @as(c_int, 1); -pub const __DBL_HAS_QUIET_NAN__ = @as(c_int, 1); -pub const __DBL_MANT_DIG__ = @as(c_int, 53); -pub const __DBL_MAX_10_EXP__ = @as(c_int, 308); -pub const __DBL_MAX_EXP__ = @as(c_int, 1024); -pub const __DBL_MAX__ = @as(f64, 1.7976931348623157e+308); -pub const __DBL_MIN_10_EXP__ = -@as(c_int, 307); -pub const __DBL_MIN_EXP__ = -@as(c_int, 1021); -pub const __DBL_MIN__ = @as(f64, 2.2250738585072014e-308); -pub const __LDBL_DENORM_MIN__ = @as(c_longdouble, 3.64519953188247460253e-4951); -pub const __LDBL_HAS_DENORM__ = @as(c_int, 1); -pub const __LDBL_DIG__ = @as(c_int, 18); -pub const __LDBL_DECIMAL_DIG__ = @as(c_int, 21); -pub const __LDBL_EPSILON__ = @as(c_longdouble, 1.08420217248550443401e-19); -pub const __LDBL_HAS_INFINITY__ = @as(c_int, 1); -pub const __LDBL_HAS_QUIET_NAN__ = @as(c_int, 1); -pub const __LDBL_MANT_DIG__ = @as(c_int, 64); -pub const __LDBL_MAX_10_EXP__ = @as(c_int, 4932); -pub const __LDBL_MAX_EXP__ = @as(c_int, 16384); -pub const __LDBL_MAX__ = @as(c_longdouble, 1.18973149535723176502e+4932); -pub const __LDBL_MIN_10_EXP__ = -@as(c_int, 4931); -pub const __LDBL_MIN_EXP__ = -@as(c_int, 16381); -pub const __LDBL_MIN__ = @as(c_longdouble, 3.36210314311209350626e-4932); -pub const __POINTER_WIDTH__ = @as(c_int, 64); -pub const __BIGGEST_ALIGNMENT__ = @as(c_int, 16); -pub const __WCHAR_UNSIGNED__ = @as(c_int, 1); -pub const __WINT_UNSIGNED__ = @as(c_int, 1); -pub const __INT8_TYPE__ = i8; -pub const __INT8_FMTd__ = "hhd"; -pub const __INT8_FMTi__ = "hhi"; -pub const __INT8_C_SUFFIX__ = ""; -pub const __INT16_TYPE__ = c_short; -pub const __INT16_FMTd__ = "hd"; -pub const __INT16_FMTi__ = "hi"; -pub const __INT16_C_SUFFIX__ = ""; -pub const __INT32_TYPE__ = c_int; -pub const __INT32_FMTd__ = "d"; -pub const __INT32_FMTi__ = "i"; -pub const __INT32_C_SUFFIX__ = ""; -pub const __INT64_TYPE__ = c_longlong; -pub const __INT64_FMTd__ = "lld"; -pub const __INT64_FMTi__ = "lli"; -pub const __INT64_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `LL`"); -// (no file):198:9 -pub const __UINT8_TYPE__ = u8; -pub const __UINT8_FMTo__ = "hho"; -pub const __UINT8_FMTu__ = "hhu"; -pub const __UINT8_FMTx__ = "hhx"; -pub const __UINT8_FMTX__ = "hhX"; -pub const __UINT8_C_SUFFIX__ = ""; -pub const __UINT8_MAX__ = @as(c_int, 255); -pub const __INT8_MAX__ = @as(c_int, 127); -pub const __UINT16_TYPE__ = c_ushort; -pub const __UINT16_FMTo__ = "ho"; -pub const __UINT16_FMTu__ = "hu"; -pub const __UINT16_FMTx__ = "hx"; -pub const __UINT16_FMTX__ = "hX"; -pub const __UINT16_C_SUFFIX__ = ""; -pub const __UINT16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); -pub const __INT16_MAX__ = @as(c_int, 32767); -pub const __UINT32_TYPE__ = c_uint; -pub const __UINT32_FMTo__ = "o"; -pub const __UINT32_FMTu__ = "u"; -pub const __UINT32_FMTx__ = "x"; -pub const __UINT32_FMTX__ = "X"; -pub const __UINT32_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `U`"); -// (no file):220:9 -pub const __UINT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal); -pub const __INT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __UINT64_TYPE__ = c_ulonglong; -pub const __UINT64_FMTo__ = "llo"; -pub const __UINT64_FMTu__ = "llu"; -pub const __UINT64_FMTx__ = "llx"; -pub const __UINT64_FMTX__ = "llX"; -pub const __UINT64_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `ULL`"); -// (no file):228:9 -pub const __UINT64_MAX__ = @as(c_ulonglong, 18446744073709551615); -pub const __INT64_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __INT_LEAST8_TYPE__ = i8; -pub const __INT_LEAST8_MAX__ = @as(c_int, 127); -pub const __INT_LEAST8_WIDTH__ = @as(c_int, 8); -pub const __INT_LEAST8_FMTd__ = "hhd"; -pub const __INT_LEAST8_FMTi__ = "hhi"; -pub const __UINT_LEAST8_TYPE__ = u8; -pub const __UINT_LEAST8_MAX__ = @as(c_int, 255); -pub const __UINT_LEAST8_FMTo__ = "hho"; -pub const __UINT_LEAST8_FMTu__ = "hhu"; -pub const __UINT_LEAST8_FMTx__ = "hhx"; -pub const __UINT_LEAST8_FMTX__ = "hhX"; -pub const __INT_LEAST16_TYPE__ = c_short; -pub const __INT_LEAST16_MAX__ = @as(c_int, 32767); -pub const __INT_LEAST16_WIDTH__ = @as(c_int, 16); -pub const __INT_LEAST16_FMTd__ = "hd"; -pub const __INT_LEAST16_FMTi__ = "hi"; -pub const __UINT_LEAST16_TYPE__ = c_ushort; -pub const __UINT_LEAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); -pub const __UINT_LEAST16_FMTo__ = "ho"; -pub const __UINT_LEAST16_FMTu__ = "hu"; -pub const __UINT_LEAST16_FMTx__ = "hx"; -pub const __UINT_LEAST16_FMTX__ = "hX"; -pub const __INT_LEAST32_TYPE__ = c_int; -pub const __INT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __INT_LEAST32_WIDTH__ = @as(c_int, 32); -pub const __INT_LEAST32_FMTd__ = "d"; -pub const __INT_LEAST32_FMTi__ = "i"; -pub const __UINT_LEAST32_TYPE__ = c_uint; -pub const __UINT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal); -pub const __UINT_LEAST32_FMTo__ = "o"; -pub const __UINT_LEAST32_FMTu__ = "u"; -pub const __UINT_LEAST32_FMTx__ = "x"; -pub const __UINT_LEAST32_FMTX__ = "X"; -pub const __INT_LEAST64_TYPE__ = c_longlong; -pub const __INT_LEAST64_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __INT_LEAST64_WIDTH__ = @as(c_int, 64); -pub const __INT_LEAST64_FMTd__ = "lld"; -pub const __INT_LEAST64_FMTi__ = "lli"; -pub const __UINT_LEAST64_TYPE__ = c_ulonglong; -pub const __UINT_LEAST64_MAX__ = @as(c_ulonglong, 18446744073709551615); -pub const __UINT_LEAST64_FMTo__ = "llo"; -pub const __UINT_LEAST64_FMTu__ = "llu"; -pub const __UINT_LEAST64_FMTx__ = "llx"; -pub const __UINT_LEAST64_FMTX__ = "llX"; -pub const __INT_FAST8_TYPE__ = i8; -pub const __INT_FAST8_MAX__ = @as(c_int, 127); -pub const __INT_FAST8_WIDTH__ = @as(c_int, 8); -pub const __INT_FAST8_FMTd__ = "hhd"; -pub const __INT_FAST8_FMTi__ = "hhi"; -pub const __UINT_FAST8_TYPE__ = u8; -pub const __UINT_FAST8_MAX__ = @as(c_int, 255); -pub const __UINT_FAST8_FMTo__ = "hho"; -pub const __UINT_FAST8_FMTu__ = "hhu"; -pub const __UINT_FAST8_FMTx__ = "hhx"; -pub const __UINT_FAST8_FMTX__ = "hhX"; -pub const __INT_FAST16_TYPE__ = c_short; -pub const __INT_FAST16_MAX__ = @as(c_int, 32767); -pub const __INT_FAST16_WIDTH__ = @as(c_int, 16); -pub const __INT_FAST16_FMTd__ = "hd"; -pub const __INT_FAST16_FMTi__ = "hi"; -pub const __UINT_FAST16_TYPE__ = c_ushort; -pub const __UINT_FAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); -pub const __UINT_FAST16_FMTo__ = "ho"; -pub const __UINT_FAST16_FMTu__ = "hu"; -pub const __UINT_FAST16_FMTx__ = "hx"; -pub const __UINT_FAST16_FMTX__ = "hX"; -pub const __INT_FAST32_TYPE__ = c_int; -pub const __INT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __INT_FAST32_WIDTH__ = @as(c_int, 32); -pub const __INT_FAST32_FMTd__ = "d"; -pub const __INT_FAST32_FMTi__ = "i"; -pub const __UINT_FAST32_TYPE__ = c_uint; -pub const __UINT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal); -pub const __UINT_FAST32_FMTo__ = "o"; -pub const __UINT_FAST32_FMTu__ = "u"; -pub const __UINT_FAST32_FMTx__ = "x"; -pub const __UINT_FAST32_FMTX__ = "X"; -pub const __INT_FAST64_TYPE__ = c_longlong; -pub const __INT_FAST64_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __INT_FAST64_WIDTH__ = @as(c_int, 64); -pub const __INT_FAST64_FMTd__ = "lld"; -pub const __INT_FAST64_FMTi__ = "lli"; -pub const __UINT_FAST64_TYPE__ = c_ulonglong; -pub const __UINT_FAST64_MAX__ = @as(c_ulonglong, 18446744073709551615); -pub const __UINT_FAST64_FMTo__ = "llo"; -pub const __UINT_FAST64_FMTu__ = "llu"; -pub const __UINT_FAST64_FMTx__ = "llx"; -pub const __UINT_FAST64_FMTX__ = "llX"; -pub const __USER_LABEL_PREFIX__ = ""; -pub const __FINITE_MATH_ONLY__ = @as(c_int, 0); -pub const __GNUC_STDC_INLINE__ = @as(c_int, 1); -pub const __GCC_ATOMIC_TEST_AND_SET_TRUEVAL = @as(c_int, 1); -pub const __CLANG_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_INT_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_INT_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2); -pub const __NO_INLINE__ = @as(c_int, 1); -pub const __PIC__ = @as(c_int, 2); -pub const __pic__ = @as(c_int, 2); -pub const __FLT_RADIX__ = @as(c_int, 2); -pub const __DECIMAL_DIG__ = __LDBL_DECIMAL_DIG__; -pub const __GCC_ASM_FLAG_OUTPUTS__ = @as(c_int, 1); -pub const __code_model_small__ = @as(c_int, 1); -pub const __amd64__ = @as(c_int, 1); -pub const __amd64 = @as(c_int, 1); -pub const __x86_64 = @as(c_int, 1); -pub const __x86_64__ = @as(c_int, 1); -pub const __SEG_GS = @as(c_int, 1); -pub const __SEG_FS = @as(c_int, 1); -pub const __seg_gs = @compileError("unable to translate macro: undefined identifier `address_space`"); -// (no file):356:9 -pub const __seg_fs = @compileError("unable to translate macro: undefined identifier `address_space`"); -// (no file):357:9 -pub const __corei7 = @as(c_int, 1); -pub const __corei7__ = @as(c_int, 1); -pub const __tune_corei7__ = @as(c_int, 1); -pub const __REGISTER_PREFIX__ = ""; -pub const __NO_MATH_INLINES = @as(c_int, 1); -pub const __AES__ = @as(c_int, 1); -pub const __PCLMUL__ = @as(c_int, 1); -pub const __LAHF_SAHF__ = @as(c_int, 1); -pub const __LZCNT__ = @as(c_int, 1); -pub const __RDRND__ = @as(c_int, 1); -pub const __FSGSBASE__ = @as(c_int, 1); -pub const __BMI__ = @as(c_int, 1); -pub const __BMI2__ = @as(c_int, 1); -pub const __POPCNT__ = @as(c_int, 1); -pub const __PRFCHW__ = @as(c_int, 1); -pub const __RDSEED__ = @as(c_int, 1); -pub const __ADX__ = @as(c_int, 1); -pub const __MOVBE__ = @as(c_int, 1); -pub const __FMA__ = @as(c_int, 1); -pub const __F16C__ = @as(c_int, 1); -pub const __EVEX512__ = @as(c_int, 1); -pub const __AVX512CD__ = @as(c_int, 1); -pub const __AVX512VNNI__ = @as(c_int, 1); -pub const __AVX512DQ__ = @as(c_int, 1); -pub const __AVX512BW__ = @as(c_int, 1); -pub const __AVX512VL__ = @as(c_int, 1); -pub const __EVEX256__ = @as(c_int, 1); -pub const __FXSR__ = @as(c_int, 1); -pub const __XSAVE__ = @as(c_int, 1); -pub const __XSAVEOPT__ = @as(c_int, 1); -pub const __XSAVEC__ = @as(c_int, 1); -pub const __XSAVES__ = @as(c_int, 1); -pub const __CLFLUSHOPT__ = @as(c_int, 1); -pub const __CLWB__ = @as(c_int, 1); -pub const __INVPCID__ = @as(c_int, 1); -pub const __CRC32__ = @as(c_int, 1); -pub const __AVX512F__ = @as(c_int, 1); -pub const __AVX2__ = @as(c_int, 1); -pub const __AVX__ = @as(c_int, 1); -pub const __SSE4_2__ = @as(c_int, 1); -pub const __SSE4_1__ = @as(c_int, 1); -pub const __SSSE3__ = @as(c_int, 1); -pub const __SSE3__ = @as(c_int, 1); -pub const __SSE2__ = @as(c_int, 1); -pub const __SSE2_MATH__ = @as(c_int, 1); -pub const __SSE__ = @as(c_int, 1); -pub const __SSE_MATH__ = @as(c_int, 1); -pub const __MMX__ = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 = @as(c_int, 1); -pub const __SIZEOF_FLOAT128__ = @as(c_int, 16); -pub const _WIN32 = @as(c_int, 1); -pub const _WIN64 = @as(c_int, 1); -pub const WIN32 = @as(c_int, 1); -pub const __WIN32 = @as(c_int, 1); -pub const __WIN32__ = @as(c_int, 1); -pub const WINNT = @as(c_int, 1); -pub const __WINNT = @as(c_int, 1); -pub const __WINNT__ = @as(c_int, 1); -pub const WIN64 = @as(c_int, 1); -pub const __WIN64 = @as(c_int, 1); -pub const __WIN64__ = @as(c_int, 1); -pub const __MINGW64__ = @as(c_int, 1); -pub const __MSVCRT__ = @as(c_int, 1); -pub const __MINGW32__ = @as(c_int, 1); -pub const __declspec = @compileError("unable to translate C expr: unexpected token '__attribute__'"); -// (no file):426:9 -pub const _cdecl = @compileError("unable to translate macro: undefined identifier `__cdecl__`"); -// (no file):427:9 -pub const __cdecl = @compileError("unable to translate macro: undefined identifier `__cdecl__`"); -// (no file):428:9 -pub const _stdcall = @compileError("unable to translate macro: undefined identifier `__stdcall__`"); -// (no file):429:9 -pub const __stdcall = @compileError("unable to translate macro: undefined identifier `__stdcall__`"); -// (no file):430:9 -pub const _fastcall = @compileError("unable to translate macro: undefined identifier `__fastcall__`"); -// (no file):431:9 -pub const __fastcall = @compileError("unable to translate macro: undefined identifier `__fastcall__`"); -// (no file):432:9 -pub const _thiscall = @compileError("unable to translate macro: undefined identifier `__thiscall__`"); -// (no file):433:9 -pub const __thiscall = @compileError("unable to translate macro: undefined identifier `__thiscall__`"); -// (no file):434:9 -pub const _pascal = @compileError("unable to translate macro: undefined identifier `__pascal__`"); -// (no file):435:9 -pub const __pascal = @compileError("unable to translate macro: undefined identifier `__pascal__`"); -// (no file):436:9 -pub const __STDC__ = @as(c_int, 1); -pub const __STDC_HOSTED__ = @as(c_int, 1); -pub const __STDC_VERSION__ = @as(c_long, 201710); -pub const __STDC_UTF_16__ = @as(c_int, 1); -pub const __STDC_UTF_32__ = @as(c_int, 1); -pub const _DEBUG = @as(c_int, 1); -pub const EXTERN = @compileError("unable to translate C expr: unexpected token 'extern'"); -// cimgui2.h:1:9 -pub const CIMGUI_API = EXTERN; -pub const CONST = @compileError("unable to translate C expr: unexpected token 'const'"); -// cimgui2.h:3:9 -pub const __STDBOOL_H = ""; -pub const __bool_true_false_are_defined = @as(c_int, 1); -pub const @"bool" = bool; -pub const @"true" = @as(c_int, 1); -pub const @"false" = @as(c_int, 0); -pub const __CLANG_STDINT_H = ""; -pub const __int_least64_t = i64; -pub const __uint_least64_t = u64; -pub const __int_least32_t = i64; -pub const __uint_least32_t = u64; -pub const __int_least16_t = i64; -pub const __uint_least16_t = u64; -pub const __int_least8_t = i64; -pub const __uint_least8_t = u64; -pub const __uint32_t_defined = ""; -pub const __int8_t_defined = ""; -pub const __stdint_join3 = @compileError("unable to translate C expr: unexpected token '##'"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:287:9 -pub const __intptr_t_defined = ""; -pub const _INTPTR_T = ""; -pub const _UINTPTR_T = ""; -pub const __int_c_join = @compileError("unable to translate C expr: unexpected token '##'"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:324:9 -pub inline fn __int_c(v: anytype, suffix: anytype) @TypeOf(__int_c_join(v, suffix)) { - _ = &v; - _ = &suffix; - return __int_c_join(v, suffix); -} -pub const __uint_c = @compileError("unable to translate macro: undefined identifier `U`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:326:9 -pub const __int64_c_suffix = __INT64_C_SUFFIX__; -pub const __int32_c_suffix = __INT64_C_SUFFIX__; -pub const __int16_c_suffix = __INT64_C_SUFFIX__; -pub const __int8_c_suffix = __INT64_C_SUFFIX__; -pub inline fn INT64_C(v: anytype) @TypeOf(__int_c(v, __int64_c_suffix)) { - _ = &v; - return __int_c(v, __int64_c_suffix); -} -pub inline fn UINT64_C(v: anytype) @TypeOf(__uint_c(v, __int64_c_suffix)) { - _ = &v; - return __uint_c(v, __int64_c_suffix); -} -pub inline fn INT32_C(v: anytype) @TypeOf(__int_c(v, __int32_c_suffix)) { - _ = &v; - return __int_c(v, __int32_c_suffix); -} -pub inline fn UINT32_C(v: anytype) @TypeOf(__uint_c(v, __int32_c_suffix)) { - _ = &v; - return __uint_c(v, __int32_c_suffix); -} -pub inline fn INT16_C(v: anytype) @TypeOf(__int_c(v, __int16_c_suffix)) { - _ = &v; - return __int_c(v, __int16_c_suffix); -} -pub inline fn UINT16_C(v: anytype) @TypeOf(__uint_c(v, __int16_c_suffix)) { - _ = &v; - return __uint_c(v, __int16_c_suffix); -} -pub inline fn INT8_C(v: anytype) @TypeOf(__int_c(v, __int8_c_suffix)) { - _ = &v; - return __int_c(v, __int8_c_suffix); -} -pub inline fn UINT8_C(v: anytype) @TypeOf(__uint_c(v, __int8_c_suffix)) { - _ = &v; - return __uint_c(v, __int8_c_suffix); -} -pub const INT64_MAX = INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal)); -pub const INT64_MIN = -INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal)) - @as(c_int, 1); -pub const UINT64_MAX = UINT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 18446744073709551615, .decimal)); -pub const __INT_LEAST64_MIN = INT64_MIN; -pub const __INT_LEAST64_MAX = INT64_MAX; -pub const __UINT_LEAST64_MAX = UINT64_MAX; -pub const __INT_LEAST32_MIN = INT64_MIN; -pub const __INT_LEAST32_MAX = INT64_MAX; -pub const __UINT_LEAST32_MAX = UINT64_MAX; -pub const __INT_LEAST16_MIN = INT64_MIN; -pub const __INT_LEAST16_MAX = INT64_MAX; -pub const __UINT_LEAST16_MAX = UINT64_MAX; -pub const __INT_LEAST8_MIN = INT64_MIN; -pub const __INT_LEAST8_MAX = INT64_MAX; -pub const __UINT_LEAST8_MAX = UINT64_MAX; -pub const INT_LEAST64_MIN = __INT_LEAST64_MIN; -pub const INT_LEAST64_MAX = __INT_LEAST64_MAX; -pub const UINT_LEAST64_MAX = __UINT_LEAST64_MAX; -pub const INT_FAST64_MIN = __INT_LEAST64_MIN; -pub const INT_FAST64_MAX = __INT_LEAST64_MAX; -pub const UINT_FAST64_MAX = __UINT_LEAST64_MAX; -pub const INT32_MAX = INT32_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal)); -pub const INT32_MIN = -INT32_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal)) - @as(c_int, 1); -pub const UINT32_MAX = UINT32_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 4294967295, .decimal)); -pub const INT_LEAST32_MIN = __INT_LEAST32_MIN; -pub const INT_LEAST32_MAX = __INT_LEAST32_MAX; -pub const UINT_LEAST32_MAX = __UINT_LEAST32_MAX; -pub const INT_FAST32_MIN = __INT_LEAST32_MIN; -pub const INT_FAST32_MAX = __INT_LEAST32_MAX; -pub const UINT_FAST32_MAX = __UINT_LEAST32_MAX; -pub const INT16_MAX = INT16_C(@as(c_int, 32767)); -pub const INT16_MIN = -INT16_C(@as(c_int, 32767)) - @as(c_int, 1); -pub const UINT16_MAX = UINT16_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal)); -pub const INT_LEAST16_MIN = __INT_LEAST16_MIN; -pub const INT_LEAST16_MAX = __INT_LEAST16_MAX; -pub const UINT_LEAST16_MAX = __UINT_LEAST16_MAX; -pub const INT_FAST16_MIN = __INT_LEAST16_MIN; -pub const INT_FAST16_MAX = __INT_LEAST16_MAX; -pub const UINT_FAST16_MAX = __UINT_LEAST16_MAX; -pub const INT8_MAX = INT8_C(@as(c_int, 127)); -pub const INT8_MIN = -INT8_C(@as(c_int, 127)) - @as(c_int, 1); -pub const UINT8_MAX = UINT8_C(@as(c_int, 255)); -pub const INT_LEAST8_MIN = __INT_LEAST8_MIN; -pub const INT_LEAST8_MAX = __INT_LEAST8_MAX; -pub const UINT_LEAST8_MAX = __UINT_LEAST8_MAX; -pub const INT_FAST8_MIN = __INT_LEAST8_MIN; -pub const INT_FAST8_MAX = __INT_LEAST8_MAX; -pub const UINT_FAST8_MAX = __UINT_LEAST8_MAX; -pub const __INTN_MIN = @compileError("unable to translate macro: undefined identifier `INT`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:871:10 -pub const __INTN_MAX = @compileError("unable to translate macro: undefined identifier `INT`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:872:10 -pub const __UINTN_MAX = @compileError("unable to translate macro: undefined identifier `UINT`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:873:9 -pub const __INTN_C = @compileError("unable to translate macro: undefined identifier `INT`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:874:10 -pub const __UINTN_C = @compileError("unable to translate macro: undefined identifier `UINT`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:875:9 -pub const INTPTR_MIN = -__INTPTR_MAX__ - @as(c_int, 1); -pub const INTPTR_MAX = __INTPTR_MAX__; -pub const UINTPTR_MAX = __UINTPTR_MAX__; -pub const PTRDIFF_MIN = -__PTRDIFF_MAX__ - @as(c_int, 1); -pub const PTRDIFF_MAX = __PTRDIFF_MAX__; -pub const SIZE_MAX = __SIZE_MAX__; -pub const INTMAX_MIN = -__INTMAX_MAX__ - @as(c_int, 1); -pub const INTMAX_MAX = __INTMAX_MAX__; -pub const UINTMAX_MAX = __UINTMAX_MAX__; -pub const SIG_ATOMIC_MIN = __INTN_MIN(__SIG_ATOMIC_WIDTH__); -pub const SIG_ATOMIC_MAX = __INTN_MAX(__SIG_ATOMIC_WIDTH__); -pub const WINT_MIN = __UINTN_C(__WINT_WIDTH__, @as(c_int, 0)); -pub const WINT_MAX = __UINTN_MAX(__WINT_WIDTH__); -pub const WCHAR_MAX = __WCHAR_MAX__; -pub const WCHAR_MIN = __UINTN_C(__WCHAR_WIDTH__, @as(c_int, 0)); -pub inline fn INTMAX_C(v: anytype) @TypeOf(__int_c(v, __INTMAX_C_SUFFIX__)) { - _ = &v; - return __int_c(v, __INTMAX_C_SUFFIX__); -} -pub inline fn UINTMAX_C(v: anytype) @TypeOf(__int_c(v, __UINTMAX_C_SUFFIX__)) { - _ = &v; - return __int_c(v, __UINTMAX_C_SUFFIX__); -} -pub const __STDDEF_H = ""; -pub const __need_ptrdiff_t = ""; -pub const __need_size_t = ""; -pub const __need_wchar_t = ""; -pub const __need_NULL = ""; -pub const __need_max_align_t = ""; -pub const __need_offsetof = ""; -pub const _PTRDIFF_T = ""; -pub const _SIZE_T = ""; -pub const _WCHAR_T = ""; -pub const NULL = @import("std").zig.c_translation.cast(?*anyopaque, @as(c_int, 0)); -pub const __CLANG_MAX_ALIGN_T_DEFINED = ""; -pub const offsetof = @compileError("unable to translate C expr: unexpected token 'an identifier'"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stddef_offsetof.h:16:9 -pub const __STDARG_H = ""; -pub const __need___va_list = ""; -pub const __need_va_list = ""; -pub const __need_va_arg = ""; -pub const __need___va_copy = ""; -pub const __need_va_copy = ""; -pub const __GNUC_VA_LIST = ""; -pub const _VA_LIST = ""; -pub const va_start = @compileError("unable to translate macro: undefined identifier `__builtin_va_start`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg_va_arg.h:17:9 -pub const va_end = @compileError("unable to translate macro: undefined identifier `__builtin_va_end`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg_va_arg.h:19:9 -pub const va_arg = @compileError("unable to translate C expr: unexpected token 'an identifier'"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg_va_arg.h:20:9 -pub const __va_copy = @compileError("unable to translate macro: undefined identifier `__builtin_va_copy`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg___va_copy.h:11:9 -pub const va_copy = @compileError("unable to translate macro: undefined identifier `__builtin_va_copy`"); -// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg_va_copy.h:11:9 -pub const CIMGUI_DEFINE_ENUMS_AND_STRUCTS = @as(c_int, 1); -pub const IMGUI_HAS_DOCK = @as(c_int, 1); - -[Process exited 0] + +pub const __builtin_bswap16 = @import("std").zig.c_builtins.__builtin_bswap16; +pub const __builtin_bswap32 = @import("std").zig.c_builtins.__builtin_bswap32; +pub const __builtin_bswap64 = @import("std").zig.c_builtins.__builtin_bswap64; +pub const __builtin_signbit = @import("std").zig.c_builtins.__builtin_signbit; +pub const __builtin_signbitf = @import("std").zig.c_builtins.__builtin_signbitf; +pub const __builtin_popcount = @import("std").zig.c_builtins.__builtin_popcount; +pub const __builtin_ctz = @import("std").zig.c_builtins.__builtin_ctz; +pub const __builtin_clz = @import("std").zig.c_builtins.__builtin_clz; +pub const __builtin_sqrt = @import("std").zig.c_builtins.__builtin_sqrt; +pub const __builtin_sqrtf = @import("std").zig.c_builtins.__builtin_sqrtf; +pub const __builtin_sin = @import("std").zig.c_builtins.__builtin_sin; +pub const __builtin_sinf = @import("std").zig.c_builtins.__builtin_sinf; +pub const __builtin_cos = @import("std").zig.c_builtins.__builtin_cos; +pub const __builtin_cosf = @import("std").zig.c_builtins.__builtin_cosf; +pub const __builtin_exp = @import("std").zig.c_builtins.__builtin_exp; +pub const __builtin_expf = @import("std").zig.c_builtins.__builtin_expf; +pub const __builtin_exp2 = @import("std").zig.c_builtins.__builtin_exp2; +pub const __builtin_exp2f = @import("std").zig.c_builtins.__builtin_exp2f; +pub const __builtin_log = @import("std").zig.c_builtins.__builtin_log; +pub const __builtin_logf = @import("std").zig.c_builtins.__builtin_logf; +pub const __builtin_log2 = @import("std").zig.c_builtins.__builtin_log2; +pub const __builtin_log2f = @import("std").zig.c_builtins.__builtin_log2f; +pub const __builtin_log10 = @import("std").zig.c_builtins.__builtin_log10; +pub const __builtin_log10f = @import("std").zig.c_builtins.__builtin_log10f; +pub const __builtin_abs = @import("std").zig.c_builtins.__builtin_abs; +pub const __builtin_labs = @import("std").zig.c_builtins.__builtin_labs; +pub const __builtin_llabs = @import("std").zig.c_builtins.__builtin_llabs; +pub const __builtin_fabs = @import("std").zig.c_builtins.__builtin_fabs; +pub const __builtin_fabsf = @import("std").zig.c_builtins.__builtin_fabsf; +pub const __builtin_floor = @import("std").zig.c_builtins.__builtin_floor; +pub const __builtin_floorf = @import("std").zig.c_builtins.__builtin_floorf; +pub const __builtin_ceil = @import("std").zig.c_builtins.__builtin_ceil; +pub const __builtin_ceilf = @import("std").zig.c_builtins.__builtin_ceilf; +pub const __builtin_trunc = @import("std").zig.c_builtins.__builtin_trunc; +pub const __builtin_truncf = @import("std").zig.c_builtins.__builtin_truncf; +pub const __builtin_round = @import("std").zig.c_builtins.__builtin_round; +pub const __builtin_roundf = @import("std").zig.c_builtins.__builtin_roundf; +pub const __builtin_strlen = @import("std").zig.c_builtins.__builtin_strlen; +pub const __builtin_strcmp = @import("std").zig.c_builtins.__builtin_strcmp; +pub const __builtin_object_size = @import("std").zig.c_builtins.__builtin_object_size; +pub const __builtin___memset_chk = @import("std").zig.c_builtins.__builtin___memset_chk; +pub const __builtin_memset = @import("std").zig.c_builtins.__builtin_memset; +pub const __builtin___memcpy_chk = @import("std").zig.c_builtins.__builtin___memcpy_chk; +pub const __builtin_memcpy = @import("std").zig.c_builtins.__builtin_memcpy; +pub const __builtin_expect = @import("std").zig.c_builtins.__builtin_expect; +pub const __builtin_nanf = @import("std").zig.c_builtins.__builtin_nanf; +pub const __builtin_huge_valf = @import("std").zig.c_builtins.__builtin_huge_valf; +pub const __builtin_inff = @import("std").zig.c_builtins.__builtin_inff; +pub const __builtin_isnan = @import("std").zig.c_builtins.__builtin_isnan; +pub const __builtin_isinf = @import("std").zig.c_builtins.__builtin_isinf; +pub const __builtin_isinf_sign = @import("std").zig.c_builtins.__builtin_isinf_sign; +pub const __has_builtin = @import("std").zig.c_builtins.__has_builtin; +pub const __builtin_assume = @import("std").zig.c_builtins.__builtin_assume; +pub const __builtin_unreachable = @import("std").zig.c_builtins.__builtin_unreachable; +pub const __builtin_constant_p = @import("std").zig.c_builtins.__builtin_constant_p; +pub const __builtin_mul_overflow = @import("std").zig.c_builtins.__builtin_mul_overflow; +pub const int_least64_t = i64; +pub const uint_least64_t = u64; +pub const int_fast64_t = i64; +pub const uint_fast64_t = u64; +pub const int_least32_t = i32; +pub const uint_least32_t = u32; +pub const int_fast32_t = i32; +pub const uint_fast32_t = u32; +pub const int_least16_t = i16; +pub const uint_least16_t = u16; +pub const int_fast16_t = i16; +pub const uint_fast16_t = u16; +pub const int_least8_t = i8; +pub const uint_least8_t = u8; +pub const int_fast8_t = i8; +pub const uint_fast8_t = u8; +pub const intmax_t = c_longlong; +pub const uintmax_t = c_ulonglong; +pub const ptrdiff_t = c_longlong; +pub const wchar_t = c_ushort; +pub const max_align_t = extern struct { + __clang_max_align_nonce1: c_longlong align(8) = @import("std").mem.zeroes(c_longlong), + __clang_max_align_nonce2: c_longdouble align(16) = @import("std").mem.zeroes(c_longdouble), +}; +pub const __builtin_va_list = [*c]u8; +pub const __gnuc_va_list = __builtin_va_list; +pub const va_list = __builtin_va_list; +pub const ImVector_int = c_int; +pub const struct_ImVec4 = extern struct { + x: f32 = @import("std").mem.zeroes(f32), + y: f32 = @import("std").mem.zeroes(f32), + z: f32 = @import("std").mem.zeroes(f32), + w: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImVec4 = struct_ImVec4; +pub const ImTextureID = ?*anyopaque; +pub const ImDrawIdx = c_ushort; +pub const struct_ImVector_ImDrawIdx = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImDrawIdx = @import("std").mem.zeroes([*c]ImDrawIdx), +}; +pub const ImVector_ImDrawIdx = struct_ImVector_ImDrawIdx; +pub const struct_ImVec2 = extern struct { + x: f32 = @import("std").mem.zeroes(f32), + y: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImVec2 = struct_ImVec2; +pub const ImU32 = c_uint; +pub const struct_ImDrawVert = extern struct { + pos: ImVec2 = @import("std").mem.zeroes(ImVec2), + uv: ImVec2 = @import("std").mem.zeroes(ImVec2), + col: ImU32 = @import("std").mem.zeroes(ImU32), +}; +pub const ImDrawVert = struct_ImDrawVert; +pub const struct_ImVector_ImDrawVert = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImDrawVert = @import("std").mem.zeroes([*c]ImDrawVert), +}; +pub const ImVector_ImDrawVert = struct_ImVector_ImDrawVert; +pub const ImDrawListFlags = c_int; +pub const struct_ImVector_float = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]f32 = @import("std").mem.zeroes([*c]f32), +}; +pub const ImVector_float = struct_ImVector_float; +pub const ImWchar16 = c_ushort; +pub const ImWchar = ImWchar16; +pub const struct_ImVector_ImWchar = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImWchar = @import("std").mem.zeroes([*c]ImWchar), +}; +pub const ImVector_ImWchar = struct_ImVector_ImWchar; +// cimgui2.h:1156:18: warning: struct demoted to opaque type - has bitfield +pub const struct_ImFontGlyph = opaque {}; +pub const ImFontGlyph = struct_ImFontGlyph; +pub const struct_ImVector_ImFontGlyph = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: ?*ImFontGlyph = @import("std").mem.zeroes(?*ImFontGlyph), +}; +pub const ImVector_ImFontGlyph = struct_ImVector_ImFontGlyph; +pub const ImFontAtlasFlags = c_int; +pub const struct_ImVector_ImFontPtr = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c][*c]ImFont = @import("std").mem.zeroes([*c][*c]ImFont), +}; +pub const ImVector_ImFontPtr = struct_ImVector_ImFontPtr; +pub const struct_ImFontAtlasCustomRect = extern struct { + Width: c_ushort = @import("std").mem.zeroes(c_ushort), + Height: c_ushort = @import("std").mem.zeroes(c_ushort), + X: c_ushort = @import("std").mem.zeroes(c_ushort), + Y: c_ushort = @import("std").mem.zeroes(c_ushort), + GlyphID: c_uint = @import("std").mem.zeroes(c_uint), + GlyphAdvanceX: f32 = @import("std").mem.zeroes(f32), + GlyphOffset: ImVec2 = @import("std").mem.zeroes(ImVec2), + Font: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), +}; +pub const ImFontAtlasCustomRect = struct_ImFontAtlasCustomRect; +pub const struct_ImVector_ImFontAtlasCustomRect = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImFontAtlasCustomRect = @import("std").mem.zeroes([*c]ImFontAtlasCustomRect), +}; +pub const ImVector_ImFontAtlasCustomRect = struct_ImVector_ImFontAtlasCustomRect; +pub const struct_ImFontConfig = extern struct { + FontData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + FontDataSize: c_int = @import("std").mem.zeroes(c_int), + FontDataOwnedByAtlas: bool = @import("std").mem.zeroes(bool), + FontNo: c_int = @import("std").mem.zeroes(c_int), + SizePixels: f32 = @import("std").mem.zeroes(f32), + OversampleH: c_int = @import("std").mem.zeroes(c_int), + OversampleV: c_int = @import("std").mem.zeroes(c_int), + PixelSnapH: bool = @import("std").mem.zeroes(bool), + GlyphExtraSpacing: ImVec2 = @import("std").mem.zeroes(ImVec2), + GlyphOffset: ImVec2 = @import("std").mem.zeroes(ImVec2), + GlyphRanges: [*c]const ImWchar = @import("std").mem.zeroes([*c]const ImWchar), + GlyphMinAdvanceX: f32 = @import("std").mem.zeroes(f32), + GlyphMaxAdvanceX: f32 = @import("std").mem.zeroes(f32), + MergeMode: bool = @import("std").mem.zeroes(bool), + FontBuilderFlags: c_uint = @import("std").mem.zeroes(c_uint), + RasterizerMultiply: f32 = @import("std").mem.zeroes(f32), + EllipsisChar: ImWchar = @import("std").mem.zeroes(ImWchar), + Name: [40]u8 = @import("std").mem.zeroes([40]u8), + DstFont: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), +}; +pub const ImFontConfig = struct_ImFontConfig; +pub const struct_ImVector_ImFontConfig = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImFontConfig = @import("std").mem.zeroes([*c]ImFontConfig), +}; +pub const ImVector_ImFontConfig = struct_ImVector_ImFontConfig; +pub const struct_ImFontBuilderIO = extern struct { + FontBuilder_Build: ?*const fn ([*c]ImFontAtlas) callconv(.C) bool = @import("std").mem.zeroes(?*const fn ([*c]ImFontAtlas) callconv(.C) bool), +}; +pub const ImFontBuilderIO = struct_ImFontBuilderIO; +pub const struct_ImFontAtlas = extern struct { + Flags: ImFontAtlasFlags = @import("std").mem.zeroes(ImFontAtlasFlags), + TexID: ImTextureID = @import("std").mem.zeroes(ImTextureID), + TexDesiredWidth: c_int = @import("std").mem.zeroes(c_int), + TexGlyphPadding: c_int = @import("std").mem.zeroes(c_int), + Locked: bool = @import("std").mem.zeroes(bool), + TexReady: bool = @import("std").mem.zeroes(bool), + TexPixelsUseColors: bool = @import("std").mem.zeroes(bool), + TexPixelsAlpha8: [*c]u8 = @import("std").mem.zeroes([*c]u8), + TexPixelsRGBA32: [*c]c_uint = @import("std").mem.zeroes([*c]c_uint), + TexWidth: c_int = @import("std").mem.zeroes(c_int), + TexHeight: c_int = @import("std").mem.zeroes(c_int), + TexUvScale: ImVec2 = @import("std").mem.zeroes(ImVec2), + TexUvWhitePixel: ImVec2 = @import("std").mem.zeroes(ImVec2), + Fonts: ImVector_ImFontPtr = @import("std").mem.zeroes(ImVector_ImFontPtr), + CustomRects: ImVector_ImFontAtlasCustomRect = @import("std").mem.zeroes(ImVector_ImFontAtlasCustomRect), + ConfigData: ImVector_ImFontConfig = @import("std").mem.zeroes(ImVector_ImFontConfig), + TexUvLines: [64]ImVec4 = @import("std").mem.zeroes([64]ImVec4), + FontBuilderIO: [*c]const ImFontBuilderIO = @import("std").mem.zeroes([*c]const ImFontBuilderIO), + FontBuilderFlags: c_uint = @import("std").mem.zeroes(c_uint), + PackIdMouseCursors: c_int = @import("std").mem.zeroes(c_int), + PackIdLines: c_int = @import("std").mem.zeroes(c_int), +}; +pub const ImFontAtlas = struct_ImFontAtlas; +pub const ImU8 = u8; +pub const struct_ImFont = extern struct { + IndexAdvanceX: ImVector_float = @import("std").mem.zeroes(ImVector_float), + FallbackAdvanceX: f32 = @import("std").mem.zeroes(f32), + FontSize: f32 = @import("std").mem.zeroes(f32), + IndexLookup: ImVector_ImWchar = @import("std").mem.zeroes(ImVector_ImWchar), + Glyphs: ImVector_ImFontGlyph = @import("std").mem.zeroes(ImVector_ImFontGlyph), + FallbackGlyph: ?*const ImFontGlyph = @import("std").mem.zeroes(?*const ImFontGlyph), + ContainerAtlas: [*c]ImFontAtlas = @import("std").mem.zeroes([*c]ImFontAtlas), + ConfigData: [*c]const ImFontConfig = @import("std").mem.zeroes([*c]const ImFontConfig), + ConfigDataCount: c_short = @import("std").mem.zeroes(c_short), + FallbackChar: ImWchar = @import("std").mem.zeroes(ImWchar), + EllipsisChar: ImWchar = @import("std").mem.zeroes(ImWchar), + DotChar: ImWchar = @import("std").mem.zeroes(ImWchar), + DirtyLookupTables: bool = @import("std").mem.zeroes(bool), + Scale: f32 = @import("std").mem.zeroes(f32), + Ascent: f32 = @import("std").mem.zeroes(f32), + Descent: f32 = @import("std").mem.zeroes(f32), + MetricsTotalSurface: c_int = @import("std").mem.zeroes(c_int), + Used4kPagesMap: [2]ImU8 = @import("std").mem.zeroes([2]ImU8), +}; +pub const ImFont = struct_ImFont; +pub const struct_ImDrawListSharedData = extern struct { + TexUvWhitePixel: ImVec2 = @import("std").mem.zeroes(ImVec2), + Font: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), + FontSize: f32 = @import("std").mem.zeroes(f32), + CurveTessellationTol: f32 = @import("std").mem.zeroes(f32), + CircleSegmentMaxError: f32 = @import("std").mem.zeroes(f32), + ClipRectFullscreen: ImVec4 = @import("std").mem.zeroes(ImVec4), + InitialFlags: ImDrawListFlags = @import("std").mem.zeroes(ImDrawListFlags), + ArcFastVtx: [48]ImVec2 = @import("std").mem.zeroes([48]ImVec2), + ArcFastRadiusCutoff: f32 = @import("std").mem.zeroes(f32), + CircleSegmentCounts: [64]ImU8 = @import("std").mem.zeroes([64]ImU8), + TexUvLines: [*c]const ImVec4 = @import("std").mem.zeroes([*c]const ImVec4), +}; +pub const ImDrawListSharedData = struct_ImDrawListSharedData; +pub const struct_ImVector_ImVec4 = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImVec4 = @import("std").mem.zeroes([*c]ImVec4), +}; +pub const ImVector_ImVec4 = struct_ImVector_ImVec4; +pub const struct_ImVector_ImTextureID = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImTextureID = @import("std").mem.zeroes([*c]ImTextureID), +}; +pub const ImVector_ImTextureID = struct_ImVector_ImTextureID; +pub const struct_ImVector_ImVec2 = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImVec2 = @import("std").mem.zeroes([*c]ImVec2), +}; +pub const ImVector_ImVec2 = struct_ImVector_ImVec2; +pub const struct_ImDrawCmdHeader = extern struct { + ClipRect: ImVec4 = @import("std").mem.zeroes(ImVec4), + TextureId: ImTextureID = @import("std").mem.zeroes(ImTextureID), + VtxOffset: c_uint = @import("std").mem.zeroes(c_uint), +}; +pub const ImDrawCmdHeader = struct_ImDrawCmdHeader; +pub const ImDrawChannel = struct_ImDrawChannel; +pub const struct_ImVector_ImDrawChannel = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImDrawChannel = @import("std").mem.zeroes([*c]ImDrawChannel), +}; +pub const ImVector_ImDrawChannel = struct_ImVector_ImDrawChannel; +pub const struct_ImDrawListSplitter = extern struct { + _Current: c_int = @import("std").mem.zeroes(c_int), + _Count: c_int = @import("std").mem.zeroes(c_int), + _Channels: ImVector_ImDrawChannel = @import("std").mem.zeroes(ImVector_ImDrawChannel), +}; +pub const ImDrawListSplitter = struct_ImDrawListSplitter; +pub const struct_ImDrawList = extern struct { + CmdBuffer: ImVector_ImDrawCmd = @import("std").mem.zeroes(ImVector_ImDrawCmd), + IdxBuffer: ImVector_ImDrawIdx = @import("std").mem.zeroes(ImVector_ImDrawIdx), + VtxBuffer: ImVector_ImDrawVert = @import("std").mem.zeroes(ImVector_ImDrawVert), + Flags: ImDrawListFlags = @import("std").mem.zeroes(ImDrawListFlags), + _VtxCurrentIdx: c_uint = @import("std").mem.zeroes(c_uint), + _Data: [*c]const ImDrawListSharedData = @import("std").mem.zeroes([*c]const ImDrawListSharedData), + _OwnerName: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + _VtxWritePtr: [*c]ImDrawVert = @import("std").mem.zeroes([*c]ImDrawVert), + _IdxWritePtr: [*c]ImDrawIdx = @import("std").mem.zeroes([*c]ImDrawIdx), + _ClipRectStack: ImVector_ImVec4 = @import("std").mem.zeroes(ImVector_ImVec4), + _TextureIdStack: ImVector_ImTextureID = @import("std").mem.zeroes(ImVector_ImTextureID), + _Path: ImVector_ImVec2 = @import("std").mem.zeroes(ImVector_ImVec2), + _CmdHeader: ImDrawCmdHeader = @import("std").mem.zeroes(ImDrawCmdHeader), + _Splitter: ImDrawListSplitter = @import("std").mem.zeroes(ImDrawListSplitter), + _FringeScale: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImDrawList = struct_ImDrawList; +pub const ImDrawCallback = ?*const fn ([*c]const ImDrawList, [*c]const ImDrawCmd) callconv(.C) void; +pub const struct_ImDrawCmd = extern struct { + ClipRect: ImVec4 = @import("std").mem.zeroes(ImVec4), + TextureId: ImTextureID = @import("std").mem.zeroes(ImTextureID), + VtxOffset: c_uint = @import("std").mem.zeroes(c_uint), + IdxOffset: c_uint = @import("std").mem.zeroes(c_uint), + ElemCount: c_uint = @import("std").mem.zeroes(c_uint), + UserCallback: ImDrawCallback = @import("std").mem.zeroes(ImDrawCallback), + UserCallbackData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), +}; +pub const ImDrawCmd = struct_ImDrawCmd; +pub const struct_ImVector_ImDrawCmd = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImDrawCmd = @import("std").mem.zeroes([*c]ImDrawCmd), +}; +pub const ImVector_ImDrawCmd = struct_ImVector_ImDrawCmd; +pub const struct_ImDrawChannel = extern struct { + _CmdBuffer: ImVector_ImDrawCmd = @import("std").mem.zeroes(ImVector_ImDrawCmd), + _IdxBuffer: ImVector_ImDrawIdx = @import("std").mem.zeroes(ImVector_ImDrawIdx), +}; +pub const ImGuiID = c_uint; +pub const ImGuiViewportFlags = c_int; +pub const ImDrawData = struct_ImDrawData; +pub const struct_ImGuiViewport = extern struct { + ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + Flags: ImGuiViewportFlags = @import("std").mem.zeroes(ImGuiViewportFlags), + Pos: ImVec2 = @import("std").mem.zeroes(ImVec2), + Size: ImVec2 = @import("std").mem.zeroes(ImVec2), + WorkPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + WorkSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + DpiScale: f32 = @import("std").mem.zeroes(f32), + ParentViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DrawData: [*c]ImDrawData = @import("std").mem.zeroes([*c]ImDrawData), + RendererUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + PlatformUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + PlatformHandle: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + PlatformHandleRaw: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + PlatformRequestMove: bool = @import("std").mem.zeroes(bool), + PlatformRequestResize: bool = @import("std").mem.zeroes(bool), + PlatformRequestClose: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiViewport = struct_ImGuiViewport; +pub const struct_ImDrawData = extern struct { + Valid: bool = @import("std").mem.zeroes(bool), + CmdListsCount: c_int = @import("std").mem.zeroes(c_int), + TotalIdxCount: c_int = @import("std").mem.zeroes(c_int), + TotalVtxCount: c_int = @import("std").mem.zeroes(c_int), + CmdLists: [*c][*c]ImDrawList = @import("std").mem.zeroes([*c][*c]ImDrawList), + DisplayPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + DisplaySize: ImVec2 = @import("std").mem.zeroes(ImVec2), + FramebufferScale: ImVec2 = @import("std").mem.zeroes(ImVec2), + OwnerViewport: [*c]ImGuiViewport = @import("std").mem.zeroes([*c]ImGuiViewport), +}; +pub const struct_ImVector_ImU32 = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImU32 = @import("std").mem.zeroes([*c]ImU32), +}; +pub const ImVector_ImU32 = struct_ImVector_ImU32; +pub const struct_ImFontGlyphRangesBuilder = extern struct { + UsedChars: ImVector_ImU32 = @import("std").mem.zeroes(ImVector_ImU32), +}; +pub const ImFontGlyphRangesBuilder = struct_ImFontGlyphRangesBuilder; +pub const struct_ImColor = extern struct { + Value: ImVec4 = @import("std").mem.zeroes(ImVec4), +}; +pub const ImColor = struct_ImColor; +pub const ImGuiConfigFlags = c_int; +pub const ImGuiBackendFlags = c_int; +pub const struct_ImGuiPlatformImeData = extern struct { + WantVisible: bool = @import("std").mem.zeroes(bool), + InputPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + InputLineHeight: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiPlatformImeData = struct_ImGuiPlatformImeData; +pub const ImGuiModFlags = c_int; +pub const struct_ImGuiKeyData = extern struct { + Down: bool = @import("std").mem.zeroes(bool), + DownDuration: f32 = @import("std").mem.zeroes(f32), + DownDurationPrev: f32 = @import("std").mem.zeroes(f32), + AnalogValue: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiKeyData = struct_ImGuiKeyData; +pub const ImU16 = c_ushort; +pub const ImS8 = i8; +pub const struct_ImGuiIO = extern struct { + ConfigFlags: ImGuiConfigFlags = @import("std").mem.zeroes(ImGuiConfigFlags), + BackendFlags: ImGuiBackendFlags = @import("std").mem.zeroes(ImGuiBackendFlags), + DisplaySize: ImVec2 = @import("std").mem.zeroes(ImVec2), + DeltaTime: f32 = @import("std").mem.zeroes(f32), + IniSavingRate: f32 = @import("std").mem.zeroes(f32), + IniFilename: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + LogFilename: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + MouseDoubleClickTime: f32 = @import("std").mem.zeroes(f32), + MouseDoubleClickMaxDist: f32 = @import("std").mem.zeroes(f32), + MouseDragThreshold: f32 = @import("std").mem.zeroes(f32), + KeyRepeatDelay: f32 = @import("std").mem.zeroes(f32), + KeyRepeatRate: f32 = @import("std").mem.zeroes(f32), + UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + Fonts: [*c]ImFontAtlas = @import("std").mem.zeroes([*c]ImFontAtlas), + FontGlobalScale: f32 = @import("std").mem.zeroes(f32), + FontAllowUserScaling: bool = @import("std").mem.zeroes(bool), + FontDefault: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), + DisplayFramebufferScale: ImVec2 = @import("std").mem.zeroes(ImVec2), + ConfigDockingNoSplit: bool = @import("std").mem.zeroes(bool), + ConfigDockingWithShift: bool = @import("std").mem.zeroes(bool), + ConfigDockingAlwaysTabBar: bool = @import("std").mem.zeroes(bool), + ConfigDockingTransparentPayload: bool = @import("std").mem.zeroes(bool), + ConfigViewportsNoAutoMerge: bool = @import("std").mem.zeroes(bool), + ConfigViewportsNoTaskBarIcon: bool = @import("std").mem.zeroes(bool), + ConfigViewportsNoDecoration: bool = @import("std").mem.zeroes(bool), + ConfigViewportsNoDefaultParent: bool = @import("std").mem.zeroes(bool), + MouseDrawCursor: bool = @import("std").mem.zeroes(bool), + ConfigMacOSXBehaviors: bool = @import("std").mem.zeroes(bool), + ConfigInputTrickleEventQueue: bool = @import("std").mem.zeroes(bool), + ConfigInputTextCursorBlink: bool = @import("std").mem.zeroes(bool), + ConfigDragClickToInputText: bool = @import("std").mem.zeroes(bool), + ConfigWindowsResizeFromEdges: bool = @import("std").mem.zeroes(bool), + ConfigWindowsMoveFromTitleBarOnly: bool = @import("std").mem.zeroes(bool), + ConfigMemoryCompactTimer: f32 = @import("std").mem.zeroes(f32), + BackendPlatformName: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + BackendRendererName: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + BackendPlatformUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + BackendRendererUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + BackendLanguageUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + GetClipboardTextFn: ?*const fn (?*anyopaque) callconv(.C) [*c]const u8 = @import("std").mem.zeroes(?*const fn (?*anyopaque) callconv(.C) [*c]const u8), + SetClipboardTextFn: ?*const fn (?*anyopaque, [*c]const u8) callconv(.C) void = @import("std").mem.zeroes(?*const fn (?*anyopaque, [*c]const u8) callconv(.C) void), + ClipboardUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + SetPlatformImeDataFn: ?*const fn ([*c]ImGuiViewport, [*c]ImGuiPlatformImeData) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, [*c]ImGuiPlatformImeData) callconv(.C) void), + _UnusedPadding: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + WantCaptureMouse: bool = @import("std").mem.zeroes(bool), + WantCaptureKeyboard: bool = @import("std").mem.zeroes(bool), + WantTextInput: bool = @import("std").mem.zeroes(bool), + WantSetMousePos: bool = @import("std").mem.zeroes(bool), + WantSaveIniSettings: bool = @import("std").mem.zeroes(bool), + NavActive: bool = @import("std").mem.zeroes(bool), + NavVisible: bool = @import("std").mem.zeroes(bool), + Framerate: f32 = @import("std").mem.zeroes(f32), + MetricsRenderVertices: c_int = @import("std").mem.zeroes(c_int), + MetricsRenderIndices: c_int = @import("std").mem.zeroes(c_int), + MetricsRenderWindows: c_int = @import("std").mem.zeroes(c_int), + MetricsActiveWindows: c_int = @import("std").mem.zeroes(c_int), + MetricsActiveAllocations: c_int = @import("std").mem.zeroes(c_int), + MouseDelta: ImVec2 = @import("std").mem.zeroes(ImVec2), + KeyMap: [645]c_int = @import("std").mem.zeroes([645]c_int), + KeysDown: [645]bool = @import("std").mem.zeroes([645]bool), + MousePos: ImVec2 = @import("std").mem.zeroes(ImVec2), + MouseDown: [5]bool = @import("std").mem.zeroes([5]bool), + MouseWheel: f32 = @import("std").mem.zeroes(f32), + MouseWheelH: f32 = @import("std").mem.zeroes(f32), + MouseHoveredViewport: ImGuiID = @import("std").mem.zeroes(ImGuiID), + KeyCtrl: bool = @import("std").mem.zeroes(bool), + KeyShift: bool = @import("std").mem.zeroes(bool), + KeyAlt: bool = @import("std").mem.zeroes(bool), + KeySuper: bool = @import("std").mem.zeroes(bool), + NavInputs: [20]f32 = @import("std").mem.zeroes([20]f32), + KeyMods: ImGuiModFlags = @import("std").mem.zeroes(ImGuiModFlags), + KeysData: [645]ImGuiKeyData = @import("std").mem.zeroes([645]ImGuiKeyData), + WantCaptureMouseUnlessPopupClose: bool = @import("std").mem.zeroes(bool), + MousePosPrev: ImVec2 = @import("std").mem.zeroes(ImVec2), + MouseClickedPos: [5]ImVec2 = @import("std").mem.zeroes([5]ImVec2), + MouseClickedTime: [5]f64 = @import("std").mem.zeroes([5]f64), + MouseClicked: [5]bool = @import("std").mem.zeroes([5]bool), + MouseDoubleClicked: [5]bool = @import("std").mem.zeroes([5]bool), + MouseClickedCount: [5]ImU16 = @import("std").mem.zeroes([5]ImU16), + MouseClickedLastCount: [5]ImU16 = @import("std").mem.zeroes([5]ImU16), + MouseReleased: [5]bool = @import("std").mem.zeroes([5]bool), + MouseDownOwned: [5]bool = @import("std").mem.zeroes([5]bool), + MouseDownOwnedUnlessPopupClose: [5]bool = @import("std").mem.zeroes([5]bool), + MouseDownDuration: [5]f32 = @import("std").mem.zeroes([5]f32), + MouseDownDurationPrev: [5]f32 = @import("std").mem.zeroes([5]f32), + MouseDragMaxDistanceAbs: [5]ImVec2 = @import("std").mem.zeroes([5]ImVec2), + MouseDragMaxDistanceSqr: [5]f32 = @import("std").mem.zeroes([5]f32), + NavInputsDownDuration: [20]f32 = @import("std").mem.zeroes([20]f32), + NavInputsDownDurationPrev: [20]f32 = @import("std").mem.zeroes([20]f32), + PenPressure: f32 = @import("std").mem.zeroes(f32), + AppFocusLost: bool = @import("std").mem.zeroes(bool), + AppAcceptingEvents: bool = @import("std").mem.zeroes(bool), + BackendUsingLegacyKeyArrays: ImS8 = @import("std").mem.zeroes(ImS8), + BackendUsingLegacyNavInputArray: bool = @import("std").mem.zeroes(bool), + InputQueueSurrogate: ImWchar16 = @import("std").mem.zeroes(ImWchar16), + InputQueueCharacters: ImVector_ImWchar = @import("std").mem.zeroes(ImVector_ImWchar), +}; +pub const ImGuiIO = struct_ImGuiIO; +pub const ImU64 = c_ulonglong; +pub const struct_ImGuiPlatformMonitor = extern struct { + MainPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + MainSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + WorkPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + WorkSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + DpiScale: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiPlatformMonitor = struct_ImGuiPlatformMonitor; +pub const struct_ImVector_ImGuiPlatformMonitor = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiPlatformMonitor = @import("std").mem.zeroes([*c]ImGuiPlatformMonitor), +}; +pub const ImVector_ImGuiPlatformMonitor = struct_ImVector_ImGuiPlatformMonitor; +pub const struct_ImVector_ImGuiViewportPtr = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c][*c]ImGuiViewport = @import("std").mem.zeroes([*c][*c]ImGuiViewport), +}; +pub const ImVector_ImGuiViewportPtr = struct_ImVector_ImGuiViewportPtr; +pub const struct_ImGuiPlatformIO = extern struct { + Platform_CreateWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), + Platform_DestroyWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), + Platform_ShowWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), + Platform_SetWindowPos: ?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void), + Platform_GetWindowPos: ?*const fn ([*c]ImGuiViewport) callconv(.C) ImVec2 = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) ImVec2), + Platform_SetWindowSize: ?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void), + Platform_GetWindowSize: ?*const fn ([*c]ImGuiViewport) callconv(.C) ImVec2 = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) ImVec2), + Platform_SetWindowFocus: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), + Platform_GetWindowFocus: ?*const fn ([*c]ImGuiViewport) callconv(.C) bool = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) bool), + Platform_GetWindowMinimized: ?*const fn ([*c]ImGuiViewport) callconv(.C) bool = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) bool), + Platform_SetWindowTitle: ?*const fn ([*c]ImGuiViewport, [*c]const u8) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, [*c]const u8) callconv(.C) void), + Platform_SetWindowAlpha: ?*const fn ([*c]ImGuiViewport, f32) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, f32) callconv(.C) void), + Platform_UpdateWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), + Platform_RenderWindow: ?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void), + Platform_SwapBuffers: ?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void), + Platform_GetWindowDpiScale: ?*const fn ([*c]ImGuiViewport) callconv(.C) f32 = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) f32), + Platform_OnChangedViewport: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), + Platform_CreateVkSurface: ?*const fn ([*c]ImGuiViewport, ImU64, ?*const anyopaque, [*c]ImU64) callconv(.C) c_int = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ImU64, ?*const anyopaque, [*c]ImU64) callconv(.C) c_int), + Renderer_CreateWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), + Renderer_DestroyWindow: ?*const fn ([*c]ImGuiViewport) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport) callconv(.C) void), + Renderer_SetWindowSize: ?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ImVec2) callconv(.C) void), + Renderer_RenderWindow: ?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void), + Renderer_SwapBuffers: ?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiViewport, ?*anyopaque) callconv(.C) void), + Monitors: ImVector_ImGuiPlatformMonitor = @import("std").mem.zeroes(ImVector_ImGuiPlatformMonitor), + Viewports: ImVector_ImGuiViewportPtr = @import("std").mem.zeroes(ImVector_ImGuiViewportPtr), +}; +pub const ImGuiPlatformIO = struct_ImGuiPlatformIO; +pub const struct_ImGuiInputEventMousePos = extern struct { + PosX: f32 = @import("std").mem.zeroes(f32), + PosY: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiInputEventMousePos = struct_ImGuiInputEventMousePos; +pub const struct_ImGuiInputEventMouseWheel = extern struct { + WheelX: f32 = @import("std").mem.zeroes(f32), + WheelY: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiInputEventMouseWheel = struct_ImGuiInputEventMouseWheel; +pub const struct_ImGuiInputEventMouseButton = extern struct { + Button: c_int = @import("std").mem.zeroes(c_int), + Down: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiInputEventMouseButton = struct_ImGuiInputEventMouseButton; +pub const struct_ImGuiInputEventMouseViewport = extern struct { + HoveredViewportID: ImGuiID = @import("std").mem.zeroes(ImGuiID), +}; +pub const ImGuiInputEventMouseViewport = struct_ImGuiInputEventMouseViewport; +pub const ImGuiKey = c_int; +pub const struct_ImGuiInputEventKey = extern struct { + Key: ImGuiKey = @import("std").mem.zeroes(ImGuiKey), + Down: bool = @import("std").mem.zeroes(bool), + AnalogValue: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiInputEventKey = struct_ImGuiInputEventKey; +pub const struct_ImGuiInputEventText = extern struct { + Char: c_uint = @import("std").mem.zeroes(c_uint), +}; +pub const ImGuiInputEventText = struct_ImGuiInputEventText; +pub const struct_ImGuiInputEventAppFocused = extern struct { + Focused: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiInputEventAppFocused = struct_ImGuiInputEventAppFocused; +const union_unnamed_1 = extern union { + MousePos: ImGuiInputEventMousePos, + MouseWheel: ImGuiInputEventMouseWheel, + MouseButton: ImGuiInputEventMouseButton, + MouseViewport: ImGuiInputEventMouseViewport, + Key: ImGuiInputEventKey, + Text: ImGuiInputEventText, + AppFocused: ImGuiInputEventAppFocused, +}; +pub const struct_ImGuiInputEvent = extern struct { + Type: ImGuiInputEventType = @import("std").mem.zeroes(ImGuiInputEventType), + Source: ImGuiInputSource = @import("std").mem.zeroes(ImGuiInputSource), + unnamed_0: union_unnamed_1 = @import("std").mem.zeroes(union_unnamed_1), + AddedByTestEngine: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiInputEvent = struct_ImGuiInputEvent; +pub const struct_ImVector_ImGuiInputEvent = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiInputEvent = @import("std").mem.zeroes([*c]ImGuiInputEvent), +}; +pub const ImVector_ImGuiInputEvent = struct_ImVector_ImGuiInputEvent; +pub const ImGuiDir = c_int; +pub const struct_ImGuiStyle = extern struct { + Alpha: f32 = @import("std").mem.zeroes(f32), + DisabledAlpha: f32 = @import("std").mem.zeroes(f32), + WindowPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), + WindowRounding: f32 = @import("std").mem.zeroes(f32), + WindowBorderSize: f32 = @import("std").mem.zeroes(f32), + WindowMinSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + WindowTitleAlign: ImVec2 = @import("std").mem.zeroes(ImVec2), + WindowMenuButtonPosition: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), + ChildRounding: f32 = @import("std").mem.zeroes(f32), + ChildBorderSize: f32 = @import("std").mem.zeroes(f32), + PopupRounding: f32 = @import("std").mem.zeroes(f32), + PopupBorderSize: f32 = @import("std").mem.zeroes(f32), + FramePadding: ImVec2 = @import("std").mem.zeroes(ImVec2), + FrameRounding: f32 = @import("std").mem.zeroes(f32), + FrameBorderSize: f32 = @import("std").mem.zeroes(f32), + ItemSpacing: ImVec2 = @import("std").mem.zeroes(ImVec2), + ItemInnerSpacing: ImVec2 = @import("std").mem.zeroes(ImVec2), + CellPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), + TouchExtraPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), + IndentSpacing: f32 = @import("std").mem.zeroes(f32), + ColumnsMinSpacing: f32 = @import("std").mem.zeroes(f32), + ScrollbarSize: f32 = @import("std").mem.zeroes(f32), + ScrollbarRounding: f32 = @import("std").mem.zeroes(f32), + GrabMinSize: f32 = @import("std").mem.zeroes(f32), + GrabRounding: f32 = @import("std").mem.zeroes(f32), + LogSliderDeadzone: f32 = @import("std").mem.zeroes(f32), + TabRounding: f32 = @import("std").mem.zeroes(f32), + TabBorderSize: f32 = @import("std").mem.zeroes(f32), + TabMinWidthForCloseButton: f32 = @import("std").mem.zeroes(f32), + ColorButtonPosition: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), + ButtonTextAlign: ImVec2 = @import("std").mem.zeroes(ImVec2), + SelectableTextAlign: ImVec2 = @import("std").mem.zeroes(ImVec2), + DisplayWindowPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), + DisplaySafeAreaPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), + MouseCursorScale: f32 = @import("std").mem.zeroes(f32), + AntiAliasedLines: bool = @import("std").mem.zeroes(bool), + AntiAliasedLinesUseTex: bool = @import("std").mem.zeroes(bool), + AntiAliasedFill: bool = @import("std").mem.zeroes(bool), + CurveTessellationTol: f32 = @import("std").mem.zeroes(f32), + CircleTessellationMaxError: f32 = @import("std").mem.zeroes(f32), + Colors: [55]ImVec4 = @import("std").mem.zeroes([55]ImVec4), +}; +pub const ImGuiStyle = struct_ImGuiStyle; +pub const ImGuiWindowFlags = c_int; +pub const ImGuiTabItemFlags = c_int; +pub const ImGuiDockNodeFlags = c_int; +pub const struct_ImGuiWindowClass = extern struct { + ClassId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + ParentViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + ViewportFlagsOverrideSet: ImGuiViewportFlags = @import("std").mem.zeroes(ImGuiViewportFlags), + ViewportFlagsOverrideClear: ImGuiViewportFlags = @import("std").mem.zeroes(ImGuiViewportFlags), + TabItemFlagsOverrideSet: ImGuiTabItemFlags = @import("std").mem.zeroes(ImGuiTabItemFlags), + DockNodeFlagsOverrideSet: ImGuiDockNodeFlags = @import("std").mem.zeroes(ImGuiDockNodeFlags), + DockingAlwaysTabBar: bool = @import("std").mem.zeroes(bool), + DockingAllowUnclassed: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiWindowClass = struct_ImGuiWindowClass; +pub const struct_ImVector_ImDrawListPtr = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c][*c]ImDrawList = @import("std").mem.zeroes([*c][*c]ImDrawList), +}; +pub const ImVector_ImDrawListPtr = struct_ImVector_ImDrawListPtr; +pub const struct_ImDrawDataBuilder = extern struct { + Layers: [2]ImVector_ImDrawListPtr = @import("std").mem.zeroes([2]ImVector_ImDrawListPtr), +}; +pub const ImDrawDataBuilder = struct_ImDrawDataBuilder; +pub const struct_ImGuiViewportP = extern struct { + _ImGuiViewport: ImGuiViewport = @import("std").mem.zeroes(ImGuiViewport), + Idx: c_int = @import("std").mem.zeroes(c_int), + LastFrameActive: c_int = @import("std").mem.zeroes(c_int), + LastFrontMostStampCount: c_int = @import("std").mem.zeroes(c_int), + LastNameHash: ImGuiID = @import("std").mem.zeroes(ImGuiID), + LastPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + Alpha: f32 = @import("std").mem.zeroes(f32), + LastAlpha: f32 = @import("std").mem.zeroes(f32), + PlatformMonitor: c_short = @import("std").mem.zeroes(c_short), + PlatformWindowCreated: bool = @import("std").mem.zeroes(bool), + Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + DrawListsLastFrame: [2]c_int = @import("std").mem.zeroes([2]c_int), + DrawLists: [2][*c]ImDrawList = @import("std").mem.zeroes([2][*c]ImDrawList), + DrawDataP: ImDrawData = @import("std").mem.zeroes(ImDrawData), + DrawDataBuilder: ImDrawDataBuilder = @import("std").mem.zeroes(ImDrawDataBuilder), + LastPlatformPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + LastPlatformSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + LastRendererSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + WorkOffsetMin: ImVec2 = @import("std").mem.zeroes(ImVec2), + WorkOffsetMax: ImVec2 = @import("std").mem.zeroes(ImVec2), + BuildWorkOffsetMin: ImVec2 = @import("std").mem.zeroes(ImVec2), + BuildWorkOffsetMax: ImVec2 = @import("std").mem.zeroes(ImVec2), +}; +pub const ImGuiViewportP = struct_ImGuiViewportP; +// cimgui2.h:2527:15: warning: struct demoted to opaque type - has bitfield +pub const struct_ImGuiWindow = opaque {}; +pub const ImGuiWindow = struct_ImGuiWindow; +pub const struct_ImVector_ImGuiWindowPtr = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]?*ImGuiWindow = @import("std").mem.zeroes([*c]?*ImGuiWindow), +}; +pub const ImVector_ImGuiWindowPtr = struct_ImVector_ImGuiWindowPtr; +pub const ImGuiItemFlags = c_int; +pub const ImGuiItemStatusFlags = c_int; +pub const struct_ImRect = extern struct { + Min: ImVec2 = @import("std").mem.zeroes(ImVec2), + Max: ImVec2 = @import("std").mem.zeroes(ImVec2), +}; +pub const ImRect = struct_ImRect; +pub const struct_ImGuiLastItemData = extern struct { + ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + InFlags: ImGuiItemFlags = @import("std").mem.zeroes(ImGuiItemFlags), + StatusFlags: ImGuiItemStatusFlags = @import("std").mem.zeroes(ImGuiItemStatusFlags), + Rect: ImRect = @import("std").mem.zeroes(ImRect), + NavRect: ImRect = @import("std").mem.zeroes(ImRect), + DisplayRect: ImRect = @import("std").mem.zeroes(ImRect), +}; +pub const ImGuiLastItemData = struct_ImGuiLastItemData; +pub const struct_ImGuiStackSizes = extern struct { + SizeOfIDStack: c_short = @import("std").mem.zeroes(c_short), + SizeOfColorStack: c_short = @import("std").mem.zeroes(c_short), + SizeOfStyleVarStack: c_short = @import("std").mem.zeroes(c_short), + SizeOfFontStack: c_short = @import("std").mem.zeroes(c_short), + SizeOfFocusScopeStack: c_short = @import("std").mem.zeroes(c_short), + SizeOfGroupStack: c_short = @import("std").mem.zeroes(c_short), + SizeOfItemFlagsStack: c_short = @import("std").mem.zeroes(c_short), + SizeOfBeginPopupStack: c_short = @import("std").mem.zeroes(c_short), + SizeOfDisabledStack: c_short = @import("std").mem.zeroes(c_short), +}; +pub const ImGuiStackSizes = struct_ImGuiStackSizes; +pub const struct_ImGuiWindowStackData = extern struct { + Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + ParentLastItemDataBackup: ImGuiLastItemData = @import("std").mem.zeroes(ImGuiLastItemData), + StackSizesOnBegin: ImGuiStackSizes = @import("std").mem.zeroes(ImGuiStackSizes), +}; +pub const ImGuiWindowStackData = struct_ImGuiWindowStackData; +pub const struct_ImVector_ImGuiWindowStackData = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiWindowStackData = @import("std").mem.zeroes([*c]ImGuiWindowStackData), +}; +pub const ImVector_ImGuiWindowStackData = struct_ImVector_ImGuiWindowStackData; +const union_unnamed_2 = extern union { + val_i: c_int, + val_f: f32, + val_p: ?*anyopaque, +}; +pub const struct_ImGuiStoragePair = extern struct { + key: ImGuiID = @import("std").mem.zeroes(ImGuiID), + unnamed_0: union_unnamed_2 = @import("std").mem.zeroes(union_unnamed_2), +}; +pub const ImGuiStoragePair = struct_ImGuiStoragePair; +pub const struct_ImVector_ImGuiStoragePair = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiStoragePair = @import("std").mem.zeroes([*c]ImGuiStoragePair), +}; +pub const ImVector_ImGuiStoragePair = struct_ImVector_ImGuiStoragePair; +pub const struct_ImGuiStorage = extern struct { + Data: ImVector_ImGuiStoragePair = @import("std").mem.zeroes(ImVector_ImGuiStoragePair), +}; +pub const ImGuiStorage = struct_ImGuiStorage; +pub const ImS32 = c_int; +pub const ImS16 = c_short; +pub const struct_ImGuiTabItem = extern struct { + ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + Flags: ImGuiTabItemFlags = @import("std").mem.zeroes(ImGuiTabItemFlags), + Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + LastFrameVisible: c_int = @import("std").mem.zeroes(c_int), + LastFrameSelected: c_int = @import("std").mem.zeroes(c_int), + Offset: f32 = @import("std").mem.zeroes(f32), + Width: f32 = @import("std").mem.zeroes(f32), + ContentWidth: f32 = @import("std").mem.zeroes(f32), + RequestedWidth: f32 = @import("std").mem.zeroes(f32), + NameOffset: ImS32 = @import("std").mem.zeroes(ImS32), + BeginOrder: ImS16 = @import("std").mem.zeroes(ImS16), + IndexDuringLayout: ImS16 = @import("std").mem.zeroes(ImS16), + WantClose: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiTabItem = struct_ImGuiTabItem; +pub const struct_ImVector_ImGuiTabItem = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiTabItem = @import("std").mem.zeroes([*c]ImGuiTabItem), +}; +pub const ImVector_ImGuiTabItem = struct_ImVector_ImGuiTabItem; +pub const ImGuiTabBarFlags = c_int; +pub const struct_ImVector_char = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]u8 = @import("std").mem.zeroes([*c]u8), +}; +pub const ImVector_char = struct_ImVector_char; +pub const struct_ImGuiTextBuffer = extern struct { + Buf: ImVector_char = @import("std").mem.zeroes(ImVector_char), +}; +pub const ImGuiTextBuffer = struct_ImGuiTextBuffer; +pub const struct_ImGuiTabBar = extern struct { + Tabs: ImVector_ImGuiTabItem = @import("std").mem.zeroes(ImVector_ImGuiTabItem), + Flags: ImGuiTabBarFlags = @import("std").mem.zeroes(ImGuiTabBarFlags), + ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + SelectedTabId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NextSelectedTabId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + VisibleTabId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + CurrFrameVisible: c_int = @import("std").mem.zeroes(c_int), + PrevFrameVisible: c_int = @import("std").mem.zeroes(c_int), + BarRect: ImRect = @import("std").mem.zeroes(ImRect), + CurrTabsContentsHeight: f32 = @import("std").mem.zeroes(f32), + PrevTabsContentsHeight: f32 = @import("std").mem.zeroes(f32), + WidthAllTabs: f32 = @import("std").mem.zeroes(f32), + WidthAllTabsIdeal: f32 = @import("std").mem.zeroes(f32), + ScrollingAnim: f32 = @import("std").mem.zeroes(f32), + ScrollingTarget: f32 = @import("std").mem.zeroes(f32), + ScrollingTargetDistToVisibility: f32 = @import("std").mem.zeroes(f32), + ScrollingSpeed: f32 = @import("std").mem.zeroes(f32), + ScrollingRectMinX: f32 = @import("std").mem.zeroes(f32), + ScrollingRectMaxX: f32 = @import("std").mem.zeroes(f32), + ReorderRequestTabId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + ReorderRequestOffset: ImS16 = @import("std").mem.zeroes(ImS16), + BeginCount: ImS8 = @import("std").mem.zeroes(ImS8), + WantLayout: bool = @import("std").mem.zeroes(bool), + VisibleTabWasSubmitted: bool = @import("std").mem.zeroes(bool), + TabsAddedNew: bool = @import("std").mem.zeroes(bool), + TabsActiveCount: ImS16 = @import("std").mem.zeroes(ImS16), + LastTabItemIdx: ImS16 = @import("std").mem.zeroes(ImS16), + ItemSpacingY: f32 = @import("std").mem.zeroes(f32), + FramePadding: ImVec2 = @import("std").mem.zeroes(ImVec2), + BackupCursorPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + TabsNames: ImGuiTextBuffer = @import("std").mem.zeroes(ImGuiTextBuffer), +}; +pub const ImGuiTabBar = struct_ImGuiTabBar; +// cimgui2.h:2005:24: warning: struct demoted to opaque type - has bitfield +pub const struct_ImGuiDockNode = opaque {}; +pub const ImGuiDockNode = struct_ImGuiDockNode; +pub const struct_ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN = extern struct { + Storage: [5]ImU32 = @import("std").mem.zeroes([5]ImU32), +}; +pub const ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN = struct_ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN; +pub const ImBitArrayForNamedKeys = ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN; +pub const ImGuiNextItemDataFlags = c_int; +pub const ImGuiCond = c_int; +pub const struct_ImGuiNextItemData = extern struct { + Flags: ImGuiNextItemDataFlags = @import("std").mem.zeroes(ImGuiNextItemDataFlags), + Width: f32 = @import("std").mem.zeroes(f32), + FocusScopeId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + OpenCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), + OpenVal: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiNextItemData = struct_ImGuiNextItemData; +pub const ImGuiNextWindowDataFlags = c_int; +pub const struct_ImGuiSizeCallbackData = extern struct { + UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + Pos: ImVec2 = @import("std").mem.zeroes(ImVec2), + CurrentSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + DesiredSize: ImVec2 = @import("std").mem.zeroes(ImVec2), +}; +pub const ImGuiSizeCallbackData = struct_ImGuiSizeCallbackData; +pub const ImGuiSizeCallback = ?*const fn ([*c]ImGuiSizeCallbackData) callconv(.C) void; +pub const struct_ImGuiNextWindowData = extern struct { + Flags: ImGuiNextWindowDataFlags = @import("std").mem.zeroes(ImGuiNextWindowDataFlags), + PosCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), + SizeCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), + CollapsedCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), + DockCond: ImGuiCond = @import("std").mem.zeroes(ImGuiCond), + PosVal: ImVec2 = @import("std").mem.zeroes(ImVec2), + PosPivotVal: ImVec2 = @import("std").mem.zeroes(ImVec2), + SizeVal: ImVec2 = @import("std").mem.zeroes(ImVec2), + ContentSizeVal: ImVec2 = @import("std").mem.zeroes(ImVec2), + ScrollVal: ImVec2 = @import("std").mem.zeroes(ImVec2), + PosUndock: bool = @import("std").mem.zeroes(bool), + CollapsedVal: bool = @import("std").mem.zeroes(bool), + SizeConstraintRect: ImRect = @import("std").mem.zeroes(ImRect), + SizeCallback: ImGuiSizeCallback = @import("std").mem.zeroes(ImGuiSizeCallback), + SizeCallbackUserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + BgAlphaVal: f32 = @import("std").mem.zeroes(f32), + ViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DockId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + WindowClass: ImGuiWindowClass = @import("std").mem.zeroes(ImGuiWindowClass), + MenuBarOffsetMinVal: ImVec2 = @import("std").mem.zeroes(ImVec2), +}; +pub const ImGuiNextWindowData = struct_ImGuiNextWindowData; +pub const ImGuiCol = c_int; +pub const struct_ImGuiColorMod = extern struct { + Col: ImGuiCol = @import("std").mem.zeroes(ImGuiCol), + BackupValue: ImVec4 = @import("std").mem.zeroes(ImVec4), +}; +pub const ImGuiColorMod = struct_ImGuiColorMod; +pub const struct_ImVector_ImGuiColorMod = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiColorMod = @import("std").mem.zeroes([*c]ImGuiColorMod), +}; +pub const ImVector_ImGuiColorMod = struct_ImVector_ImGuiColorMod; +pub const ImGuiStyleVar = c_int; +const union_unnamed_3 = extern union { + BackupInt: [2]c_int, + BackupFloat: [2]f32, +}; +pub const struct_ImGuiStyleMod = extern struct { + VarIdx: ImGuiStyleVar = @import("std").mem.zeroes(ImGuiStyleVar), + unnamed_0: union_unnamed_3 = @import("std").mem.zeroes(union_unnamed_3), +}; +pub const ImGuiStyleMod = struct_ImGuiStyleMod; +pub const struct_ImVector_ImGuiStyleMod = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiStyleMod = @import("std").mem.zeroes([*c]ImGuiStyleMod), +}; +pub const ImVector_ImGuiStyleMod = struct_ImVector_ImGuiStyleMod; +pub const struct_ImVector_ImGuiID = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiID = @import("std").mem.zeroes([*c]ImGuiID), +}; +pub const ImVector_ImGuiID = struct_ImVector_ImGuiID; +pub const struct_ImVector_ImGuiItemFlags = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiItemFlags = @import("std").mem.zeroes([*c]ImGuiItemFlags), +}; +pub const ImVector_ImGuiItemFlags = struct_ImVector_ImGuiItemFlags; +pub const struct_ImVec1 = extern struct { + x: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImVec1 = struct_ImVec1; +pub const struct_ImGuiGroupData = extern struct { + WindowID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + BackupCursorPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + BackupCursorMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + BackupIndent: ImVec1 = @import("std").mem.zeroes(ImVec1), + BackupGroupOffset: ImVec1 = @import("std").mem.zeroes(ImVec1), + BackupCurrLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + BackupCurrLineTextBaseOffset: f32 = @import("std").mem.zeroes(f32), + BackupActiveIdIsAlive: ImGuiID = @import("std").mem.zeroes(ImGuiID), + BackupActiveIdPreviousFrameIsAlive: bool = @import("std").mem.zeroes(bool), + BackupHoveredIdIsAlive: bool = @import("std").mem.zeroes(bool), + EmitItem: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiGroupData = struct_ImGuiGroupData; +pub const struct_ImVector_ImGuiGroupData = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiGroupData = @import("std").mem.zeroes([*c]ImGuiGroupData), +}; +pub const ImVector_ImGuiGroupData = struct_ImVector_ImGuiGroupData; +pub const struct_ImGuiPopupData = extern struct { + PopupId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + SourceWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + ParentNavLayer: c_int = @import("std").mem.zeroes(c_int), + OpenFrameCount: c_int = @import("std").mem.zeroes(c_int), + OpenParentId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + OpenPopupPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + OpenMousePos: ImVec2 = @import("std").mem.zeroes(ImVec2), +}; +pub const ImGuiPopupData = struct_ImGuiPopupData; +pub const struct_ImVector_ImGuiPopupData = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiPopupData = @import("std").mem.zeroes([*c]ImGuiPopupData), +}; +pub const ImVector_ImGuiPopupData = struct_ImVector_ImGuiPopupData; +pub const struct_ImVector_ImGuiViewportPPtr = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c][*c]ImGuiViewportP = @import("std").mem.zeroes([*c][*c]ImGuiViewportP), +}; +pub const ImVector_ImGuiViewportPPtr = struct_ImVector_ImGuiViewportPPtr; +pub const ImGuiActivateFlags = c_int; +pub const ImGuiNavMoveFlags = c_int; +pub const ImGuiScrollFlags = c_int; +pub const struct_ImGuiNavItemData = extern struct { + Window: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + FocusScopeId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + RectRel: ImRect = @import("std").mem.zeroes(ImRect), + InFlags: ImGuiItemFlags = @import("std").mem.zeroes(ImGuiItemFlags), + DistBox: f32 = @import("std").mem.zeroes(f32), + DistCenter: f32 = @import("std").mem.zeroes(f32), + DistAxial: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiNavItemData = struct_ImGuiNavItemData; +pub const ImGuiMouseCursor = c_int; +pub const ImGuiDragDropFlags = c_int; +pub const struct_ImGuiPayload = extern struct { + Data: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + DataSize: c_int = @import("std").mem.zeroes(c_int), + SourceId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + SourceParentId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DataFrameCount: c_int = @import("std").mem.zeroes(c_int), + DataType: [33]u8 = @import("std").mem.zeroes([33]u8), + Preview: bool = @import("std").mem.zeroes(bool), + Delivery: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiPayload = struct_ImGuiPayload; +pub const struct_ImVector_unsigned_char = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]u8 = @import("std").mem.zeroes([*c]u8), +}; +pub const ImVector_unsigned_char = struct_ImVector_unsigned_char; +pub const struct_ImGuiListClipper = extern struct { + DisplayStart: c_int = @import("std").mem.zeroes(c_int), + DisplayEnd: c_int = @import("std").mem.zeroes(c_int), + ItemsCount: c_int = @import("std").mem.zeroes(c_int), + ItemsHeight: f32 = @import("std").mem.zeroes(f32), + StartPosY: f32 = @import("std").mem.zeroes(f32), + TempData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), +}; +pub const ImGuiListClipper = struct_ImGuiListClipper; +pub const struct_ImGuiListClipperRange = extern struct { + Min: c_int = @import("std").mem.zeroes(c_int), + Max: c_int = @import("std").mem.zeroes(c_int), + PosToIndexConvert: bool = @import("std").mem.zeroes(bool), + PosToIndexOffsetMin: ImS8 = @import("std").mem.zeroes(ImS8), + PosToIndexOffsetMax: ImS8 = @import("std").mem.zeroes(ImS8), +}; +pub const ImGuiListClipperRange = struct_ImGuiListClipperRange; +pub const struct_ImVector_ImGuiListClipperRange = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiListClipperRange = @import("std").mem.zeroes([*c]ImGuiListClipperRange), +}; +pub const ImVector_ImGuiListClipperRange = struct_ImVector_ImGuiListClipperRange; +pub const struct_ImGuiListClipperData = extern struct { + ListClipper: [*c]ImGuiListClipper = @import("std").mem.zeroes([*c]ImGuiListClipper), + LossynessOffset: f32 = @import("std").mem.zeroes(f32), + StepNo: c_int = @import("std").mem.zeroes(c_int), + ItemsFrozen: c_int = @import("std").mem.zeroes(c_int), + Ranges: ImVector_ImGuiListClipperRange = @import("std").mem.zeroes(ImVector_ImGuiListClipperRange), +}; +pub const ImGuiListClipperData = struct_ImGuiListClipperData; +pub const struct_ImVector_ImGuiListClipperData = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiListClipperData = @import("std").mem.zeroes([*c]ImGuiListClipperData), +}; +pub const ImVector_ImGuiListClipperData = struct_ImVector_ImGuiListClipperData; +pub const ImGuiTableFlags = c_int; +pub const struct_ImGuiTableTempData = extern struct { + TableIndex: c_int = @import("std").mem.zeroes(c_int), + LastTimeActive: f32 = @import("std").mem.zeroes(f32), + UserOuterSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + DrawSplitter: ImDrawListSplitter = @import("std").mem.zeroes(ImDrawListSplitter), + HostBackupWorkRect: ImRect = @import("std").mem.zeroes(ImRect), + HostBackupParentWorkRect: ImRect = @import("std").mem.zeroes(ImRect), + HostBackupPrevLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + HostBackupCurrLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + HostBackupCursorMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + HostBackupColumnsOffset: ImVec1 = @import("std").mem.zeroes(ImVec1), + HostBackupItemWidth: f32 = @import("std").mem.zeroes(f32), + HostBackupItemWidthStackSize: c_int = @import("std").mem.zeroes(c_int), +}; +pub const ImGuiTableTempData = struct_ImGuiTableTempData; +pub const ImGuiTableColumnFlags = c_int; +pub const ImGuiTableColumnIdx = ImS8; +pub const ImGuiTableDrawChannelIdx = ImU8; +// cimgui2.h:2685:10: warning: struct demoted to opaque type - has bitfield +pub const struct_ImGuiTableColumn = opaque {}; +pub const ImGuiTableColumn = struct_ImGuiTableColumn; +pub const struct_ImSpan_ImGuiTableColumn = extern struct { + Data: ?*ImGuiTableColumn = @import("std").mem.zeroes(?*ImGuiTableColumn), + DataEnd: ?*ImGuiTableColumn = @import("std").mem.zeroes(?*ImGuiTableColumn), +}; +pub const ImSpan_ImGuiTableColumn = struct_ImSpan_ImGuiTableColumn; +pub const struct_ImSpan_ImGuiTableColumnIdx = extern struct { + Data: [*c]ImGuiTableColumnIdx = @import("std").mem.zeroes([*c]ImGuiTableColumnIdx), + DataEnd: [*c]ImGuiTableColumnIdx = @import("std").mem.zeroes([*c]ImGuiTableColumnIdx), +}; +pub const ImSpan_ImGuiTableColumnIdx = struct_ImSpan_ImGuiTableColumnIdx; +pub const struct_ImGuiTableCellData = extern struct { + BgColor: ImU32 = @import("std").mem.zeroes(ImU32), + Column: ImGuiTableColumnIdx = @import("std").mem.zeroes(ImGuiTableColumnIdx), +}; +pub const ImGuiTableCellData = struct_ImGuiTableCellData; +pub const struct_ImSpan_ImGuiTableCellData = extern struct { + Data: [*c]ImGuiTableCellData = @import("std").mem.zeroes([*c]ImGuiTableCellData), + DataEnd: [*c]ImGuiTableCellData = @import("std").mem.zeroes([*c]ImGuiTableCellData), +}; +pub const ImSpan_ImGuiTableCellData = struct_ImSpan_ImGuiTableCellData; +// cimgui2.h:2737:24: warning: struct demoted to opaque type - has bitfield +pub const struct_ImGuiTable = opaque {}; +pub const ImGuiTable = struct_ImGuiTable; +pub const struct_ImVector_ImGuiTableTempData = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiTableTempData = @import("std").mem.zeroes([*c]ImGuiTableTempData), +}; +pub const ImVector_ImGuiTableTempData = struct_ImVector_ImGuiTableTempData; +pub const struct_ImVector_ImGuiTable = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: ?*ImGuiTable = @import("std").mem.zeroes(?*ImGuiTable), +}; +pub const ImVector_ImGuiTable = struct_ImVector_ImGuiTable; +pub const ImPoolIdx = c_int; +pub const struct_ImPool_ImGuiTable = extern struct { + Buf: ImVector_ImGuiTable = @import("std").mem.zeroes(ImVector_ImGuiTable), + Map: ImGuiStorage = @import("std").mem.zeroes(ImGuiStorage), + FreeIdx: ImPoolIdx = @import("std").mem.zeroes(ImPoolIdx), + AliveCount: ImPoolIdx = @import("std").mem.zeroes(ImPoolIdx), +}; +pub const ImPool_ImGuiTable = struct_ImPool_ImGuiTable; +pub const struct_ImVector_ImGuiTabBar = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiTabBar = @import("std").mem.zeroes([*c]ImGuiTabBar), +}; +pub const ImVector_ImGuiTabBar = struct_ImVector_ImGuiTabBar; +pub const struct_ImPool_ImGuiTabBar = extern struct { + Buf: ImVector_ImGuiTabBar = @import("std").mem.zeroes(ImVector_ImGuiTabBar), + Map: ImGuiStorage = @import("std").mem.zeroes(ImGuiStorage), + FreeIdx: ImPoolIdx = @import("std").mem.zeroes(ImPoolIdx), + AliveCount: ImPoolIdx = @import("std").mem.zeroes(ImPoolIdx), +}; +pub const ImPool_ImGuiTabBar = struct_ImPool_ImGuiTabBar; +pub const struct_ImGuiPtrOrIndex = extern struct { + Ptr: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + Index: c_int = @import("std").mem.zeroes(c_int), +}; +pub const ImGuiPtrOrIndex = struct_ImGuiPtrOrIndex; +pub const struct_ImVector_ImGuiPtrOrIndex = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiPtrOrIndex = @import("std").mem.zeroes([*c]ImGuiPtrOrIndex), +}; +pub const ImVector_ImGuiPtrOrIndex = struct_ImVector_ImGuiPtrOrIndex; +pub const struct_ImGuiShrinkWidthItem = extern struct { + Index: c_int = @import("std").mem.zeroes(c_int), + Width: f32 = @import("std").mem.zeroes(f32), + InitialWidth: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiShrinkWidthItem = struct_ImGuiShrinkWidthItem; +pub const struct_ImVector_ImGuiShrinkWidthItem = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiShrinkWidthItem = @import("std").mem.zeroes([*c]ImGuiShrinkWidthItem), +}; +pub const ImVector_ImGuiShrinkWidthItem = struct_ImVector_ImGuiShrinkWidthItem; +pub const struct_StbUndoRecord = extern struct { + where: c_int = @import("std").mem.zeroes(c_int), + insert_length: c_int = @import("std").mem.zeroes(c_int), + delete_length: c_int = @import("std").mem.zeroes(c_int), + char_storage: c_int = @import("std").mem.zeroes(c_int), +}; +pub const StbUndoRecord = struct_StbUndoRecord; +pub const struct_StbUndoState = extern struct { + undo_rec: [99]StbUndoRecord = @import("std").mem.zeroes([99]StbUndoRecord), + undo_char: [999]ImWchar = @import("std").mem.zeroes([999]ImWchar), + undo_point: c_short = @import("std").mem.zeroes(c_short), + redo_point: c_short = @import("std").mem.zeroes(c_short), + undo_char_point: c_int = @import("std").mem.zeroes(c_int), + redo_char_point: c_int = @import("std").mem.zeroes(c_int), +}; +pub const StbUndoState = struct_StbUndoState; +pub const struct_STB_TexteditState = extern struct { + cursor: c_int = @import("std").mem.zeroes(c_int), + select_start: c_int = @import("std").mem.zeroes(c_int), + select_end: c_int = @import("std").mem.zeroes(c_int), + insert_mode: u8 = @import("std").mem.zeroes(u8), + row_count_per_page: c_int = @import("std").mem.zeroes(c_int), + cursor_at_end_of_line: u8 = @import("std").mem.zeroes(u8), + initialized: u8 = @import("std").mem.zeroes(u8), + has_preferred_x: u8 = @import("std").mem.zeroes(u8), + single_line: u8 = @import("std").mem.zeroes(u8), + padding1: u8 = @import("std").mem.zeroes(u8), + padding2: u8 = @import("std").mem.zeroes(u8), + padding3: u8 = @import("std").mem.zeroes(u8), + preferred_x: f32 = @import("std").mem.zeroes(f32), + undostate: StbUndoState = @import("std").mem.zeroes(StbUndoState), +}; +pub const STB_TexteditState = struct_STB_TexteditState; +pub const ImGuiInputTextFlags = c_int; +pub const struct_ImGuiInputTextState = extern struct { + ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + CurLenW: c_int = @import("std").mem.zeroes(c_int), + CurLenA: c_int = @import("std").mem.zeroes(c_int), + TextW: ImVector_ImWchar = @import("std").mem.zeroes(ImVector_ImWchar), + TextA: ImVector_char = @import("std").mem.zeroes(ImVector_char), + InitialTextA: ImVector_char = @import("std").mem.zeroes(ImVector_char), + TextAIsValid: bool = @import("std").mem.zeroes(bool), + BufCapacityA: c_int = @import("std").mem.zeroes(c_int), + ScrollX: f32 = @import("std").mem.zeroes(f32), + Stb: STB_TexteditState = @import("std").mem.zeroes(STB_TexteditState), + CursorAnim: f32 = @import("std").mem.zeroes(f32), + CursorFollow: bool = @import("std").mem.zeroes(bool), + SelectedAllMouseLock: bool = @import("std").mem.zeroes(bool), + Edited: bool = @import("std").mem.zeroes(bool), + Flags: ImGuiInputTextFlags = @import("std").mem.zeroes(ImGuiInputTextFlags), +}; +pub const ImGuiInputTextState = struct_ImGuiInputTextState; +pub const ImGuiColorEditFlags = c_int; +pub const ImGuiLayoutType = c_int; +pub const struct_ImGuiComboPreviewData = extern struct { + PreviewRect: ImRect = @import("std").mem.zeroes(ImRect), + BackupCursorPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + BackupCursorMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + BackupCursorPosPrevLine: ImVec2 = @import("std").mem.zeroes(ImVec2), + BackupPrevLineTextBaseOffset: f32 = @import("std").mem.zeroes(f32), + BackupLayout: ImGuiLayoutType = @import("std").mem.zeroes(ImGuiLayoutType), +}; +pub const ImGuiComboPreviewData = struct_ImGuiComboPreviewData; +pub const struct_ImGuiDockRequest = opaque {}; +pub const ImGuiDockRequest = struct_ImGuiDockRequest; +pub const struct_ImVector_ImGuiDockRequest = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: ?*ImGuiDockRequest = @import("std").mem.zeroes(?*ImGuiDockRequest), +}; +pub const ImVector_ImGuiDockRequest = struct_ImVector_ImGuiDockRequest; +pub const struct_ImGuiDockNodeSettings = opaque {}; +pub const ImGuiDockNodeSettings = struct_ImGuiDockNodeSettings; +pub const struct_ImVector_ImGuiDockNodeSettings = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: ?*ImGuiDockNodeSettings = @import("std").mem.zeroes(?*ImGuiDockNodeSettings), +}; +pub const ImVector_ImGuiDockNodeSettings = struct_ImVector_ImGuiDockNodeSettings; +pub const struct_ImGuiDockContext = extern struct { + Nodes: ImGuiStorage = @import("std").mem.zeroes(ImGuiStorage), + Requests: ImVector_ImGuiDockRequest = @import("std").mem.zeroes(ImVector_ImGuiDockRequest), + NodesSettings: ImVector_ImGuiDockNodeSettings = @import("std").mem.zeroes(ImVector_ImGuiDockNodeSettings), + WantFullRebuild: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiDockContext = struct_ImGuiDockContext; +pub const ImGuiContext = struct_ImGuiContext; +pub const struct_ImGuiSettingsHandler = extern struct { + TypeName: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + TypeHash: ImGuiID = @import("std").mem.zeroes(ImGuiID), + ClearAllFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void), + ReadInitFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void), + ReadOpenFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, [*c]const u8) callconv(.C) ?*anyopaque = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, [*c]const u8) callconv(.C) ?*anyopaque), + ReadLineFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, ?*anyopaque, [*c]const u8) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, ?*anyopaque, [*c]const u8) callconv(.C) void), + ApplyAllFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler) callconv(.C) void), + WriteAllFn: ?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, [*c]ImGuiTextBuffer) callconv(.C) void = @import("std").mem.zeroes(?*const fn ([*c]ImGuiContext, [*c]ImGuiSettingsHandler, [*c]ImGuiTextBuffer) callconv(.C) void), + UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), +}; +pub const ImGuiSettingsHandler = struct_ImGuiSettingsHandler; +pub const struct_ImVector_ImGuiSettingsHandler = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiSettingsHandler = @import("std").mem.zeroes([*c]ImGuiSettingsHandler), +}; +pub const ImVector_ImGuiSettingsHandler = struct_ImVector_ImGuiSettingsHandler; +pub const struct_ImChunkStream_ImGuiWindowSettings = extern struct { + Buf: ImVector_char = @import("std").mem.zeroes(ImVector_char), +}; +pub const ImChunkStream_ImGuiWindowSettings = struct_ImChunkStream_ImGuiWindowSettings; +pub const struct_ImChunkStream_ImGuiTableSettings = extern struct { + Buf: ImVector_char = @import("std").mem.zeroes(ImVector_char), +}; +pub const ImChunkStream_ImGuiTableSettings = struct_ImChunkStream_ImGuiTableSettings; +pub const ImGuiContextHookCallback = ?*const fn ([*c]ImGuiContext, [*c]ImGuiContextHook) callconv(.C) void; +pub const struct_ImGuiContextHook = extern struct { + HookId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + Type: ImGuiContextHookType = @import("std").mem.zeroes(ImGuiContextHookType), + Owner: ImGuiID = @import("std").mem.zeroes(ImGuiID), + Callback: ImGuiContextHookCallback = @import("std").mem.zeroes(ImGuiContextHookCallback), + UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), +}; +pub const ImGuiContextHook = struct_ImGuiContextHook; +pub const struct_ImVector_ImGuiContextHook = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiContextHook = @import("std").mem.zeroes([*c]ImGuiContextHook), +}; +pub const ImVector_ImGuiContextHook = struct_ImVector_ImGuiContextHook; +pub const ImGuiDebugLogFlags = c_int; +pub const struct_ImGuiMetricsConfig = extern struct { + ShowDebugLog: bool = @import("std").mem.zeroes(bool), + ShowStackTool: bool = @import("std").mem.zeroes(bool), + ShowWindowsRects: bool = @import("std").mem.zeroes(bool), + ShowWindowsBeginOrder: bool = @import("std").mem.zeroes(bool), + ShowTablesRects: bool = @import("std").mem.zeroes(bool), + ShowDrawCmdMesh: bool = @import("std").mem.zeroes(bool), + ShowDrawCmdBoundingBoxes: bool = @import("std").mem.zeroes(bool), + ShowDockingNodes: bool = @import("std").mem.zeroes(bool), + ShowWindowsRectsType: c_int = @import("std").mem.zeroes(c_int), + ShowTablesRectsType: c_int = @import("std").mem.zeroes(c_int), +}; +pub const ImGuiMetricsConfig = struct_ImGuiMetricsConfig; +// cimgui2.h:2127:19: warning: struct demoted to opaque type - has bitfield +pub const struct_ImGuiStackLevelInfo = opaque {}; +pub const ImGuiStackLevelInfo = struct_ImGuiStackLevelInfo; +pub const struct_ImVector_ImGuiStackLevelInfo = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: ?*ImGuiStackLevelInfo = @import("std").mem.zeroes(?*ImGuiStackLevelInfo), +}; +pub const ImVector_ImGuiStackLevelInfo = struct_ImVector_ImGuiStackLevelInfo; +pub const struct_ImGuiStackTool = extern struct { + LastActiveFrame: c_int = @import("std").mem.zeroes(c_int), + StackLevel: c_int = @import("std").mem.zeroes(c_int), + QueryId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + Results: ImVector_ImGuiStackLevelInfo = @import("std").mem.zeroes(ImVector_ImGuiStackLevelInfo), + CopyToClipboardOnCtrlC: bool = @import("std").mem.zeroes(bool), + CopyToClipboardLastTime: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiStackTool = struct_ImGuiStackTool; +pub const struct_ImGuiContext = extern struct { + Initialized: bool = @import("std").mem.zeroes(bool), + FontAtlasOwnedByContext: bool = @import("std").mem.zeroes(bool), + IO: ImGuiIO = @import("std").mem.zeroes(ImGuiIO), + PlatformIO: ImGuiPlatformIO = @import("std").mem.zeroes(ImGuiPlatformIO), + InputEventsQueue: ImVector_ImGuiInputEvent = @import("std").mem.zeroes(ImVector_ImGuiInputEvent), + InputEventsTrail: ImVector_ImGuiInputEvent = @import("std").mem.zeroes(ImVector_ImGuiInputEvent), + Style: ImGuiStyle = @import("std").mem.zeroes(ImGuiStyle), + ConfigFlagsCurrFrame: ImGuiConfigFlags = @import("std").mem.zeroes(ImGuiConfigFlags), + ConfigFlagsLastFrame: ImGuiConfigFlags = @import("std").mem.zeroes(ImGuiConfigFlags), + Font: [*c]ImFont = @import("std").mem.zeroes([*c]ImFont), + FontSize: f32 = @import("std").mem.zeroes(f32), + FontBaseSize: f32 = @import("std").mem.zeroes(f32), + DrawListSharedData: ImDrawListSharedData = @import("std").mem.zeroes(ImDrawListSharedData), + Time: f64 = @import("std").mem.zeroes(f64), + FrameCount: c_int = @import("std").mem.zeroes(c_int), + FrameCountEnded: c_int = @import("std").mem.zeroes(c_int), + FrameCountPlatformEnded: c_int = @import("std").mem.zeroes(c_int), + FrameCountRendered: c_int = @import("std").mem.zeroes(c_int), + WithinFrameScope: bool = @import("std").mem.zeroes(bool), + WithinFrameScopeWithImplicitWindow: bool = @import("std").mem.zeroes(bool), + WithinEndChild: bool = @import("std").mem.zeroes(bool), + GcCompactAll: bool = @import("std").mem.zeroes(bool), + TestEngineHookItems: bool = @import("std").mem.zeroes(bool), + TestEngine: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + Windows: ImVector_ImGuiWindowPtr = @import("std").mem.zeroes(ImVector_ImGuiWindowPtr), + WindowsFocusOrder: ImVector_ImGuiWindowPtr = @import("std").mem.zeroes(ImVector_ImGuiWindowPtr), + WindowsTempSortBuffer: ImVector_ImGuiWindowPtr = @import("std").mem.zeroes(ImVector_ImGuiWindowPtr), + CurrentWindowStack: ImVector_ImGuiWindowStackData = @import("std").mem.zeroes(ImVector_ImGuiWindowStackData), + WindowsById: ImGuiStorage = @import("std").mem.zeroes(ImGuiStorage), + WindowsActiveCount: c_int = @import("std").mem.zeroes(c_int), + WindowsHoverPadding: ImVec2 = @import("std").mem.zeroes(ImVec2), + CurrentWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + HoveredWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + HoveredWindowUnderMovingWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + HoveredDockNode: ?*ImGuiDockNode = @import("std").mem.zeroes(?*ImGuiDockNode), + MovingWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + WheelingWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + WheelingWindowRefMousePos: ImVec2 = @import("std").mem.zeroes(ImVec2), + WheelingWindowTimer: f32 = @import("std").mem.zeroes(f32), + DebugHookIdInfo: ImGuiID = @import("std").mem.zeroes(ImGuiID), + HoveredId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + HoveredIdPreviousFrame: ImGuiID = @import("std").mem.zeroes(ImGuiID), + HoveredIdAllowOverlap: bool = @import("std").mem.zeroes(bool), + HoveredIdUsingMouseWheel: bool = @import("std").mem.zeroes(bool), + HoveredIdPreviousFrameUsingMouseWheel: bool = @import("std").mem.zeroes(bool), + HoveredIdDisabled: bool = @import("std").mem.zeroes(bool), + HoveredIdTimer: f32 = @import("std").mem.zeroes(f32), + HoveredIdNotActiveTimer: f32 = @import("std").mem.zeroes(f32), + ActiveId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + ActiveIdIsAlive: ImGuiID = @import("std").mem.zeroes(ImGuiID), + ActiveIdTimer: f32 = @import("std").mem.zeroes(f32), + ActiveIdIsJustActivated: bool = @import("std").mem.zeroes(bool), + ActiveIdAllowOverlap: bool = @import("std").mem.zeroes(bool), + ActiveIdNoClearOnFocusLoss: bool = @import("std").mem.zeroes(bool), + ActiveIdHasBeenPressedBefore: bool = @import("std").mem.zeroes(bool), + ActiveIdHasBeenEditedBefore: bool = @import("std").mem.zeroes(bool), + ActiveIdHasBeenEditedThisFrame: bool = @import("std").mem.zeroes(bool), + ActiveIdClickOffset: ImVec2 = @import("std").mem.zeroes(ImVec2), + ActiveIdWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + ActiveIdSource: ImGuiInputSource = @import("std").mem.zeroes(ImGuiInputSource), + ActiveIdMouseButton: c_int = @import("std").mem.zeroes(c_int), + ActiveIdPreviousFrame: ImGuiID = @import("std").mem.zeroes(ImGuiID), + ActiveIdPreviousFrameIsAlive: bool = @import("std").mem.zeroes(bool), + ActiveIdPreviousFrameHasBeenEditedBefore: bool = @import("std").mem.zeroes(bool), + ActiveIdPreviousFrameWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + LastActiveId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + LastActiveIdTimer: f32 = @import("std").mem.zeroes(f32), + ActiveIdUsingMouseWheel: bool = @import("std").mem.zeroes(bool), + ActiveIdUsingNavDirMask: ImU32 = @import("std").mem.zeroes(ImU32), + ActiveIdUsingNavInputMask: ImU32 = @import("std").mem.zeroes(ImU32), + ActiveIdUsingKeyInputMask: ImBitArrayForNamedKeys = @import("std").mem.zeroes(ImBitArrayForNamedKeys), + CurrentItemFlags: ImGuiItemFlags = @import("std").mem.zeroes(ImGuiItemFlags), + NextItemData: ImGuiNextItemData = @import("std").mem.zeroes(ImGuiNextItemData), + LastItemData: ImGuiLastItemData = @import("std").mem.zeroes(ImGuiLastItemData), + NextWindowData: ImGuiNextWindowData = @import("std").mem.zeroes(ImGuiNextWindowData), + ColorStack: ImVector_ImGuiColorMod = @import("std").mem.zeroes(ImVector_ImGuiColorMod), + StyleVarStack: ImVector_ImGuiStyleMod = @import("std").mem.zeroes(ImVector_ImGuiStyleMod), + FontStack: ImVector_ImFontPtr = @import("std").mem.zeroes(ImVector_ImFontPtr), + FocusScopeStack: ImVector_ImGuiID = @import("std").mem.zeroes(ImVector_ImGuiID), + ItemFlagsStack: ImVector_ImGuiItemFlags = @import("std").mem.zeroes(ImVector_ImGuiItemFlags), + GroupStack: ImVector_ImGuiGroupData = @import("std").mem.zeroes(ImVector_ImGuiGroupData), + OpenPopupStack: ImVector_ImGuiPopupData = @import("std").mem.zeroes(ImVector_ImGuiPopupData), + BeginPopupStack: ImVector_ImGuiPopupData = @import("std").mem.zeroes(ImVector_ImGuiPopupData), + BeginMenuCount: c_int = @import("std").mem.zeroes(c_int), + Viewports: ImVector_ImGuiViewportPPtr = @import("std").mem.zeroes(ImVector_ImGuiViewportPPtr), + CurrentDpiScale: f32 = @import("std").mem.zeroes(f32), + CurrentViewport: [*c]ImGuiViewportP = @import("std").mem.zeroes([*c]ImGuiViewportP), + MouseViewport: [*c]ImGuiViewportP = @import("std").mem.zeroes([*c]ImGuiViewportP), + MouseLastHoveredViewport: [*c]ImGuiViewportP = @import("std").mem.zeroes([*c]ImGuiViewportP), + PlatformLastFocusedViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + FallbackMonitor: ImGuiPlatformMonitor = @import("std").mem.zeroes(ImGuiPlatformMonitor), + ViewportFrontMostStampCount: c_int = @import("std").mem.zeroes(c_int), + NavWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + NavId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavFocusScopeId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavActivateId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavActivateDownId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavActivatePressedId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavActivateInputId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavActivateFlags: ImGuiActivateFlags = @import("std").mem.zeroes(ImGuiActivateFlags), + NavJustMovedToId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavJustMovedToFocusScopeId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavJustMovedToKeyMods: ImGuiModFlags = @import("std").mem.zeroes(ImGuiModFlags), + NavNextActivateId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavNextActivateFlags: ImGuiActivateFlags = @import("std").mem.zeroes(ImGuiActivateFlags), + NavInputSource: ImGuiInputSource = @import("std").mem.zeroes(ImGuiInputSource), + NavLayer: ImGuiNavLayer = @import("std").mem.zeroes(ImGuiNavLayer), + NavIdIsAlive: bool = @import("std").mem.zeroes(bool), + NavMousePosDirty: bool = @import("std").mem.zeroes(bool), + NavDisableHighlight: bool = @import("std").mem.zeroes(bool), + NavDisableMouseHover: bool = @import("std").mem.zeroes(bool), + NavAnyRequest: bool = @import("std").mem.zeroes(bool), + NavInitRequest: bool = @import("std").mem.zeroes(bool), + NavInitRequestFromMove: bool = @import("std").mem.zeroes(bool), + NavInitResultId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavInitResultRectRel: ImRect = @import("std").mem.zeroes(ImRect), + NavMoveSubmitted: bool = @import("std").mem.zeroes(bool), + NavMoveScoringItems: bool = @import("std").mem.zeroes(bool), + NavMoveForwardToNextFrame: bool = @import("std").mem.zeroes(bool), + NavMoveFlags: ImGuiNavMoveFlags = @import("std").mem.zeroes(ImGuiNavMoveFlags), + NavMoveScrollFlags: ImGuiScrollFlags = @import("std").mem.zeroes(ImGuiScrollFlags), + NavMoveKeyMods: ImGuiModFlags = @import("std").mem.zeroes(ImGuiModFlags), + NavMoveDir: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), + NavMoveDirForDebug: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), + NavMoveClipDir: ImGuiDir = @import("std").mem.zeroes(ImGuiDir), + NavScoringRect: ImRect = @import("std").mem.zeroes(ImRect), + NavScoringNoClipRect: ImRect = @import("std").mem.zeroes(ImRect), + NavScoringDebugCount: c_int = @import("std").mem.zeroes(c_int), + NavTabbingDir: c_int = @import("std").mem.zeroes(c_int), + NavTabbingCounter: c_int = @import("std").mem.zeroes(c_int), + NavMoveResultLocal: ImGuiNavItemData = @import("std").mem.zeroes(ImGuiNavItemData), + NavMoveResultLocalVisible: ImGuiNavItemData = @import("std").mem.zeroes(ImGuiNavItemData), + NavMoveResultOther: ImGuiNavItemData = @import("std").mem.zeroes(ImGuiNavItemData), + NavTabbingResultFirst: ImGuiNavItemData = @import("std").mem.zeroes(ImGuiNavItemData), + NavWindowingTarget: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + NavWindowingTargetAnim: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + NavWindowingListWindow: ?*ImGuiWindow = @import("std").mem.zeroes(?*ImGuiWindow), + NavWindowingTimer: f32 = @import("std").mem.zeroes(f32), + NavWindowingHighlightAlpha: f32 = @import("std").mem.zeroes(f32), + NavWindowingToggleLayer: bool = @import("std").mem.zeroes(bool), + DimBgRatio: f32 = @import("std").mem.zeroes(f32), + MouseCursor: ImGuiMouseCursor = @import("std").mem.zeroes(ImGuiMouseCursor), + DragDropActive: bool = @import("std").mem.zeroes(bool), + DragDropWithinSource: bool = @import("std").mem.zeroes(bool), + DragDropWithinTarget: bool = @import("std").mem.zeroes(bool), + DragDropSourceFlags: ImGuiDragDropFlags = @import("std").mem.zeroes(ImGuiDragDropFlags), + DragDropSourceFrameCount: c_int = @import("std").mem.zeroes(c_int), + DragDropMouseButton: c_int = @import("std").mem.zeroes(c_int), + DragDropPayload: ImGuiPayload = @import("std").mem.zeroes(ImGuiPayload), + DragDropTargetRect: ImRect = @import("std").mem.zeroes(ImRect), + DragDropTargetId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DragDropAcceptFlags: ImGuiDragDropFlags = @import("std").mem.zeroes(ImGuiDragDropFlags), + DragDropAcceptIdCurrRectSurface: f32 = @import("std").mem.zeroes(f32), + DragDropAcceptIdCurr: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DragDropAcceptIdPrev: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DragDropAcceptFrameCount: c_int = @import("std").mem.zeroes(c_int), + DragDropHoldJustPressedId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DragDropPayloadBufHeap: ImVector_unsigned_char = @import("std").mem.zeroes(ImVector_unsigned_char), + DragDropPayloadBufLocal: [16]u8 = @import("std").mem.zeroes([16]u8), + ClipperTempDataStacked: c_int = @import("std").mem.zeroes(c_int), + ClipperTempData: ImVector_ImGuiListClipperData = @import("std").mem.zeroes(ImVector_ImGuiListClipperData), + CurrentTable: ?*ImGuiTable = @import("std").mem.zeroes(?*ImGuiTable), + TablesTempDataStacked: c_int = @import("std").mem.zeroes(c_int), + TablesTempData: ImVector_ImGuiTableTempData = @import("std").mem.zeroes(ImVector_ImGuiTableTempData), + Tables: ImPool_ImGuiTable = @import("std").mem.zeroes(ImPool_ImGuiTable), + TablesLastTimeActive: ImVector_float = @import("std").mem.zeroes(ImVector_float), + DrawChannelsTempMergeBuffer: ImVector_ImDrawChannel = @import("std").mem.zeroes(ImVector_ImDrawChannel), + CurrentTabBar: [*c]ImGuiTabBar = @import("std").mem.zeroes([*c]ImGuiTabBar), + TabBars: ImPool_ImGuiTabBar = @import("std").mem.zeroes(ImPool_ImGuiTabBar), + CurrentTabBarStack: ImVector_ImGuiPtrOrIndex = @import("std").mem.zeroes(ImVector_ImGuiPtrOrIndex), + ShrinkWidthBuffer: ImVector_ImGuiShrinkWidthItem = @import("std").mem.zeroes(ImVector_ImGuiShrinkWidthItem), + MouseLastValidPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + InputTextState: ImGuiInputTextState = @import("std").mem.zeroes(ImGuiInputTextState), + InputTextPasswordFont: ImFont = @import("std").mem.zeroes(ImFont), + TempInputId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + ColorEditOptions: ImGuiColorEditFlags = @import("std").mem.zeroes(ImGuiColorEditFlags), + ColorEditLastHue: f32 = @import("std").mem.zeroes(f32), + ColorEditLastSat: f32 = @import("std").mem.zeroes(f32), + ColorEditLastColor: ImU32 = @import("std").mem.zeroes(ImU32), + ColorPickerRef: ImVec4 = @import("std").mem.zeroes(ImVec4), + ComboPreviewData: ImGuiComboPreviewData = @import("std").mem.zeroes(ImGuiComboPreviewData), + SliderGrabClickOffset: f32 = @import("std").mem.zeroes(f32), + SliderCurrentAccum: f32 = @import("std").mem.zeroes(f32), + SliderCurrentAccumDirty: bool = @import("std").mem.zeroes(bool), + DragCurrentAccumDirty: bool = @import("std").mem.zeroes(bool), + DragCurrentAccum: f32 = @import("std").mem.zeroes(f32), + DragSpeedDefaultRatio: f32 = @import("std").mem.zeroes(f32), + ScrollbarClickDeltaToGrabCenter: f32 = @import("std").mem.zeroes(f32), + DisabledAlphaBackup: f32 = @import("std").mem.zeroes(f32), + DisabledStackSize: c_short = @import("std").mem.zeroes(c_short), + TooltipOverrideCount: c_short = @import("std").mem.zeroes(c_short), + TooltipSlowDelay: f32 = @import("std").mem.zeroes(f32), + ClipboardHandlerData: ImVector_char = @import("std").mem.zeroes(ImVector_char), + MenusIdSubmittedThisFrame: ImVector_ImGuiID = @import("std").mem.zeroes(ImVector_ImGuiID), + PlatformImeData: ImGuiPlatformImeData = @import("std").mem.zeroes(ImGuiPlatformImeData), + PlatformImeDataPrev: ImGuiPlatformImeData = @import("std").mem.zeroes(ImGuiPlatformImeData), + PlatformImeViewport: ImGuiID = @import("std").mem.zeroes(ImGuiID), + PlatformLocaleDecimalPoint: u8 = @import("std").mem.zeroes(u8), + DockContext: ImGuiDockContext = @import("std").mem.zeroes(ImGuiDockContext), + SettingsLoaded: bool = @import("std").mem.zeroes(bool), + SettingsDirtyTimer: f32 = @import("std").mem.zeroes(f32), + SettingsIniData: ImGuiTextBuffer = @import("std").mem.zeroes(ImGuiTextBuffer), + SettingsHandlers: ImVector_ImGuiSettingsHandler = @import("std").mem.zeroes(ImVector_ImGuiSettingsHandler), + SettingsWindows: ImChunkStream_ImGuiWindowSettings = @import("std").mem.zeroes(ImChunkStream_ImGuiWindowSettings), + SettingsTables: ImChunkStream_ImGuiTableSettings = @import("std").mem.zeroes(ImChunkStream_ImGuiTableSettings), + Hooks: ImVector_ImGuiContextHook = @import("std").mem.zeroes(ImVector_ImGuiContextHook), + HookIdNext: ImGuiID = @import("std").mem.zeroes(ImGuiID), + LogEnabled: bool = @import("std").mem.zeroes(bool), + LogType: ImGuiLogType = @import("std").mem.zeroes(ImGuiLogType), + LogFile: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + LogBuffer: ImGuiTextBuffer = @import("std").mem.zeroes(ImGuiTextBuffer), + LogNextPrefix: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + LogNextSuffix: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + LogLinePosY: f32 = @import("std").mem.zeroes(f32), + LogLineFirstItem: bool = @import("std").mem.zeroes(bool), + LogDepthRef: c_int = @import("std").mem.zeroes(c_int), + LogDepthToExpand: c_int = @import("std").mem.zeroes(c_int), + LogDepthToExpandDefault: c_int = @import("std").mem.zeroes(c_int), + DebugLogFlags: ImGuiDebugLogFlags = @import("std").mem.zeroes(ImGuiDebugLogFlags), + DebugLogBuf: ImGuiTextBuffer = @import("std").mem.zeroes(ImGuiTextBuffer), + DebugItemPickerActive: bool = @import("std").mem.zeroes(bool), + DebugItemPickerBreakId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DebugMetricsConfig: ImGuiMetricsConfig = @import("std").mem.zeroes(ImGuiMetricsConfig), + DebugStackTool: ImGuiStackTool = @import("std").mem.zeroes(ImGuiStackTool), + FramerateSecPerFrame: [120]f32 = @import("std").mem.zeroes([120]f32), + FramerateSecPerFrameIdx: c_int = @import("std").mem.zeroes(c_int), + FramerateSecPerFrameCount: c_int = @import("std").mem.zeroes(c_int), + FramerateSecPerFrameAccum: f32 = @import("std").mem.zeroes(f32), + WantCaptureMouseNextFrame: c_int = @import("std").mem.zeroes(c_int), + WantCaptureKeyboardNextFrame: c_int = @import("std").mem.zeroes(c_int), + WantTextInputNextFrame: c_int = @import("std").mem.zeroes(c_int), + TempBuffer: ImVector_char = @import("std").mem.zeroes(ImVector_char), +}; +pub const struct_ImGuiInputTextCallbackData = extern struct { + EventFlag: ImGuiInputTextFlags = @import("std").mem.zeroes(ImGuiInputTextFlags), + Flags: ImGuiInputTextFlags = @import("std").mem.zeroes(ImGuiInputTextFlags), + UserData: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), + EventChar: ImWchar = @import("std").mem.zeroes(ImWchar), + EventKey: ImGuiKey = @import("std").mem.zeroes(ImGuiKey), + Buf: [*c]u8 = @import("std").mem.zeroes([*c]u8), + BufTextLen: c_int = @import("std").mem.zeroes(c_int), + BufSize: c_int = @import("std").mem.zeroes(c_int), + BufDirty: bool = @import("std").mem.zeroes(bool), + CursorPos: c_int = @import("std").mem.zeroes(c_int), + SelectionStart: c_int = @import("std").mem.zeroes(c_int), + SelectionEnd: c_int = @import("std").mem.zeroes(c_int), +}; +pub const ImGuiInputTextCallbackData = struct_ImGuiInputTextCallbackData; +pub const struct_ImGuiOnceUponAFrame = extern struct { + RefFrame: c_int = @import("std").mem.zeroes(c_int), +}; +pub const ImGuiOnceUponAFrame = struct_ImGuiOnceUponAFrame; +// cimgui2.h:969:24: warning: struct demoted to opaque type - has bitfield +pub const struct_ImGuiTableColumnSortSpecs = opaque {}; +pub const ImGuiTableColumnSortSpecs = struct_ImGuiTableColumnSortSpecs; +pub const struct_ImGuiTableSortSpecs = extern struct { + Specs: ?*const ImGuiTableColumnSortSpecs = @import("std").mem.zeroes(?*const ImGuiTableColumnSortSpecs), + SpecsCount: c_int = @import("std").mem.zeroes(c_int), + SpecsDirty: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiTableSortSpecs = struct_ImGuiTableSortSpecs; +pub const struct_ImGuiTextRange = extern struct { + b: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + e: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), +}; +pub const ImGuiTextRange = struct_ImGuiTextRange; +pub const struct_ImVector_ImGuiTextRange = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiTextRange = @import("std").mem.zeroes([*c]ImGuiTextRange), +}; +pub const ImVector_ImGuiTextRange = struct_ImVector_ImGuiTextRange; +pub const struct_ImGuiTextFilter = extern struct { + InputBuf: [256]u8 = @import("std").mem.zeroes([256]u8), + Filters: ImVector_ImGuiTextRange = @import("std").mem.zeroes(ImVector_ImGuiTextRange), + CountGrep: c_int = @import("std").mem.zeroes(c_int), +}; +pub const ImGuiTextFilter = struct_ImGuiTextFilter; +pub const struct_ImBitVector = extern struct { + Storage: ImVector_ImU32 = @import("std").mem.zeroes(ImVector_ImU32), +}; +pub const ImBitVector = struct_ImBitVector; +pub const struct_ImGuiDataTypeInfo = extern struct { + Size: usize = @import("std").mem.zeroes(usize), + Name: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + PrintFmt: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), + ScanFmt: [*c]const u8 = @import("std").mem.zeroes([*c]const u8), +}; +pub const ImGuiDataTypeInfo = struct_ImGuiDataTypeInfo; +pub const struct_ImGuiMenuColumns = extern struct { + TotalWidth: ImU32 = @import("std").mem.zeroes(ImU32), + NextTotalWidth: ImU32 = @import("std").mem.zeroes(ImU32), + Spacing: ImU16 = @import("std").mem.zeroes(ImU16), + OffsetIcon: ImU16 = @import("std").mem.zeroes(ImU16), + OffsetLabel: ImU16 = @import("std").mem.zeroes(ImU16), + OffsetShortcut: ImU16 = @import("std").mem.zeroes(ImU16), + OffsetMark: ImU16 = @import("std").mem.zeroes(ImU16), + Widths: [4]ImU16 = @import("std").mem.zeroes([4]ImU16), +}; +pub const ImGuiMenuColumns = struct_ImGuiMenuColumns; +pub const ImGuiOldColumnFlags = c_int; +pub const struct_ImGuiOldColumnData = extern struct { + OffsetNorm: f32 = @import("std").mem.zeroes(f32), + OffsetNormBeforeResize: f32 = @import("std").mem.zeroes(f32), + Flags: ImGuiOldColumnFlags = @import("std").mem.zeroes(ImGuiOldColumnFlags), + ClipRect: ImRect = @import("std").mem.zeroes(ImRect), +}; +pub const ImGuiOldColumnData = struct_ImGuiOldColumnData; +pub const struct_ImVector_ImGuiOldColumnData = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiOldColumnData = @import("std").mem.zeroes([*c]ImGuiOldColumnData), +}; +pub const ImVector_ImGuiOldColumnData = struct_ImVector_ImGuiOldColumnData; +pub const struct_ImGuiOldColumns = extern struct { + ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + Flags: ImGuiOldColumnFlags = @import("std").mem.zeroes(ImGuiOldColumnFlags), + IsFirstFrame: bool = @import("std").mem.zeroes(bool), + IsBeingResized: bool = @import("std").mem.zeroes(bool), + Current: c_int = @import("std").mem.zeroes(c_int), + Count: c_int = @import("std").mem.zeroes(c_int), + OffMinX: f32 = @import("std").mem.zeroes(f32), + OffMaxX: f32 = @import("std").mem.zeroes(f32), + LineMinY: f32 = @import("std").mem.zeroes(f32), + LineMaxY: f32 = @import("std").mem.zeroes(f32), + HostCursorPosY: f32 = @import("std").mem.zeroes(f32), + HostCursorMaxPosX: f32 = @import("std").mem.zeroes(f32), + HostInitialClipRect: ImRect = @import("std").mem.zeroes(ImRect), + HostBackupClipRect: ImRect = @import("std").mem.zeroes(ImRect), + HostBackupParentWorkRect: ImRect = @import("std").mem.zeroes(ImRect), + Columns: ImVector_ImGuiOldColumnData = @import("std").mem.zeroes(ImVector_ImGuiOldColumnData), + Splitter: ImDrawListSplitter = @import("std").mem.zeroes(ImDrawListSplitter), +}; +pub const ImGuiOldColumns = struct_ImGuiOldColumns; +pub const struct_ImGuiTableInstanceData = extern struct { + LastOuterHeight: f32 = @import("std").mem.zeroes(f32), + LastFirstRowHeight: f32 = @import("std").mem.zeroes(f32), +}; +pub const ImGuiTableInstanceData = struct_ImGuiTableInstanceData; +pub const struct_ImGuiTableSettings = extern struct { + ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + SaveFlags: ImGuiTableFlags = @import("std").mem.zeroes(ImGuiTableFlags), + RefScale: f32 = @import("std").mem.zeroes(f32), + ColumnsCount: ImGuiTableColumnIdx = @import("std").mem.zeroes(ImGuiTableColumnIdx), + ColumnsCountMax: ImGuiTableColumnIdx = @import("std").mem.zeroes(ImGuiTableColumnIdx), + WantApply: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiTableSettings = struct_ImGuiTableSettings; +pub const struct_ImGuiTableColumnsSettings = opaque {}; +pub const ImGuiTableColumnsSettings = struct_ImGuiTableColumnsSettings; +pub const struct_ImGuiWindowTempData = extern struct { + CursorPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + CursorPosPrevLine: ImVec2 = @import("std").mem.zeroes(ImVec2), + CursorStartPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + CursorMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + IdealMaxPos: ImVec2 = @import("std").mem.zeroes(ImVec2), + CurrLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + PrevLineSize: ImVec2 = @import("std").mem.zeroes(ImVec2), + CurrLineTextBaseOffset: f32 = @import("std").mem.zeroes(f32), + PrevLineTextBaseOffset: f32 = @import("std").mem.zeroes(f32), + IsSameLine: bool = @import("std").mem.zeroes(bool), + Indent: ImVec1 = @import("std").mem.zeroes(ImVec1), + ColumnsOffset: ImVec1 = @import("std").mem.zeroes(ImVec1), + GroupOffset: ImVec1 = @import("std").mem.zeroes(ImVec1), + CursorStartPosLossyness: ImVec2 = @import("std").mem.zeroes(ImVec2), + NavLayerCurrent: ImGuiNavLayer = @import("std").mem.zeroes(ImGuiNavLayer), + NavLayersActiveMask: c_short = @import("std").mem.zeroes(c_short), + NavLayersActiveMaskNext: c_short = @import("std").mem.zeroes(c_short), + NavFocusScopeIdCurrent: ImGuiID = @import("std").mem.zeroes(ImGuiID), + NavHideHighlightOneFrame: bool = @import("std").mem.zeroes(bool), + NavHasScroll: bool = @import("std").mem.zeroes(bool), + MenuBarAppending: bool = @import("std").mem.zeroes(bool), + MenuBarOffset: ImVec2 = @import("std").mem.zeroes(ImVec2), + MenuColumns: ImGuiMenuColumns = @import("std").mem.zeroes(ImGuiMenuColumns), + TreeDepth: c_int = @import("std").mem.zeroes(c_int), + TreeJumpToParentOnPopMask: ImU32 = @import("std").mem.zeroes(ImU32), + ChildWindows: ImVector_ImGuiWindowPtr = @import("std").mem.zeroes(ImVector_ImGuiWindowPtr), + StateStorage: [*c]ImGuiStorage = @import("std").mem.zeroes([*c]ImGuiStorage), + CurrentColumns: [*c]ImGuiOldColumns = @import("std").mem.zeroes([*c]ImGuiOldColumns), + CurrentTableIdx: c_int = @import("std").mem.zeroes(c_int), + LayoutType: ImGuiLayoutType = @import("std").mem.zeroes(ImGuiLayoutType), + ParentLayoutType: ImGuiLayoutType = @import("std").mem.zeroes(ImGuiLayoutType), + ItemWidth: f32 = @import("std").mem.zeroes(f32), + TextWrapPos: f32 = @import("std").mem.zeroes(f32), + ItemWidthStack: ImVector_float = @import("std").mem.zeroes(ImVector_float), + TextWrapPosStack: ImVector_float = @import("std").mem.zeroes(ImVector_float), +}; +pub const ImGuiWindowTempData = struct_ImGuiWindowTempData; +pub const struct_ImVec2ih = extern struct { + x: c_short = @import("std").mem.zeroes(c_short), + y: c_short = @import("std").mem.zeroes(c_short), +}; +pub const ImVec2ih = struct_ImVec2ih; +pub const struct_ImGuiWindowSettings = extern struct { + ID: ImGuiID = @import("std").mem.zeroes(ImGuiID), + Pos: ImVec2ih = @import("std").mem.zeroes(ImVec2ih), + Size: ImVec2ih = @import("std").mem.zeroes(ImVec2ih), + ViewportPos: ImVec2ih = @import("std").mem.zeroes(ImVec2ih), + ViewportId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DockId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + ClassId: ImGuiID = @import("std").mem.zeroes(ImGuiID), + DockOrder: c_short = @import("std").mem.zeroes(c_short), + Collapsed: bool = @import("std").mem.zeroes(bool), + WantApply: bool = @import("std").mem.zeroes(bool), +}; +pub const ImGuiWindowSettings = struct_ImGuiWindowSettings; +pub const struct_ImVector_const_charPtr = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c][*c]const u8 = @import("std").mem.zeroes([*c][*c]const u8), +}; +pub const ImVector_const_charPtr = struct_ImVector_const_charPtr; +pub const ImGuiDataType = c_int; +pub const ImGuiNavInput = c_int; +pub const ImGuiMouseButton = c_int; +pub const ImGuiSortDirection = c_int; +pub const ImGuiTableBgTarget = c_int; +pub const ImDrawFlags = c_int; +pub const ImGuiButtonFlags = c_int; +pub const ImGuiComboFlags = c_int; +pub const ImGuiFocusedFlags = c_int; +pub const ImGuiHoveredFlags = c_int; +pub const ImGuiPopupFlags = c_int; +pub const ImGuiSelectableFlags = c_int; +pub const ImGuiSliderFlags = c_int; +pub const ImGuiTableRowFlags = c_int; +pub const ImGuiTreeNodeFlags = c_int; +pub const ImS64 = c_longlong; +pub const ImWchar32 = c_uint; +pub const ImGuiInputTextCallback = ?*const fn ([*c]ImGuiInputTextCallbackData) callconv(.C) c_int; +pub const ImGuiMemAllocFunc = ?*const fn (usize, ?*anyopaque) callconv(.C) ?*anyopaque; +pub const ImGuiMemFreeFunc = ?*const fn (?*anyopaque, ?*anyopaque) callconv(.C) void; +pub const ImGuiWindowFlags_None: c_int = 0; +pub const ImGuiWindowFlags_NoTitleBar: c_int = 1; +pub const ImGuiWindowFlags_NoResize: c_int = 2; +pub const ImGuiWindowFlags_NoMove: c_int = 4; +pub const ImGuiWindowFlags_NoScrollbar: c_int = 8; +pub const ImGuiWindowFlags_NoScrollWithMouse: c_int = 16; +pub const ImGuiWindowFlags_NoCollapse: c_int = 32; +pub const ImGuiWindowFlags_AlwaysAutoResize: c_int = 64; +pub const ImGuiWindowFlags_NoBackground: c_int = 128; +pub const ImGuiWindowFlags_NoSavedSettings: c_int = 256; +pub const ImGuiWindowFlags_NoMouseInputs: c_int = 512; +pub const ImGuiWindowFlags_MenuBar: c_int = 1024; +pub const ImGuiWindowFlags_HorizontalScrollbar: c_int = 2048; +pub const ImGuiWindowFlags_NoFocusOnAppearing: c_int = 4096; +pub const ImGuiWindowFlags_NoBringToFrontOnFocus: c_int = 8192; +pub const ImGuiWindowFlags_AlwaysVerticalScrollbar: c_int = 16384; +pub const ImGuiWindowFlags_AlwaysHorizontalScrollbar: c_int = 32768; +pub const ImGuiWindowFlags_AlwaysUseWindowPadding: c_int = 65536; +pub const ImGuiWindowFlags_NoNavInputs: c_int = 262144; +pub const ImGuiWindowFlags_NoNavFocus: c_int = 524288; +pub const ImGuiWindowFlags_UnsavedDocument: c_int = 1048576; +pub const ImGuiWindowFlags_NoDocking: c_int = 2097152; +pub const ImGuiWindowFlags_NoNav: c_int = 786432; +pub const ImGuiWindowFlags_NoDecoration: c_int = 43; +pub const ImGuiWindowFlags_NoInputs: c_int = 786944; +pub const ImGuiWindowFlags_NavFlattened: c_int = 8388608; +pub const ImGuiWindowFlags_ChildWindow: c_int = 16777216; +pub const ImGuiWindowFlags_Tooltip: c_int = 33554432; +pub const ImGuiWindowFlags_Popup: c_int = 67108864; +pub const ImGuiWindowFlags_Modal: c_int = 134217728; +pub const ImGuiWindowFlags_ChildMenu: c_int = 268435456; +pub const ImGuiWindowFlags_DockNodeHost: c_int = 536870912; +pub const ImGuiWindowFlags_ = c_uint; +pub const ImGuiInputTextFlags_None: c_int = 0; +pub const ImGuiInputTextFlags_CharsDecimal: c_int = 1; +pub const ImGuiInputTextFlags_CharsHexadecimal: c_int = 2; +pub const ImGuiInputTextFlags_CharsUppercase: c_int = 4; +pub const ImGuiInputTextFlags_CharsNoBlank: c_int = 8; +pub const ImGuiInputTextFlags_AutoSelectAll: c_int = 16; +pub const ImGuiInputTextFlags_EnterReturnsTrue: c_int = 32; +pub const ImGuiInputTextFlags_CallbackCompletion: c_int = 64; +pub const ImGuiInputTextFlags_CallbackHistory: c_int = 128; +pub const ImGuiInputTextFlags_CallbackAlways: c_int = 256; +pub const ImGuiInputTextFlags_CallbackCharFilter: c_int = 512; +pub const ImGuiInputTextFlags_AllowTabInput: c_int = 1024; +pub const ImGuiInputTextFlags_CtrlEnterForNewLine: c_int = 2048; +pub const ImGuiInputTextFlags_NoHorizontalScroll: c_int = 4096; +pub const ImGuiInputTextFlags_AlwaysOverwrite: c_int = 8192; +pub const ImGuiInputTextFlags_ReadOnly: c_int = 16384; +pub const ImGuiInputTextFlags_Password: c_int = 32768; +pub const ImGuiInputTextFlags_NoUndoRedo: c_int = 65536; +pub const ImGuiInputTextFlags_CharsScientific: c_int = 131072; +pub const ImGuiInputTextFlags_CallbackResize: c_int = 262144; +pub const ImGuiInputTextFlags_CallbackEdit: c_int = 524288; +pub const ImGuiInputTextFlags_ = c_uint; +pub const ImGuiTreeNodeFlags_None: c_int = 0; +pub const ImGuiTreeNodeFlags_Selected: c_int = 1; +pub const ImGuiTreeNodeFlags_Framed: c_int = 2; +pub const ImGuiTreeNodeFlags_AllowItemOverlap: c_int = 4; +pub const ImGuiTreeNodeFlags_NoTreePushOnOpen: c_int = 8; +pub const ImGuiTreeNodeFlags_NoAutoOpenOnLog: c_int = 16; +pub const ImGuiTreeNodeFlags_DefaultOpen: c_int = 32; +pub const ImGuiTreeNodeFlags_OpenOnDoubleClick: c_int = 64; +pub const ImGuiTreeNodeFlags_OpenOnArrow: c_int = 128; +pub const ImGuiTreeNodeFlags_Leaf: c_int = 256; +pub const ImGuiTreeNodeFlags_Bullet: c_int = 512; +pub const ImGuiTreeNodeFlags_FramePadding: c_int = 1024; +pub const ImGuiTreeNodeFlags_SpanAvailWidth: c_int = 2048; +pub const ImGuiTreeNodeFlags_SpanFullWidth: c_int = 4096; +pub const ImGuiTreeNodeFlags_NavLeftJumpsBackHere: c_int = 8192; +pub const ImGuiTreeNodeFlags_CollapsingHeader: c_int = 26; +pub const ImGuiTreeNodeFlags_ = c_uint; +pub const ImGuiPopupFlags_None: c_int = 0; +pub const ImGuiPopupFlags_MouseButtonLeft: c_int = 0; +pub const ImGuiPopupFlags_MouseButtonRight: c_int = 1; +pub const ImGuiPopupFlags_MouseButtonMiddle: c_int = 2; +pub const ImGuiPopupFlags_MouseButtonMask_: c_int = 31; +pub const ImGuiPopupFlags_MouseButtonDefault_: c_int = 1; +pub const ImGuiPopupFlags_NoOpenOverExistingPopup: c_int = 32; +pub const ImGuiPopupFlags_NoOpenOverItems: c_int = 64; +pub const ImGuiPopupFlags_AnyPopupId: c_int = 128; +pub const ImGuiPopupFlags_AnyPopupLevel: c_int = 256; +pub const ImGuiPopupFlags_AnyPopup: c_int = 384; +pub const ImGuiPopupFlags_ = c_uint; +pub const ImGuiSelectableFlags_None: c_int = 0; +pub const ImGuiSelectableFlags_DontClosePopups: c_int = 1; +pub const ImGuiSelectableFlags_SpanAllColumns: c_int = 2; +pub const ImGuiSelectableFlags_AllowDoubleClick: c_int = 4; +pub const ImGuiSelectableFlags_Disabled: c_int = 8; +pub const ImGuiSelectableFlags_AllowItemOverlap: c_int = 16; +pub const ImGuiSelectableFlags_ = c_uint; +pub const ImGuiComboFlags_None: c_int = 0; +pub const ImGuiComboFlags_PopupAlignLeft: c_int = 1; +pub const ImGuiComboFlags_HeightSmall: c_int = 2; +pub const ImGuiComboFlags_HeightRegular: c_int = 4; +pub const ImGuiComboFlags_HeightLarge: c_int = 8; +pub const ImGuiComboFlags_HeightLargest: c_int = 16; +pub const ImGuiComboFlags_NoArrowButton: c_int = 32; +pub const ImGuiComboFlags_NoPreview: c_int = 64; +pub const ImGuiComboFlags_HeightMask_: c_int = 30; +pub const ImGuiComboFlags_ = c_uint; +pub const ImGuiTabBarFlags_None: c_int = 0; +pub const ImGuiTabBarFlags_Reorderable: c_int = 1; +pub const ImGuiTabBarFlags_AutoSelectNewTabs: c_int = 2; +pub const ImGuiTabBarFlags_TabListPopupButton: c_int = 4; +pub const ImGuiTabBarFlags_NoCloseWithMiddleMouseButton: c_int = 8; +pub const ImGuiTabBarFlags_NoTabListScrollingButtons: c_int = 16; +pub const ImGuiTabBarFlags_NoTooltip: c_int = 32; +pub const ImGuiTabBarFlags_FittingPolicyResizeDown: c_int = 64; +pub const ImGuiTabBarFlags_FittingPolicyScroll: c_int = 128; +pub const ImGuiTabBarFlags_FittingPolicyMask_: c_int = 192; +pub const ImGuiTabBarFlags_FittingPolicyDefault_: c_int = 64; +pub const ImGuiTabBarFlags_ = c_uint; +pub const ImGuiTabItemFlags_None: c_int = 0; +pub const ImGuiTabItemFlags_UnsavedDocument: c_int = 1; +pub const ImGuiTabItemFlags_SetSelected: c_int = 2; +pub const ImGuiTabItemFlags_NoCloseWithMiddleMouseButton: c_int = 4; +pub const ImGuiTabItemFlags_NoPushId: c_int = 8; +pub const ImGuiTabItemFlags_NoTooltip: c_int = 16; +pub const ImGuiTabItemFlags_NoReorder: c_int = 32; +pub const ImGuiTabItemFlags_Leading: c_int = 64; +pub const ImGuiTabItemFlags_Trailing: c_int = 128; +pub const ImGuiTabItemFlags_ = c_uint; +pub const ImGuiTableFlags_None: c_int = 0; +pub const ImGuiTableFlags_Resizable: c_int = 1; +pub const ImGuiTableFlags_Reorderable: c_int = 2; +pub const ImGuiTableFlags_Hideable: c_int = 4; +pub const ImGuiTableFlags_Sortable: c_int = 8; +pub const ImGuiTableFlags_NoSavedSettings: c_int = 16; +pub const ImGuiTableFlags_ContextMenuInBody: c_int = 32; +pub const ImGuiTableFlags_RowBg: c_int = 64; +pub const ImGuiTableFlags_BordersInnerH: c_int = 128; +pub const ImGuiTableFlags_BordersOuterH: c_int = 256; +pub const ImGuiTableFlags_BordersInnerV: c_int = 512; +pub const ImGuiTableFlags_BordersOuterV: c_int = 1024; +pub const ImGuiTableFlags_BordersH: c_int = 384; +pub const ImGuiTableFlags_BordersV: c_int = 1536; +pub const ImGuiTableFlags_BordersInner: c_int = 640; +pub const ImGuiTableFlags_BordersOuter: c_int = 1280; +pub const ImGuiTableFlags_Borders: c_int = 1920; +pub const ImGuiTableFlags_NoBordersInBody: c_int = 2048; +pub const ImGuiTableFlags_NoBordersInBodyUntilResize: c_int = 4096; +pub const ImGuiTableFlags_SizingFixedFit: c_int = 8192; +pub const ImGuiTableFlags_SizingFixedSame: c_int = 16384; +pub const ImGuiTableFlags_SizingStretchProp: c_int = 24576; +pub const ImGuiTableFlags_SizingStretchSame: c_int = 32768; +pub const ImGuiTableFlags_NoHostExtendX: c_int = 65536; +pub const ImGuiTableFlags_NoHostExtendY: c_int = 131072; +pub const ImGuiTableFlags_NoKeepColumnsVisible: c_int = 262144; +pub const ImGuiTableFlags_PreciseWidths: c_int = 524288; +pub const ImGuiTableFlags_NoClip: c_int = 1048576; +pub const ImGuiTableFlags_PadOuterX: c_int = 2097152; +pub const ImGuiTableFlags_NoPadOuterX: c_int = 4194304; +pub const ImGuiTableFlags_NoPadInnerX: c_int = 8388608; +pub const ImGuiTableFlags_ScrollX: c_int = 16777216; +pub const ImGuiTableFlags_ScrollY: c_int = 33554432; +pub const ImGuiTableFlags_SortMulti: c_int = 67108864; +pub const ImGuiTableFlags_SortTristate: c_int = 134217728; +pub const ImGuiTableFlags_SizingMask_: c_int = 57344; +pub const ImGuiTableFlags_ = c_uint; +pub const ImGuiTableColumnFlags_None: c_int = 0; +pub const ImGuiTableColumnFlags_Disabled: c_int = 1; +pub const ImGuiTableColumnFlags_DefaultHide: c_int = 2; +pub const ImGuiTableColumnFlags_DefaultSort: c_int = 4; +pub const ImGuiTableColumnFlags_WidthStretch: c_int = 8; +pub const ImGuiTableColumnFlags_WidthFixed: c_int = 16; +pub const ImGuiTableColumnFlags_NoResize: c_int = 32; +pub const ImGuiTableColumnFlags_NoReorder: c_int = 64; +pub const ImGuiTableColumnFlags_NoHide: c_int = 128; +pub const ImGuiTableColumnFlags_NoClip: c_int = 256; +pub const ImGuiTableColumnFlags_NoSort: c_int = 512; +pub const ImGuiTableColumnFlags_NoSortAscending: c_int = 1024; +pub const ImGuiTableColumnFlags_NoSortDescending: c_int = 2048; +pub const ImGuiTableColumnFlags_NoHeaderLabel: c_int = 4096; +pub const ImGuiTableColumnFlags_NoHeaderWidth: c_int = 8192; +pub const ImGuiTableColumnFlags_PreferSortAscending: c_int = 16384; +pub const ImGuiTableColumnFlags_PreferSortDescending: c_int = 32768; +pub const ImGuiTableColumnFlags_IndentEnable: c_int = 65536; +pub const ImGuiTableColumnFlags_IndentDisable: c_int = 131072; +pub const ImGuiTableColumnFlags_IsEnabled: c_int = 16777216; +pub const ImGuiTableColumnFlags_IsVisible: c_int = 33554432; +pub const ImGuiTableColumnFlags_IsSorted: c_int = 67108864; +pub const ImGuiTableColumnFlags_IsHovered: c_int = 134217728; +pub const ImGuiTableColumnFlags_WidthMask_: c_int = 24; +pub const ImGuiTableColumnFlags_IndentMask_: c_int = 196608; +pub const ImGuiTableColumnFlags_StatusMask_: c_int = 251658240; +pub const ImGuiTableColumnFlags_NoDirectResize_: c_int = 1073741824; +pub const ImGuiTableColumnFlags_ = c_uint; +pub const ImGuiTableRowFlags_None: c_int = 0; +pub const ImGuiTableRowFlags_Headers: c_int = 1; +pub const ImGuiTableRowFlags_ = c_uint; +pub const ImGuiTableBgTarget_None: c_int = 0; +pub const ImGuiTableBgTarget_RowBg0: c_int = 1; +pub const ImGuiTableBgTarget_RowBg1: c_int = 2; +pub const ImGuiTableBgTarget_CellBg: c_int = 3; +pub const ImGuiTableBgTarget_ = c_uint; +pub const ImGuiFocusedFlags_None: c_int = 0; +pub const ImGuiFocusedFlags_ChildWindows: c_int = 1; +pub const ImGuiFocusedFlags_RootWindow: c_int = 2; +pub const ImGuiFocusedFlags_AnyWindow: c_int = 4; +pub const ImGuiFocusedFlags_NoPopupHierarchy: c_int = 8; +pub const ImGuiFocusedFlags_DockHierarchy: c_int = 16; +pub const ImGuiFocusedFlags_RootAndChildWindows: c_int = 3; +pub const ImGuiFocusedFlags_ = c_uint; +pub const ImGuiHoveredFlags_None: c_int = 0; +pub const ImGuiHoveredFlags_ChildWindows: c_int = 1; +pub const ImGuiHoveredFlags_RootWindow: c_int = 2; +pub const ImGuiHoveredFlags_AnyWindow: c_int = 4; +pub const ImGuiHoveredFlags_NoPopupHierarchy: c_int = 8; +pub const ImGuiHoveredFlags_DockHierarchy: c_int = 16; +pub const ImGuiHoveredFlags_AllowWhenBlockedByPopup: c_int = 32; +pub const ImGuiHoveredFlags_AllowWhenBlockedByActiveItem: c_int = 128; +pub const ImGuiHoveredFlags_AllowWhenOverlapped: c_int = 256; +pub const ImGuiHoveredFlags_AllowWhenDisabled: c_int = 512; +pub const ImGuiHoveredFlags_NoNavOverride: c_int = 1024; +pub const ImGuiHoveredFlags_RectOnly: c_int = 416; +pub const ImGuiHoveredFlags_RootAndChildWindows: c_int = 3; +pub const ImGuiHoveredFlags_ = c_uint; +pub const ImGuiDockNodeFlags_None: c_int = 0; +pub const ImGuiDockNodeFlags_KeepAliveOnly: c_int = 1; +pub const ImGuiDockNodeFlags_NoDockingInCentralNode: c_int = 4; +pub const ImGuiDockNodeFlags_PassthruCentralNode: c_int = 8; +pub const ImGuiDockNodeFlags_NoSplit: c_int = 16; +pub const ImGuiDockNodeFlags_NoResize: c_int = 32; +pub const ImGuiDockNodeFlags_AutoHideTabBar: c_int = 64; +pub const ImGuiDockNodeFlags_ = c_uint; +pub const ImGuiDragDropFlags_None: c_int = 0; +pub const ImGuiDragDropFlags_SourceNoPreviewTooltip: c_int = 1; +pub const ImGuiDragDropFlags_SourceNoDisableHover: c_int = 2; +pub const ImGuiDragDropFlags_SourceNoHoldToOpenOthers: c_int = 4; +pub const ImGuiDragDropFlags_SourceAllowNullID: c_int = 8; +pub const ImGuiDragDropFlags_SourceExtern: c_int = 16; +pub const ImGuiDragDropFlags_SourceAutoExpirePayload: c_int = 32; +pub const ImGuiDragDropFlags_AcceptBeforeDelivery: c_int = 1024; +pub const ImGuiDragDropFlags_AcceptNoDrawDefaultRect: c_int = 2048; +pub const ImGuiDragDropFlags_AcceptNoPreviewTooltip: c_int = 4096; +pub const ImGuiDragDropFlags_AcceptPeekOnly: c_int = 3072; +pub const ImGuiDragDropFlags_ = c_uint; +pub const ImGuiDataType_S8: c_int = 0; +pub const ImGuiDataType_U8: c_int = 1; +pub const ImGuiDataType_S16: c_int = 2; +pub const ImGuiDataType_U16: c_int = 3; +pub const ImGuiDataType_S32: c_int = 4; +pub const ImGuiDataType_U32: c_int = 5; +pub const ImGuiDataType_S64: c_int = 6; +pub const ImGuiDataType_U64: c_int = 7; +pub const ImGuiDataType_Float: c_int = 8; +pub const ImGuiDataType_Double: c_int = 9; +pub const ImGuiDataType_COUNT: c_int = 10; +pub const ImGuiDataType_ = c_uint; +pub const ImGuiDir_None: c_int = -1; +pub const ImGuiDir_Left: c_int = 0; +pub const ImGuiDir_Right: c_int = 1; +pub const ImGuiDir_Up: c_int = 2; +pub const ImGuiDir_Down: c_int = 3; +pub const ImGuiDir_COUNT: c_int = 4; +pub const ImGuiDir_ = c_int; +pub const ImGuiSortDirection_None: c_int = 0; +pub const ImGuiSortDirection_Ascending: c_int = 1; +pub const ImGuiSortDirection_Descending: c_int = 2; +pub const ImGuiSortDirection_ = c_uint; +pub const ImGuiKey_None: c_int = 0; +pub const ImGuiKey_Tab: c_int = 512; +pub const ImGuiKey_LeftArrow: c_int = 513; +pub const ImGuiKey_RightArrow: c_int = 514; +pub const ImGuiKey_UpArrow: c_int = 515; +pub const ImGuiKey_DownArrow: c_int = 516; +pub const ImGuiKey_PageUp: c_int = 517; +pub const ImGuiKey_PageDown: c_int = 518; +pub const ImGuiKey_Home: c_int = 519; +pub const ImGuiKey_End: c_int = 520; +pub const ImGuiKey_Insert: c_int = 521; +pub const ImGuiKey_Delete: c_int = 522; +pub const ImGuiKey_Backspace: c_int = 523; +pub const ImGuiKey_Space: c_int = 524; +pub const ImGuiKey_Enter: c_int = 525; +pub const ImGuiKey_Escape: c_int = 526; +pub const ImGuiKey_LeftCtrl: c_int = 527; +pub const ImGuiKey_LeftShift: c_int = 528; +pub const ImGuiKey_LeftAlt: c_int = 529; +pub const ImGuiKey_LeftSuper: c_int = 530; +pub const ImGuiKey_RightCtrl: c_int = 531; +pub const ImGuiKey_RightShift: c_int = 532; +pub const ImGuiKey_RightAlt: c_int = 533; +pub const ImGuiKey_RightSuper: c_int = 534; +pub const ImGuiKey_Menu: c_int = 535; +pub const ImGuiKey_0: c_int = 536; +pub const ImGuiKey_1: c_int = 537; +pub const ImGuiKey_2: c_int = 538; +pub const ImGuiKey_3: c_int = 539; +pub const ImGuiKey_4: c_int = 540; +pub const ImGuiKey_5: c_int = 541; +pub const ImGuiKey_6: c_int = 542; +pub const ImGuiKey_7: c_int = 543; +pub const ImGuiKey_8: c_int = 544; +pub const ImGuiKey_9: c_int = 545; +pub const ImGuiKey_A: c_int = 546; +pub const ImGuiKey_B: c_int = 547; +pub const ImGuiKey_C: c_int = 548; +pub const ImGuiKey_D: c_int = 549; +pub const ImGuiKey_E: c_int = 550; +pub const ImGuiKey_F: c_int = 551; +pub const ImGuiKey_G: c_int = 552; +pub const ImGuiKey_H: c_int = 553; +pub const ImGuiKey_I: c_int = 554; +pub const ImGuiKey_J: c_int = 555; +pub const ImGuiKey_K: c_int = 556; +pub const ImGuiKey_L: c_int = 557; +pub const ImGuiKey_M: c_int = 558; +pub const ImGuiKey_N: c_int = 559; +pub const ImGuiKey_O: c_int = 560; +pub const ImGuiKey_P: c_int = 561; +pub const ImGuiKey_Q: c_int = 562; +pub const ImGuiKey_R: c_int = 563; +pub const ImGuiKey_S: c_int = 564; +pub const ImGuiKey_T: c_int = 565; +pub const ImGuiKey_U: c_int = 566; +pub const ImGuiKey_V: c_int = 567; +pub const ImGuiKey_W: c_int = 568; +pub const ImGuiKey_X: c_int = 569; +pub const ImGuiKey_Y: c_int = 570; +pub const ImGuiKey_Z: c_int = 571; +pub const ImGuiKey_F1: c_int = 572; +pub const ImGuiKey_F2: c_int = 573; +pub const ImGuiKey_F3: c_int = 574; +pub const ImGuiKey_F4: c_int = 575; +pub const ImGuiKey_F5: c_int = 576; +pub const ImGuiKey_F6: c_int = 577; +pub const ImGuiKey_F7: c_int = 578; +pub const ImGuiKey_F8: c_int = 579; +pub const ImGuiKey_F9: c_int = 580; +pub const ImGuiKey_F10: c_int = 581; +pub const ImGuiKey_F11: c_int = 582; +pub const ImGuiKey_F12: c_int = 583; +pub const ImGuiKey_Apostrophe: c_int = 584; +pub const ImGuiKey_Comma: c_int = 585; +pub const ImGuiKey_Minus: c_int = 586; +pub const ImGuiKey_Period: c_int = 587; +pub const ImGuiKey_Slash: c_int = 588; +pub const ImGuiKey_Semicolon: c_int = 589; +pub const ImGuiKey_Equal: c_int = 590; +pub const ImGuiKey_LeftBracket: c_int = 591; +pub const ImGuiKey_Backslash: c_int = 592; +pub const ImGuiKey_RightBracket: c_int = 593; +pub const ImGuiKey_GraveAccent: c_int = 594; +pub const ImGuiKey_CapsLock: c_int = 595; +pub const ImGuiKey_ScrollLock: c_int = 596; +pub const ImGuiKey_NumLock: c_int = 597; +pub const ImGuiKey_PrintScreen: c_int = 598; +pub const ImGuiKey_Pause: c_int = 599; +pub const ImGuiKey_Keypad0: c_int = 600; +pub const ImGuiKey_Keypad1: c_int = 601; +pub const ImGuiKey_Keypad2: c_int = 602; +pub const ImGuiKey_Keypad3: c_int = 603; +pub const ImGuiKey_Keypad4: c_int = 604; +pub const ImGuiKey_Keypad5: c_int = 605; +pub const ImGuiKey_Keypad6: c_int = 606; +pub const ImGuiKey_Keypad7: c_int = 607; +pub const ImGuiKey_Keypad8: c_int = 608; +pub const ImGuiKey_Keypad9: c_int = 609; +pub const ImGuiKey_KeypadDecimal: c_int = 610; +pub const ImGuiKey_KeypadDivide: c_int = 611; +pub const ImGuiKey_KeypadMultiply: c_int = 612; +pub const ImGuiKey_KeypadSubtract: c_int = 613; +pub const ImGuiKey_KeypadAdd: c_int = 614; +pub const ImGuiKey_KeypadEnter: c_int = 615; +pub const ImGuiKey_KeypadEqual: c_int = 616; +pub const ImGuiKey_GamepadStart: c_int = 617; +pub const ImGuiKey_GamepadBack: c_int = 618; +pub const ImGuiKey_GamepadFaceUp: c_int = 619; +pub const ImGuiKey_GamepadFaceDown: c_int = 620; +pub const ImGuiKey_GamepadFaceLeft: c_int = 621; +pub const ImGuiKey_GamepadFaceRight: c_int = 622; +pub const ImGuiKey_GamepadDpadUp: c_int = 623; +pub const ImGuiKey_GamepadDpadDown: c_int = 624; +pub const ImGuiKey_GamepadDpadLeft: c_int = 625; +pub const ImGuiKey_GamepadDpadRight: c_int = 626; +pub const ImGuiKey_GamepadL1: c_int = 627; +pub const ImGuiKey_GamepadR1: c_int = 628; +pub const ImGuiKey_GamepadL2: c_int = 629; +pub const ImGuiKey_GamepadR2: c_int = 630; +pub const ImGuiKey_GamepadL3: c_int = 631; +pub const ImGuiKey_GamepadR3: c_int = 632; +pub const ImGuiKey_GamepadLStickUp: c_int = 633; +pub const ImGuiKey_GamepadLStickDown: c_int = 634; +pub const ImGuiKey_GamepadLStickLeft: c_int = 635; +pub const ImGuiKey_GamepadLStickRight: c_int = 636; +pub const ImGuiKey_GamepadRStickUp: c_int = 637; +pub const ImGuiKey_GamepadRStickDown: c_int = 638; +pub const ImGuiKey_GamepadRStickLeft: c_int = 639; +pub const ImGuiKey_GamepadRStickRight: c_int = 640; +pub const ImGuiKey_ModCtrl: c_int = 641; +pub const ImGuiKey_ModShift: c_int = 642; +pub const ImGuiKey_ModAlt: c_int = 643; +pub const ImGuiKey_ModSuper: c_int = 644; +pub const ImGuiKey_COUNT: c_int = 645; +pub const ImGuiKey_NamedKey_BEGIN: c_int = 512; +pub const ImGuiKey_NamedKey_END: c_int = 645; +pub const ImGuiKey_NamedKey_COUNT: c_int = 133; +pub const ImGuiKey_KeysData_SIZE: c_int = 645; +pub const ImGuiKey_KeysData_OFFSET: c_int = 0; +pub const ImGuiKey_ = c_uint; +pub const ImGuiModFlags_None: c_int = 0; +pub const ImGuiModFlags_Ctrl: c_int = 1; +pub const ImGuiModFlags_Shift: c_int = 2; +pub const ImGuiModFlags_Alt: c_int = 4; +pub const ImGuiModFlags_Super: c_int = 8; +pub const ImGuiModFlags_ = c_uint; +pub const ImGuiNavInput_Activate: c_int = 0; +pub const ImGuiNavInput_Cancel: c_int = 1; +pub const ImGuiNavInput_Input: c_int = 2; +pub const ImGuiNavInput_Menu: c_int = 3; +pub const ImGuiNavInput_DpadLeft: c_int = 4; +pub const ImGuiNavInput_DpadRight: c_int = 5; +pub const ImGuiNavInput_DpadUp: c_int = 6; +pub const ImGuiNavInput_DpadDown: c_int = 7; +pub const ImGuiNavInput_LStickLeft: c_int = 8; +pub const ImGuiNavInput_LStickRight: c_int = 9; +pub const ImGuiNavInput_LStickUp: c_int = 10; +pub const ImGuiNavInput_LStickDown: c_int = 11; +pub const ImGuiNavInput_FocusPrev: c_int = 12; +pub const ImGuiNavInput_FocusNext: c_int = 13; +pub const ImGuiNavInput_TweakSlow: c_int = 14; +pub const ImGuiNavInput_TweakFast: c_int = 15; +pub const ImGuiNavInput_KeyLeft_: c_int = 16; +pub const ImGuiNavInput_KeyRight_: c_int = 17; +pub const ImGuiNavInput_KeyUp_: c_int = 18; +pub const ImGuiNavInput_KeyDown_: c_int = 19; +pub const ImGuiNavInput_COUNT: c_int = 20; +pub const ImGuiNavInput_ = c_uint; +pub const ImGuiConfigFlags_None: c_int = 0; +pub const ImGuiConfigFlags_NavEnableKeyboard: c_int = 1; +pub const ImGuiConfigFlags_NavEnableGamepad: c_int = 2; +pub const ImGuiConfigFlags_NavEnableSetMousePos: c_int = 4; +pub const ImGuiConfigFlags_NavNoCaptureKeyboard: c_int = 8; +pub const ImGuiConfigFlags_NoMouse: c_int = 16; +pub const ImGuiConfigFlags_NoMouseCursorChange: c_int = 32; +pub const ImGuiConfigFlags_DockingEnable: c_int = 64; +pub const ImGuiConfigFlags_ViewportsEnable: c_int = 1024; +pub const ImGuiConfigFlags_DpiEnableScaleViewports: c_int = 16384; +pub const ImGuiConfigFlags_DpiEnableScaleFonts: c_int = 32768; +pub const ImGuiConfigFlags_IsSRGB: c_int = 1048576; +pub const ImGuiConfigFlags_IsTouchScreen: c_int = 2097152; +pub const ImGuiConfigFlags_ = c_uint; +pub const ImGuiBackendFlags_None: c_int = 0; +pub const ImGuiBackendFlags_HasGamepad: c_int = 1; +pub const ImGuiBackendFlags_HasMouseCursors: c_int = 2; +pub const ImGuiBackendFlags_HasSetMousePos: c_int = 4; +pub const ImGuiBackendFlags_RendererHasVtxOffset: c_int = 8; +pub const ImGuiBackendFlags_PlatformHasViewports: c_int = 1024; +pub const ImGuiBackendFlags_HasMouseHoveredViewport: c_int = 2048; +pub const ImGuiBackendFlags_RendererHasViewports: c_int = 4096; +pub const ImGuiBackendFlags_ = c_uint; +pub const ImGuiCol_Text: c_int = 0; +pub const ImGuiCol_TextDisabled: c_int = 1; +pub const ImGuiCol_WindowBg: c_int = 2; +pub const ImGuiCol_ChildBg: c_int = 3; +pub const ImGuiCol_PopupBg: c_int = 4; +pub const ImGuiCol_Border: c_int = 5; +pub const ImGuiCol_BorderShadow: c_int = 6; +pub const ImGuiCol_FrameBg: c_int = 7; +pub const ImGuiCol_FrameBgHovered: c_int = 8; +pub const ImGuiCol_FrameBgActive: c_int = 9; +pub const ImGuiCol_TitleBg: c_int = 10; +pub const ImGuiCol_TitleBgActive: c_int = 11; +pub const ImGuiCol_TitleBgCollapsed: c_int = 12; +pub const ImGuiCol_MenuBarBg: c_int = 13; +pub const ImGuiCol_ScrollbarBg: c_int = 14; +pub const ImGuiCol_ScrollbarGrab: c_int = 15; +pub const ImGuiCol_ScrollbarGrabHovered: c_int = 16; +pub const ImGuiCol_ScrollbarGrabActive: c_int = 17; +pub const ImGuiCol_CheckMark: c_int = 18; +pub const ImGuiCol_SliderGrab: c_int = 19; +pub const ImGuiCol_SliderGrabActive: c_int = 20; +pub const ImGuiCol_Button: c_int = 21; +pub const ImGuiCol_ButtonHovered: c_int = 22; +pub const ImGuiCol_ButtonActive: c_int = 23; +pub const ImGuiCol_Header: c_int = 24; +pub const ImGuiCol_HeaderHovered: c_int = 25; +pub const ImGuiCol_HeaderActive: c_int = 26; +pub const ImGuiCol_Separator: c_int = 27; +pub const ImGuiCol_SeparatorHovered: c_int = 28; +pub const ImGuiCol_SeparatorActive: c_int = 29; +pub const ImGuiCol_ResizeGrip: c_int = 30; +pub const ImGuiCol_ResizeGripHovered: c_int = 31; +pub const ImGuiCol_ResizeGripActive: c_int = 32; +pub const ImGuiCol_Tab: c_int = 33; +pub const ImGuiCol_TabHovered: c_int = 34; +pub const ImGuiCol_TabActive: c_int = 35; +pub const ImGuiCol_TabUnfocused: c_int = 36; +pub const ImGuiCol_TabUnfocusedActive: c_int = 37; +pub const ImGuiCol_DockingPreview: c_int = 38; +pub const ImGuiCol_DockingEmptyBg: c_int = 39; +pub const ImGuiCol_PlotLines: c_int = 40; +pub const ImGuiCol_PlotLinesHovered: c_int = 41; +pub const ImGuiCol_PlotHistogram: c_int = 42; +pub const ImGuiCol_PlotHistogramHovered: c_int = 43; +pub const ImGuiCol_TableHeaderBg: c_int = 44; +pub const ImGuiCol_TableBorderStrong: c_int = 45; +pub const ImGuiCol_TableBorderLight: c_int = 46; +pub const ImGuiCol_TableRowBg: c_int = 47; +pub const ImGuiCol_TableRowBgAlt: c_int = 48; +pub const ImGuiCol_TextSelectedBg: c_int = 49; +pub const ImGuiCol_DragDropTarget: c_int = 50; +pub const ImGuiCol_NavHighlight: c_int = 51; +pub const ImGuiCol_NavWindowingHighlight: c_int = 52; +pub const ImGuiCol_NavWindowingDimBg: c_int = 53; +pub const ImGuiCol_ModalWindowDimBg: c_int = 54; +pub const ImGuiCol_COUNT: c_int = 55; +pub const ImGuiCol_ = c_uint; +pub const ImGuiStyleVar_Alpha: c_int = 0; +pub const ImGuiStyleVar_DisabledAlpha: c_int = 1; +pub const ImGuiStyleVar_WindowPadding: c_int = 2; +pub const ImGuiStyleVar_WindowRounding: c_int = 3; +pub const ImGuiStyleVar_WindowBorderSize: c_int = 4; +pub const ImGuiStyleVar_WindowMinSize: c_int = 5; +pub const ImGuiStyleVar_WindowTitleAlign: c_int = 6; +pub const ImGuiStyleVar_ChildRounding: c_int = 7; +pub const ImGuiStyleVar_ChildBorderSize: c_int = 8; +pub const ImGuiStyleVar_PopupRounding: c_int = 9; +pub const ImGuiStyleVar_PopupBorderSize: c_int = 10; +pub const ImGuiStyleVar_FramePadding: c_int = 11; +pub const ImGuiStyleVar_FrameRounding: c_int = 12; +pub const ImGuiStyleVar_FrameBorderSize: c_int = 13; +pub const ImGuiStyleVar_ItemSpacing: c_int = 14; +pub const ImGuiStyleVar_ItemInnerSpacing: c_int = 15; +pub const ImGuiStyleVar_IndentSpacing: c_int = 16; +pub const ImGuiStyleVar_CellPadding: c_int = 17; +pub const ImGuiStyleVar_ScrollbarSize: c_int = 18; +pub const ImGuiStyleVar_ScrollbarRounding: c_int = 19; +pub const ImGuiStyleVar_GrabMinSize: c_int = 20; +pub const ImGuiStyleVar_GrabRounding: c_int = 21; +pub const ImGuiStyleVar_TabRounding: c_int = 22; +pub const ImGuiStyleVar_ButtonTextAlign: c_int = 23; +pub const ImGuiStyleVar_SelectableTextAlign: c_int = 24; +pub const ImGuiStyleVar_COUNT: c_int = 25; +pub const ImGuiStyleVar_ = c_uint; +pub const ImGuiButtonFlags_None: c_int = 0; +pub const ImGuiButtonFlags_MouseButtonLeft: c_int = 1; +pub const ImGuiButtonFlags_MouseButtonRight: c_int = 2; +pub const ImGuiButtonFlags_MouseButtonMiddle: c_int = 4; +pub const ImGuiButtonFlags_MouseButtonMask_: c_int = 7; +pub const ImGuiButtonFlags_MouseButtonDefault_: c_int = 1; +pub const ImGuiButtonFlags_ = c_uint; +pub const ImGuiColorEditFlags_None: c_int = 0; +pub const ImGuiColorEditFlags_NoAlpha: c_int = 2; +pub const ImGuiColorEditFlags_NoPicker: c_int = 4; +pub const ImGuiColorEditFlags_NoOptions: c_int = 8; +pub const ImGuiColorEditFlags_NoSmallPreview: c_int = 16; +pub const ImGuiColorEditFlags_NoInputs: c_int = 32; +pub const ImGuiColorEditFlags_NoTooltip: c_int = 64; +pub const ImGuiColorEditFlags_NoLabel: c_int = 128; +pub const ImGuiColorEditFlags_NoSidePreview: c_int = 256; +pub const ImGuiColorEditFlags_NoDragDrop: c_int = 512; +pub const ImGuiColorEditFlags_NoBorder: c_int = 1024; +pub const ImGuiColorEditFlags_AlphaBar: c_int = 65536; +pub const ImGuiColorEditFlags_AlphaPreview: c_int = 131072; +pub const ImGuiColorEditFlags_AlphaPreviewHalf: c_int = 262144; +pub const ImGuiColorEditFlags_HDR: c_int = 524288; +pub const ImGuiColorEditFlags_DisplayRGB: c_int = 1048576; +pub const ImGuiColorEditFlags_DisplayHSV: c_int = 2097152; +pub const ImGuiColorEditFlags_DisplayHex: c_int = 4194304; +pub const ImGuiColorEditFlags_Uint8: c_int = 8388608; +pub const ImGuiColorEditFlags_Float: c_int = 16777216; +pub const ImGuiColorEditFlags_PickerHueBar: c_int = 33554432; +pub const ImGuiColorEditFlags_PickerHueWheel: c_int = 67108864; +pub const ImGuiColorEditFlags_InputRGB: c_int = 134217728; +pub const ImGuiColorEditFlags_InputHSV: c_int = 268435456; +pub const ImGuiColorEditFlags_DefaultOptions_: c_int = 177209344; +pub const ImGuiColorEditFlags_DisplayMask_: c_int = 7340032; +pub const ImGuiColorEditFlags_DataTypeMask_: c_int = 25165824; +pub const ImGuiColorEditFlags_PickerMask_: c_int = 100663296; +pub const ImGuiColorEditFlags_InputMask_: c_int = 402653184; +pub const ImGuiColorEditFlags_ = c_uint; +pub const ImGuiSliderFlags_None: c_int = 0; +pub const ImGuiSliderFlags_AlwaysClamp: c_int = 16; +pub const ImGuiSliderFlags_Logarithmic: c_int = 32; +pub const ImGuiSliderFlags_NoRoundToFormat: c_int = 64; +pub const ImGuiSliderFlags_NoInput: c_int = 128; +pub const ImGuiSliderFlags_InvalidMask_: c_int = 1879048207; +pub const ImGuiSliderFlags_ = c_uint; +pub const ImGuiMouseButton_Left: c_int = 0; +pub const ImGuiMouseButton_Right: c_int = 1; +pub const ImGuiMouseButton_Middle: c_int = 2; +pub const ImGuiMouseButton_COUNT: c_int = 5; +pub const ImGuiMouseButton_ = c_uint; +pub const ImGuiMouseCursor_None: c_int = -1; +pub const ImGuiMouseCursor_Arrow: c_int = 0; +pub const ImGuiMouseCursor_TextInput: c_int = 1; +pub const ImGuiMouseCursor_ResizeAll: c_int = 2; +pub const ImGuiMouseCursor_ResizeNS: c_int = 3; +pub const ImGuiMouseCursor_ResizeEW: c_int = 4; +pub const ImGuiMouseCursor_ResizeNESW: c_int = 5; +pub const ImGuiMouseCursor_ResizeNWSE: c_int = 6; +pub const ImGuiMouseCursor_Hand: c_int = 7; +pub const ImGuiMouseCursor_NotAllowed: c_int = 8; +pub const ImGuiMouseCursor_COUNT: c_int = 9; +pub const ImGuiMouseCursor_ = c_int; +pub const ImGuiCond_None: c_int = 0; +pub const ImGuiCond_Always: c_int = 1; +pub const ImGuiCond_Once: c_int = 2; +pub const ImGuiCond_FirstUseEver: c_int = 4; +pub const ImGuiCond_Appearing: c_int = 8; +pub const ImGuiCond_ = c_uint; +pub const ImDrawFlags_None: c_int = 0; +pub const ImDrawFlags_Closed: c_int = 1; +pub const ImDrawFlags_RoundCornersTopLeft: c_int = 16; +pub const ImDrawFlags_RoundCornersTopRight: c_int = 32; +pub const ImDrawFlags_RoundCornersBottomLeft: c_int = 64; +pub const ImDrawFlags_RoundCornersBottomRight: c_int = 128; +pub const ImDrawFlags_RoundCornersNone: c_int = 256; +pub const ImDrawFlags_RoundCornersTop: c_int = 48; +pub const ImDrawFlags_RoundCornersBottom: c_int = 192; +pub const ImDrawFlags_RoundCornersLeft: c_int = 80; +pub const ImDrawFlags_RoundCornersRight: c_int = 160; +pub const ImDrawFlags_RoundCornersAll: c_int = 240; +pub const ImDrawFlags_RoundCornersDefault_: c_int = 240; +pub const ImDrawFlags_RoundCornersMask_: c_int = 496; +pub const ImDrawFlags_ = c_uint; +pub const ImDrawListFlags_None: c_int = 0; +pub const ImDrawListFlags_AntiAliasedLines: c_int = 1; +pub const ImDrawListFlags_AntiAliasedLinesUseTex: c_int = 2; +pub const ImDrawListFlags_AntiAliasedFill: c_int = 4; +pub const ImDrawListFlags_AllowVtxOffset: c_int = 8; +pub const ImDrawListFlags_ = c_uint; +pub const ImFontAtlasFlags_None: c_int = 0; +pub const ImFontAtlasFlags_NoPowerOfTwoHeight: c_int = 1; +pub const ImFontAtlasFlags_NoMouseCursors: c_int = 2; +pub const ImFontAtlasFlags_NoBakedLines: c_int = 4; +pub const ImFontAtlasFlags_ = c_uint; +pub const ImGuiViewportFlags_None: c_int = 0; +pub const ImGuiViewportFlags_IsPlatformWindow: c_int = 1; +pub const ImGuiViewportFlags_IsPlatformMonitor: c_int = 2; +pub const ImGuiViewportFlags_OwnedByApp: c_int = 4; +pub const ImGuiViewportFlags_NoDecoration: c_int = 8; +pub const ImGuiViewportFlags_NoTaskBarIcon: c_int = 16; +pub const ImGuiViewportFlags_NoFocusOnAppearing: c_int = 32; +pub const ImGuiViewportFlags_NoFocusOnClick: c_int = 64; +pub const ImGuiViewportFlags_NoInputs: c_int = 128; +pub const ImGuiViewportFlags_NoRendererClear: c_int = 256; +pub const ImGuiViewportFlags_TopMost: c_int = 512; +pub const ImGuiViewportFlags_Minimized: c_int = 1024; +pub const ImGuiViewportFlags_NoAutoMerge: c_int = 2048; +pub const ImGuiViewportFlags_CanHostOtherWindows: c_int = 4096; +pub const ImGuiViewportFlags_ = c_uint; +pub const ImGuiDataAuthority = c_int; +pub const ImGuiNavHighlightFlags = c_int; +pub const ImGuiNavDirSourceFlags = c_int; +pub const ImGuiSeparatorFlags = c_int; +pub const ImGuiTextFlags = c_int; +pub const ImGuiTooltipFlags = c_int; +pub const ImGuiErrorLogCallback = ?*const fn (?*anyopaque, [*c]const u8, ...) callconv(.C) void; +pub extern var GImGui: [*c]ImGuiContext; +pub const struct_StbTexteditRow = extern struct { + x0: f32 = @import("std").mem.zeroes(f32), + x1: f32 = @import("std").mem.zeroes(f32), + baseline_y_delta: f32 = @import("std").mem.zeroes(f32), + ymin: f32 = @import("std").mem.zeroes(f32), + ymax: f32 = @import("std").mem.zeroes(f32), + num_chars: c_int = @import("std").mem.zeroes(c_int), +}; +pub const StbTexteditRow = struct_StbTexteditRow; +pub const ImGuiItemFlags_None: c_int = 0; +pub const ImGuiItemFlags_NoTabStop: c_int = 1; +pub const ImGuiItemFlags_ButtonRepeat: c_int = 2; +pub const ImGuiItemFlags_Disabled: c_int = 4; +pub const ImGuiItemFlags_NoNav: c_int = 8; +pub const ImGuiItemFlags_NoNavDefaultFocus: c_int = 16; +pub const ImGuiItemFlags_SelectableDontClosePopup: c_int = 32; +pub const ImGuiItemFlags_MixedValue: c_int = 64; +pub const ImGuiItemFlags_ReadOnly: c_int = 128; +pub const ImGuiItemFlags_Inputable: c_int = 256; +pub const ImGuiItemFlags_ = c_uint; +pub const ImGuiItemStatusFlags_None: c_int = 0; +pub const ImGuiItemStatusFlags_HoveredRect: c_int = 1; +pub const ImGuiItemStatusFlags_HasDisplayRect: c_int = 2; +pub const ImGuiItemStatusFlags_Edited: c_int = 4; +pub const ImGuiItemStatusFlags_ToggledSelection: c_int = 8; +pub const ImGuiItemStatusFlags_ToggledOpen: c_int = 16; +pub const ImGuiItemStatusFlags_HasDeactivated: c_int = 32; +pub const ImGuiItemStatusFlags_Deactivated: c_int = 64; +pub const ImGuiItemStatusFlags_HoveredWindow: c_int = 128; +pub const ImGuiItemStatusFlags_FocusedByTabbing: c_int = 256; +pub const ImGuiItemStatusFlags_ = c_uint; +pub const ImGuiInputTextFlags_Multiline: c_int = 67108864; +pub const ImGuiInputTextFlags_NoMarkEdited: c_int = 134217728; +pub const ImGuiInputTextFlags_MergedItem: c_int = 268435456; +pub const ImGuiInputTextFlagsPrivate_ = c_uint; +pub const ImGuiButtonFlags_PressedOnClick: c_int = 16; +pub const ImGuiButtonFlags_PressedOnClickRelease: c_int = 32; +pub const ImGuiButtonFlags_PressedOnClickReleaseAnywhere: c_int = 64; +pub const ImGuiButtonFlags_PressedOnRelease: c_int = 128; +pub const ImGuiButtonFlags_PressedOnDoubleClick: c_int = 256; +pub const ImGuiButtonFlags_PressedOnDragDropHold: c_int = 512; +pub const ImGuiButtonFlags_Repeat: c_int = 1024; +pub const ImGuiButtonFlags_FlattenChildren: c_int = 2048; +pub const ImGuiButtonFlags_AllowItemOverlap: c_int = 4096; +pub const ImGuiButtonFlags_DontClosePopups: c_int = 8192; +pub const ImGuiButtonFlags_AlignTextBaseLine: c_int = 32768; +pub const ImGuiButtonFlags_NoKeyModifiers: c_int = 65536; +pub const ImGuiButtonFlags_NoHoldingActiveId: c_int = 131072; +pub const ImGuiButtonFlags_NoNavFocus: c_int = 262144; +pub const ImGuiButtonFlags_NoHoveredOnFocus: c_int = 524288; +pub const ImGuiButtonFlags_PressedOnMask_: c_int = 1008; +pub const ImGuiButtonFlags_PressedOnDefault_: c_int = 32; +pub const ImGuiButtonFlagsPrivate_ = c_uint; +pub const ImGuiComboFlags_CustomPreview: c_int = 1048576; +pub const ImGuiComboFlagsPrivate_ = c_uint; +pub const ImGuiSliderFlags_Vertical: c_int = 1048576; +pub const ImGuiSliderFlags_ReadOnly: c_int = 2097152; +pub const ImGuiSliderFlagsPrivate_ = c_uint; +pub const ImGuiSelectableFlags_NoHoldingActiveID: c_int = 1048576; +pub const ImGuiSelectableFlags_SelectOnNav: c_int = 2097152; +pub const ImGuiSelectableFlags_SelectOnClick: c_int = 4194304; +pub const ImGuiSelectableFlags_SelectOnRelease: c_int = 8388608; +pub const ImGuiSelectableFlags_SpanAvailWidth: c_int = 16777216; +pub const ImGuiSelectableFlags_DrawHoveredWhenHeld: c_int = 33554432; +pub const ImGuiSelectableFlags_SetNavIdOnHover: c_int = 67108864; +pub const ImGuiSelectableFlags_NoPadWithHalfSpacing: c_int = 134217728; +pub const ImGuiSelectableFlagsPrivate_ = c_uint; +pub const ImGuiTreeNodeFlags_ClipLabelForTrailingButton: c_int = 1048576; +pub const ImGuiTreeNodeFlagsPrivate_ = c_uint; +pub const ImGuiSeparatorFlags_None: c_int = 0; +pub const ImGuiSeparatorFlags_Horizontal: c_int = 1; +pub const ImGuiSeparatorFlags_Vertical: c_int = 2; +pub const ImGuiSeparatorFlags_SpanAllColumns: c_int = 4; +pub const ImGuiSeparatorFlags_ = c_uint; +pub const ImGuiTextFlags_None: c_int = 0; +pub const ImGuiTextFlags_NoWidthForLargeClippedText: c_int = 1; +pub const ImGuiTextFlags_ = c_uint; +pub const ImGuiTooltipFlags_None: c_int = 0; +pub const ImGuiTooltipFlags_OverridePreviousTooltip: c_int = 1; +pub const ImGuiTooltipFlags_ = c_uint; +pub const ImGuiLayoutType_Horizontal: c_int = 0; +pub const ImGuiLayoutType_Vertical: c_int = 1; +pub const ImGuiLayoutType_ = c_uint; +pub const ImGuiLogType_None: c_int = 0; +pub const ImGuiLogType_TTY: c_int = 1; +pub const ImGuiLogType_File: c_int = 2; +pub const ImGuiLogType_Buffer: c_int = 3; +pub const ImGuiLogType_Clipboard: c_int = 4; +pub const ImGuiLogType = c_uint; +pub const ImGuiAxis_None: c_int = -1; +pub const ImGuiAxis_X: c_int = 0; +pub const ImGuiAxis_Y: c_int = 1; +pub const ImGuiAxis = c_int; +pub const ImGuiPlotType_Lines: c_int = 0; +pub const ImGuiPlotType_Histogram: c_int = 1; +pub const ImGuiPlotType = c_uint; +pub const ImGuiPopupPositionPolicy_Default: c_int = 0; +pub const ImGuiPopupPositionPolicy_ComboBox: c_int = 1; +pub const ImGuiPopupPositionPolicy_Tooltip: c_int = 2; +pub const ImGuiPopupPositionPolicy = c_uint; +pub const struct_ImGuiDataTypeTempStorage = extern struct { + Data: [8]ImU8 = @import("std").mem.zeroes([8]ImU8), +}; +pub const ImGuiDataTypeTempStorage = struct_ImGuiDataTypeTempStorage; +pub const ImGuiDataType_String: c_int = 11; +pub const ImGuiDataType_Pointer: c_int = 12; +pub const ImGuiDataType_ID: c_int = 13; +pub const ImGuiDataTypePrivate_ = c_uint; +pub const ImGuiNextWindowDataFlags_None: c_int = 0; +pub const ImGuiNextWindowDataFlags_HasPos: c_int = 1; +pub const ImGuiNextWindowDataFlags_HasSize: c_int = 2; +pub const ImGuiNextWindowDataFlags_HasContentSize: c_int = 4; +pub const ImGuiNextWindowDataFlags_HasCollapsed: c_int = 8; +pub const ImGuiNextWindowDataFlags_HasSizeConstraint: c_int = 16; +pub const ImGuiNextWindowDataFlags_HasFocus: c_int = 32; +pub const ImGuiNextWindowDataFlags_HasBgAlpha: c_int = 64; +pub const ImGuiNextWindowDataFlags_HasScroll: c_int = 128; +pub const ImGuiNextWindowDataFlags_HasViewport: c_int = 256; +pub const ImGuiNextWindowDataFlags_HasDock: c_int = 512; +pub const ImGuiNextWindowDataFlags_HasWindowClass: c_int = 1024; +pub const ImGuiNextWindowDataFlags_ = c_uint; +pub const ImGuiNextItemDataFlags_None: c_int = 0; +pub const ImGuiNextItemDataFlags_HasWidth: c_int = 1; +pub const ImGuiNextItemDataFlags_HasOpen: c_int = 2; +pub const ImGuiNextItemDataFlags_ = c_uint; +pub const ImGuiKey_LegacyNativeKey_BEGIN: c_int = 0; +pub const ImGuiKey_LegacyNativeKey_END: c_int = 512; +pub const ImGuiKey_Gamepad_BEGIN: c_int = 617; +pub const ImGuiKey_Gamepad_END: c_int = 641; +pub const ImGuiKeyPrivate_ = c_uint; +pub const ImGuiInputEventType_None: c_int = 0; +pub const ImGuiInputEventType_MousePos: c_int = 1; +pub const ImGuiInputEventType_MouseWheel: c_int = 2; +pub const ImGuiInputEventType_MouseButton: c_int = 3; +pub const ImGuiInputEventType_MouseViewport: c_int = 4; +pub const ImGuiInputEventType_Key: c_int = 5; +pub const ImGuiInputEventType_Text: c_int = 6; +pub const ImGuiInputEventType_Focus: c_int = 7; +pub const ImGuiInputEventType_COUNT: c_int = 8; +pub const ImGuiInputEventType = c_uint; +pub const ImGuiInputSource_None: c_int = 0; +pub const ImGuiInputSource_Mouse: c_int = 1; +pub const ImGuiInputSource_Keyboard: c_int = 2; +pub const ImGuiInputSource_Gamepad: c_int = 3; +pub const ImGuiInputSource_Clipboard: c_int = 4; +pub const ImGuiInputSource_Nav: c_int = 5; +pub const ImGuiInputSource_COUNT: c_int = 6; +pub const ImGuiInputSource = c_uint; +pub const ImGuiNavReadMode_Down: c_int = 0; +pub const ImGuiNavReadMode_Pressed: c_int = 1; +pub const ImGuiNavReadMode_Released: c_int = 2; +pub const ImGuiNavReadMode_Repeat: c_int = 3; +pub const ImGuiNavReadMode_RepeatSlow: c_int = 4; +pub const ImGuiNavReadMode_RepeatFast: c_int = 5; +pub const ImGuiNavReadMode = c_uint; +pub const ImGuiActivateFlags_None: c_int = 0; +pub const ImGuiActivateFlags_PreferInput: c_int = 1; +pub const ImGuiActivateFlags_PreferTweak: c_int = 2; +pub const ImGuiActivateFlags_TryToPreserveState: c_int = 4; +pub const ImGuiActivateFlags_ = c_uint; +pub const ImGuiScrollFlags_None: c_int = 0; +pub const ImGuiScrollFlags_KeepVisibleEdgeX: c_int = 1; +pub const ImGuiScrollFlags_KeepVisibleEdgeY: c_int = 2; +pub const ImGuiScrollFlags_KeepVisibleCenterX: c_int = 4; +pub const ImGuiScrollFlags_KeepVisibleCenterY: c_int = 8; +pub const ImGuiScrollFlags_AlwaysCenterX: c_int = 16; +pub const ImGuiScrollFlags_AlwaysCenterY: c_int = 32; +pub const ImGuiScrollFlags_NoScrollParent: c_int = 64; +pub const ImGuiScrollFlags_MaskX_: c_int = 21; +pub const ImGuiScrollFlags_MaskY_: c_int = 42; +pub const ImGuiScrollFlags_ = c_uint; +pub const ImGuiNavHighlightFlags_None: c_int = 0; +pub const ImGuiNavHighlightFlags_TypeDefault: c_int = 1; +pub const ImGuiNavHighlightFlags_TypeThin: c_int = 2; +pub const ImGuiNavHighlightFlags_AlwaysDraw: c_int = 4; +pub const ImGuiNavHighlightFlags_NoRounding: c_int = 8; +pub const ImGuiNavHighlightFlags_ = c_uint; +pub const ImGuiNavDirSourceFlags_None: c_int = 0; +pub const ImGuiNavDirSourceFlags_RawKeyboard: c_int = 1; +pub const ImGuiNavDirSourceFlags_Keyboard: c_int = 2; +pub const ImGuiNavDirSourceFlags_PadDPad: c_int = 4; +pub const ImGuiNavDirSourceFlags_PadLStick: c_int = 8; +pub const ImGuiNavDirSourceFlags_ = c_uint; +pub const ImGuiNavMoveFlags_None: c_int = 0; +pub const ImGuiNavMoveFlags_LoopX: c_int = 1; +pub const ImGuiNavMoveFlags_LoopY: c_int = 2; +pub const ImGuiNavMoveFlags_WrapX: c_int = 4; +pub const ImGuiNavMoveFlags_WrapY: c_int = 8; +pub const ImGuiNavMoveFlags_AllowCurrentNavId: c_int = 16; +pub const ImGuiNavMoveFlags_AlsoScoreVisibleSet: c_int = 32; +pub const ImGuiNavMoveFlags_ScrollToEdgeY: c_int = 64; +pub const ImGuiNavMoveFlags_Forwarded: c_int = 128; +pub const ImGuiNavMoveFlags_DebugNoResult: c_int = 256; +pub const ImGuiNavMoveFlags_FocusApi: c_int = 512; +pub const ImGuiNavMoveFlags_Tabbing: c_int = 1024; +pub const ImGuiNavMoveFlags_Activate: c_int = 2048; +pub const ImGuiNavMoveFlags_DontSetNavHighlight: c_int = 4096; +pub const ImGuiNavMoveFlags_ = c_uint; +pub const ImGuiNavLayer_Main: c_int = 0; +pub const ImGuiNavLayer_Menu: c_int = 1; +pub const ImGuiNavLayer_COUNT: c_int = 2; +pub const ImGuiNavLayer = c_uint; +pub const ImGuiOldColumnFlags_None: c_int = 0; +pub const ImGuiOldColumnFlags_NoBorder: c_int = 1; +pub const ImGuiOldColumnFlags_NoResize: c_int = 2; +pub const ImGuiOldColumnFlags_NoPreserveWidths: c_int = 4; +pub const ImGuiOldColumnFlags_NoForceWithinWindow: c_int = 8; +pub const ImGuiOldColumnFlags_GrowParentContentsSize: c_int = 16; +pub const ImGuiOldColumnFlags_ = c_uint; +pub const ImGuiDockNodeFlags_DockSpace: c_int = 1024; +pub const ImGuiDockNodeFlags_CentralNode: c_int = 2048; +pub const ImGuiDockNodeFlags_NoTabBar: c_int = 4096; +pub const ImGuiDockNodeFlags_HiddenTabBar: c_int = 8192; +pub const ImGuiDockNodeFlags_NoWindowMenuButton: c_int = 16384; +pub const ImGuiDockNodeFlags_NoCloseButton: c_int = 32768; +pub const ImGuiDockNodeFlags_NoDocking: c_int = 65536; +pub const ImGuiDockNodeFlags_NoDockingSplitMe: c_int = 131072; +pub const ImGuiDockNodeFlags_NoDockingSplitOther: c_int = 262144; +pub const ImGuiDockNodeFlags_NoDockingOverMe: c_int = 524288; +pub const ImGuiDockNodeFlags_NoDockingOverOther: c_int = 1048576; +pub const ImGuiDockNodeFlags_NoDockingOverEmpty: c_int = 2097152; +pub const ImGuiDockNodeFlags_NoResizeX: c_int = 4194304; +pub const ImGuiDockNodeFlags_NoResizeY: c_int = 8388608; +pub const ImGuiDockNodeFlags_SharedFlagsInheritMask_: c_int = -1; +pub const ImGuiDockNodeFlags_NoResizeFlagsMask_: c_int = 12582944; +pub const ImGuiDockNodeFlags_LocalFlagsMask_: c_int = 12713072; +pub const ImGuiDockNodeFlags_LocalFlagsTransferMask_: c_int = 12712048; +pub const ImGuiDockNodeFlags_SavedFlagsMask_: c_int = 12712992; +pub const ImGuiDockNodeFlagsPrivate_ = c_int; +pub const ImGuiDataAuthority_Auto: c_int = 0; +pub const ImGuiDataAuthority_DockNode: c_int = 1; +pub const ImGuiDataAuthority_Window: c_int = 2; +pub const ImGuiDataAuthority_ = c_uint; +pub const ImGuiDockNodeState_Unknown: c_int = 0; +pub const ImGuiDockNodeState_HostWindowHiddenBecauseSingleWindow: c_int = 1; +pub const ImGuiDockNodeState_HostWindowHiddenBecauseWindowsAreResizing: c_int = 2; +pub const ImGuiDockNodeState_HostWindowVisible: c_int = 3; +pub const ImGuiDockNodeState = c_uint; +pub const ImGuiWindowDockStyleCol_Text: c_int = 0; +pub const ImGuiWindowDockStyleCol_Tab: c_int = 1; +pub const ImGuiWindowDockStyleCol_TabHovered: c_int = 2; +pub const ImGuiWindowDockStyleCol_TabActive: c_int = 3; +pub const ImGuiWindowDockStyleCol_TabUnfocused: c_int = 4; +pub const ImGuiWindowDockStyleCol_TabUnfocusedActive: c_int = 5; +pub const ImGuiWindowDockStyleCol_COUNT: c_int = 6; +pub const ImGuiWindowDockStyleCol = c_uint; +pub const struct_ImGuiWindowDockStyle = extern struct { + Colors: [6]ImU32 = @import("std").mem.zeroes([6]ImU32), +}; +pub const ImGuiWindowDockStyle = struct_ImGuiWindowDockStyle; +pub const ImGuiDebugLogFlags_None: c_int = 0; +pub const ImGuiDebugLogFlags_EventActiveId: c_int = 1; +pub const ImGuiDebugLogFlags_EventFocus: c_int = 2; +pub const ImGuiDebugLogFlags_EventPopup: c_int = 4; +pub const ImGuiDebugLogFlags_EventNav: c_int = 8; +pub const ImGuiDebugLogFlags_EventIO: c_int = 16; +pub const ImGuiDebugLogFlags_EventDocking: c_int = 32; +pub const ImGuiDebugLogFlags_EventViewport: c_int = 64; +pub const ImGuiDebugLogFlags_EventMask_: c_int = 127; +pub const ImGuiDebugLogFlags_OutputToTTY: c_int = 1024; +pub const ImGuiDebugLogFlags_ = c_uint; +pub const ImGuiContextHookType_NewFramePre: c_int = 0; +pub const ImGuiContextHookType_NewFramePost: c_int = 1; +pub const ImGuiContextHookType_EndFramePre: c_int = 2; +pub const ImGuiContextHookType_EndFramePost: c_int = 3; +pub const ImGuiContextHookType_RenderPre: c_int = 4; +pub const ImGuiContextHookType_RenderPost: c_int = 5; +pub const ImGuiContextHookType_Shutdown: c_int = 6; +pub const ImGuiContextHookType_PendingRemoval_: c_int = 7; +pub const ImGuiContextHookType = c_uint; +pub const struct_ImVector_ImGuiOldColumns = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiOldColumns = @import("std").mem.zeroes([*c]ImGuiOldColumns), +}; +pub const ImVector_ImGuiOldColumns = struct_ImVector_ImGuiOldColumns; +pub const ImGuiTabBarFlags_DockNode: c_int = 1048576; +pub const ImGuiTabBarFlags_IsFocused: c_int = 2097152; +pub const ImGuiTabBarFlags_SaveSettings: c_int = 4194304; +pub const ImGuiTabBarFlagsPrivate_ = c_uint; +pub const ImGuiTabItemFlags_SectionMask_: c_int = 192; +pub const ImGuiTabItemFlags_NoCloseButton: c_int = 1048576; +pub const ImGuiTabItemFlags_Button: c_int = 2097152; +pub const ImGuiTabItemFlags_Unsorted: c_int = 4194304; +pub const ImGuiTabItemFlags_Preview: c_int = 8388608; +pub const ImGuiTabItemFlagsPrivate_ = c_uint; +pub const struct_ImVector_ImGuiTableInstanceData = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: [*c]ImGuiTableInstanceData = @import("std").mem.zeroes([*c]ImGuiTableInstanceData), +}; +pub const ImVector_ImGuiTableInstanceData = struct_ImVector_ImGuiTableInstanceData; +pub const struct_ImVector_ImGuiTableColumnSortSpecs = extern struct { + Size: c_int = @import("std").mem.zeroes(c_int), + Capacity: c_int = @import("std").mem.zeroes(c_int), + Data: ?*ImGuiTableColumnSortSpecs = @import("std").mem.zeroes(?*ImGuiTableColumnSortSpecs), +}; +pub const ImVector_ImGuiTableColumnSortSpecs = struct_ImVector_ImGuiTableColumnSortSpecs; +// cimgui2.h:2841:10: warning: struct demoted to opaque type - has bitfield +pub const struct_ImGuiTableColumnSettings = opaque {}; +pub const ImGuiTableColumnSettings = struct_ImGuiTableColumnSettings; +pub extern fn ImVec2_ImVec2_Nil() [*c]ImVec2; +pub extern fn ImVec2_destroy(self: [*c]ImVec2) void; +pub extern fn ImVec2_ImVec2_Float(_x: f32, _y: f32) [*c]ImVec2; +pub extern fn ImVec4_ImVec4_Nil() [*c]ImVec4; +pub extern fn ImVec4_destroy(self: [*c]ImVec4) void; +pub extern fn ImVec4_ImVec4_Float(_x: f32, _y: f32, _z: f32, _w: f32) [*c]ImVec4; +pub extern fn igCreateContext(shared_font_atlas: [*c]ImFontAtlas) [*c]ImGuiContext; +pub extern fn igDestroyContext(ctx: [*c]ImGuiContext) void; +pub extern fn igGetCurrentContext() [*c]ImGuiContext; +pub extern fn igSetCurrentContext(ctx: [*c]ImGuiContext) void; +pub extern fn igGetIO() [*c]ImGuiIO; +pub extern fn igGetStyle() [*c]ImGuiStyle; +pub extern fn igNewFrame() void; +pub extern fn igEndFrame() void; +pub extern fn igRender() void; +pub extern fn igGetDrawData() [*c]ImDrawData; +pub extern fn igShowDemoWindow(p_open: [*c]bool) void; +pub extern fn igShowMetricsWindow(p_open: [*c]bool) void; +pub extern fn igShowDebugLogWindow(p_open: [*c]bool) void; +pub extern fn igShowStackToolWindow(p_open: [*c]bool) void; +pub extern fn igShowAboutWindow(p_open: [*c]bool) void; +pub extern fn igShowStyleEditor(ref: [*c]ImGuiStyle) void; +pub extern fn igShowStyleSelector(label: [*c]const u8) bool; +pub extern fn igShowFontSelector(label: [*c]const u8) void; +pub extern fn igShowUserGuide() void; +pub extern fn igGetVersion() [*c]const u8; +pub extern fn igStyleColorsDark(dst: [*c]ImGuiStyle) void; +pub extern fn igStyleColorsLight(dst: [*c]ImGuiStyle) void; +pub extern fn igStyleColorsClassic(dst: [*c]ImGuiStyle) void; +pub extern fn igBegin(name: [*c]const u8, p_open: [*c]bool, flags: ImGuiWindowFlags) bool; +pub extern fn igEnd() void; +pub extern fn igBeginChild_Str(str_id: [*c]const u8, size: ImVec2, border: bool, flags: ImGuiWindowFlags) bool; +pub extern fn igBeginChild_ID(id: ImGuiID, size: ImVec2, border: bool, flags: ImGuiWindowFlags) bool; +pub extern fn igEndChild() void; +pub extern fn igIsWindowAppearing() bool; +pub extern fn igIsWindowCollapsed() bool; +pub extern fn igIsWindowFocused(flags: ImGuiFocusedFlags) bool; +pub extern fn igIsWindowHovered(flags: ImGuiHoveredFlags) bool; +pub extern fn igGetWindowDrawList() [*c]ImDrawList; +pub extern fn igGetWindowDpiScale() f32; +pub extern fn igGetWindowPos(pOut: [*c]ImVec2) void; +pub extern fn igGetWindowSize(pOut: [*c]ImVec2) void; +pub extern fn igGetWindowWidth() f32; +pub extern fn igGetWindowHeight() f32; +pub extern fn igGetWindowViewport() [*c]ImGuiViewport; +pub extern fn igSetNextWindowPos(pos: ImVec2, cond: ImGuiCond, pivot: ImVec2) void; +pub extern fn igSetNextWindowSize(size: ImVec2, cond: ImGuiCond) void; +pub extern fn igSetNextWindowSizeConstraints(size_min: ImVec2, size_max: ImVec2, custom_callback: ImGuiSizeCallback, custom_callback_data: ?*anyopaque) void; +pub extern fn igSetNextWindowContentSize(size: ImVec2) void; +pub extern fn igSetNextWindowCollapsed(collapsed: bool, cond: ImGuiCond) void; +pub extern fn igSetNextWindowFocus() void; +pub extern fn igSetNextWindowBgAlpha(alpha: f32) void; +pub extern fn igSetNextWindowViewport(viewport_id: ImGuiID) void; +pub extern fn igSetWindowPos_Vec2(pos: ImVec2, cond: ImGuiCond) void; +pub extern fn igSetWindowSize_Vec2(size: ImVec2, cond: ImGuiCond) void; +pub extern fn igSetWindowCollapsed_Bool(collapsed: bool, cond: ImGuiCond) void; +pub extern fn igSetWindowFocus_Nil() void; +pub extern fn igSetWindowFontScale(scale: f32) void; +pub extern fn igSetWindowPos_Str(name: [*c]const u8, pos: ImVec2, cond: ImGuiCond) void; +pub extern fn igSetWindowSize_Str(name: [*c]const u8, size: ImVec2, cond: ImGuiCond) void; +pub extern fn igSetWindowCollapsed_Str(name: [*c]const u8, collapsed: bool, cond: ImGuiCond) void; +pub extern fn igSetWindowFocus_Str(name: [*c]const u8) void; +pub extern fn igGetContentRegionAvail(pOut: [*c]ImVec2) void; +pub extern fn igGetContentRegionMax(pOut: [*c]ImVec2) void; +pub extern fn igGetWindowContentRegionMin(pOut: [*c]ImVec2) void; +pub extern fn igGetWindowContentRegionMax(pOut: [*c]ImVec2) void; +pub extern fn igGetScrollX() f32; +pub extern fn igGetScrollY() f32; +pub extern fn igSetScrollX_Float(scroll_x: f32) void; +pub extern fn igSetScrollY_Float(scroll_y: f32) void; +pub extern fn igGetScrollMaxX() f32; +pub extern fn igGetScrollMaxY() f32; +pub extern fn igSetScrollHereX(center_x_ratio: f32) void; +pub extern fn igSetScrollHereY(center_y_ratio: f32) void; +pub extern fn igSetScrollFromPosX_Float(local_x: f32, center_x_ratio: f32) void; +pub extern fn igSetScrollFromPosY_Float(local_y: f32, center_y_ratio: f32) void; +pub extern fn igPushFont(font: [*c]ImFont) void; +pub extern fn igPopFont() void; +pub extern fn igPushStyleColor_U32(idx: ImGuiCol, col: ImU32) void; +pub extern fn igPushStyleColor_Vec4(idx: ImGuiCol, col: ImVec4) void; +pub extern fn igPopStyleColor(count: c_int) void; +pub extern fn igPushStyleVar_Float(idx: ImGuiStyleVar, val: f32) void; +pub extern fn igPushStyleVar_Vec2(idx: ImGuiStyleVar, val: ImVec2) void; +pub extern fn igPopStyleVar(count: c_int) void; +pub extern fn igPushAllowKeyboardFocus(allow_keyboard_focus: bool) void; +pub extern fn igPopAllowKeyboardFocus() void; +pub extern fn igPushButtonRepeat(repeat: bool) void; +pub extern fn igPopButtonRepeat() void; +pub extern fn igPushItemWidth(item_width: f32) void; +pub extern fn igPopItemWidth() void; +pub extern fn igSetNextItemWidth(item_width: f32) void; +pub extern fn igCalcItemWidth() f32; +pub extern fn igPushTextWrapPos(wrap_local_pos_x: f32) void; +pub extern fn igPopTextWrapPos() void; +pub extern fn igGetFont() [*c]ImFont; +pub extern fn igGetFontSize() f32; +pub extern fn igGetFontTexUvWhitePixel(pOut: [*c]ImVec2) void; +pub extern fn igGetColorU32_Col(idx: ImGuiCol, alpha_mul: f32) ImU32; +pub extern fn igGetColorU32_Vec4(col: ImVec4) ImU32; +pub extern fn igGetColorU32_U32(col: ImU32) ImU32; +pub extern fn igGetStyleColorVec4(idx: ImGuiCol) [*c]const ImVec4; +pub extern fn igSeparator() void; +pub extern fn igSameLine(offset_from_start_x: f32, spacing: f32) void; +pub extern fn igNewLine() void; +pub extern fn igSpacing() void; +pub extern fn igDummy(size: ImVec2) void; +pub extern fn igIndent(indent_w: f32) void; +pub extern fn igUnindent(indent_w: f32) void; +pub extern fn igBeginGroup() void; +pub extern fn igEndGroup() void; +pub extern fn igGetCursorPos(pOut: [*c]ImVec2) void; +pub extern fn igGetCursorPosX() f32; +pub extern fn igGetCursorPosY() f32; +pub extern fn igSetCursorPos(local_pos: ImVec2) void; +pub extern fn igSetCursorPosX(local_x: f32) void; +pub extern fn igSetCursorPosY(local_y: f32) void; +pub extern fn igGetCursorStartPos(pOut: [*c]ImVec2) void; +pub extern fn igGetCursorScreenPos(pOut: [*c]ImVec2) void; +pub extern fn igSetCursorScreenPos(pos: ImVec2) void; +pub extern fn igAlignTextToFramePadding() void; +pub extern fn igGetTextLineHeight() f32; +pub extern fn igGetTextLineHeightWithSpacing() f32; +pub extern fn igGetFrameHeight() f32; +pub extern fn igGetFrameHeightWithSpacing() f32; +pub extern fn igPushID_Str(str_id: [*c]const u8) void; +pub extern fn igPushID_StrStr(str_id_begin: [*c]const u8, str_id_end: [*c]const u8) void; +pub extern fn igPushID_Ptr(ptr_id: ?*const anyopaque) void; +pub extern fn igPushID_Int(int_id: c_int) void; +pub extern fn igPopID() void; +pub extern fn igGetID_Str(str_id: [*c]const u8) ImGuiID; +pub extern fn igGetID_StrStr(str_id_begin: [*c]const u8, str_id_end: [*c]const u8) ImGuiID; +pub extern fn igGetID_Ptr(ptr_id: ?*const anyopaque) ImGuiID; +pub extern fn igTextUnformatted(text: [*c]const u8, text_end: [*c]const u8) void; +pub extern fn igText(fmt: [*c]const u8, ...) void; +pub extern fn igTextV(fmt: [*c]const u8, args: va_list) void; +pub extern fn igTextColored(col: ImVec4, fmt: [*c]const u8, ...) void; +pub extern fn igTextColoredV(col: ImVec4, fmt: [*c]const u8, args: va_list) void; +pub extern fn igTextDisabled(fmt: [*c]const u8, ...) void; +pub extern fn igTextDisabledV(fmt: [*c]const u8, args: va_list) void; +pub extern fn igTextWrapped(fmt: [*c]const u8, ...) void; +pub extern fn igTextWrappedV(fmt: [*c]const u8, args: va_list) void; +pub extern fn igLabelText(label: [*c]const u8, fmt: [*c]const u8, ...) void; +pub extern fn igLabelTextV(label: [*c]const u8, fmt: [*c]const u8, args: va_list) void; +pub extern fn igBulletText(fmt: [*c]const u8, ...) void; +pub extern fn igBulletTextV(fmt: [*c]const u8, args: va_list) void; +pub extern fn igButton(label: [*c]const u8, size: ImVec2) bool; +pub extern fn igSmallButton(label: [*c]const u8) bool; +pub extern fn igInvisibleButton(str_id: [*c]const u8, size: ImVec2, flags: ImGuiButtonFlags) bool; +pub extern fn igArrowButton(str_id: [*c]const u8, dir: ImGuiDir) bool; +pub extern fn igImage(user_texture_id: ImTextureID, size: ImVec2, uv0: ImVec2, uv1: ImVec2, tint_col: ImVec4, border_col: ImVec4) void; +pub extern fn igImageButton(user_texture_id: ImTextureID, size: ImVec2, uv0: ImVec2, uv1: ImVec2, frame_padding: c_int, bg_col: ImVec4, tint_col: ImVec4) bool; +pub extern fn igCheckbox(label: [*c]const u8, v: [*c]bool) bool; +pub extern fn igCheckboxFlags_IntPtr(label: [*c]const u8, flags: [*c]c_int, flags_value: c_int) bool; +pub extern fn igCheckboxFlags_UintPtr(label: [*c]const u8, flags: [*c]c_uint, flags_value: c_uint) bool; +pub extern fn igRadioButton_Bool(label: [*c]const u8, active: bool) bool; +pub extern fn igRadioButton_IntPtr(label: [*c]const u8, v: [*c]c_int, v_button: c_int) bool; +pub extern fn igProgressBar(fraction: f32, size_arg: ImVec2, overlay: [*c]const u8) void; +pub extern fn igBullet() void; +pub extern fn igBeginCombo(label: [*c]const u8, preview_value: [*c]const u8, flags: ImGuiComboFlags) bool; +pub extern fn igEndCombo() void; +pub extern fn igCombo_Str_arr(label: [*c]const u8, current_item: [*c]c_int, items: [*c]const [*c]const u8, items_count: c_int, popup_max_height_in_items: c_int) bool; +pub extern fn igCombo_Str(label: [*c]const u8, current_item: [*c]c_int, items_separated_by_zeros: [*c]const u8, popup_max_height_in_items: c_int) bool; +pub extern fn igCombo_FnBoolPtr(label: [*c]const u8, current_item: [*c]c_int, items_getter: ?*const fn (?*anyopaque, c_int, [*c][*c]const u8) callconv(.C) bool, data: ?*anyopaque, items_count: c_int, popup_max_height_in_items: c_int) bool; +pub extern fn igDragFloat(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragFloat2(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragFloat3(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragFloat4(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragFloatRange2(label: [*c]const u8, v_current_min: [*c]f32, v_current_max: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, format_max: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragInt(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragInt2(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragInt3(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragInt4(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragIntRange2(label: [*c]const u8, v_current_min: [*c]c_int, v_current_max: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, format_max: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragScalar(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, v_speed: f32, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igDragScalarN(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, components: c_int, v_speed: f32, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderFloat(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderFloat2(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderFloat3(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderFloat4(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderAngle(label: [*c]const u8, v_rad: [*c]f32, v_degrees_min: f32, v_degrees_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderInt(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderInt2(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderInt3(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderInt4(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderScalar(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderScalarN(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, components: c_int, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igVSliderFloat(label: [*c]const u8, size: ImVec2, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igVSliderInt(label: [*c]const u8, size: ImVec2, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igVSliderScalar(label: [*c]const u8, size: ImVec2, data_type: ImGuiDataType, p_data: ?*anyopaque, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igInputText(label: [*c]const u8, buf: [*c]u8, buf_size: usize, flags: ImGuiInputTextFlags, callback: ImGuiInputTextCallback, user_data: ?*anyopaque) bool; +pub extern fn igInputTextMultiline(label: [*c]const u8, buf: [*c]u8, buf_size: usize, size: ImVec2, flags: ImGuiInputTextFlags, callback: ImGuiInputTextCallback, user_data: ?*anyopaque) bool; +pub extern fn igInputTextWithHint(label: [*c]const u8, hint: [*c]const u8, buf: [*c]u8, buf_size: usize, flags: ImGuiInputTextFlags, callback: ImGuiInputTextCallback, user_data: ?*anyopaque) bool; +pub extern fn igInputFloat(label: [*c]const u8, v: [*c]f32, step: f32, step_fast: f32, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputFloat2(label: [*c]const u8, v: [*c]f32, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputFloat3(label: [*c]const u8, v: [*c]f32, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputFloat4(label: [*c]const u8, v: [*c]f32, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputInt(label: [*c]const u8, v: [*c]c_int, step: c_int, step_fast: c_int, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputInt2(label: [*c]const u8, v: [*c]c_int, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputInt3(label: [*c]const u8, v: [*c]c_int, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputInt4(label: [*c]const u8, v: [*c]c_int, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputDouble(label: [*c]const u8, v: [*c]f64, step: f64, step_fast: f64, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputScalar(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, p_step: ?*const anyopaque, p_step_fast: ?*const anyopaque, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; +pub extern fn igInputScalarN(label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, components: c_int, p_step: ?*const anyopaque, p_step_fast: ?*const anyopaque, format: [*c]const u8, flags: ImGuiInputTextFlags) bool; +pub extern fn igColorEdit3(label: [*c]const u8, col: [*c]f32, flags: ImGuiColorEditFlags) bool; +pub extern fn igColorEdit4(label: [*c]const u8, col: [*c]f32, flags: ImGuiColorEditFlags) bool; +pub extern fn igColorPicker3(label: [*c]const u8, col: [*c]f32, flags: ImGuiColorEditFlags) bool; +pub extern fn igColorPicker4(label: [*c]const u8, col: [*c]f32, flags: ImGuiColorEditFlags, ref_col: [*c]const f32) bool; +pub extern fn igColorButton(desc_id: [*c]const u8, col: ImVec4, flags: ImGuiColorEditFlags, size: ImVec2) bool; +pub extern fn igSetColorEditOptions(flags: ImGuiColorEditFlags) void; +pub extern fn igTreeNode_Str(label: [*c]const u8) bool; +pub extern fn igTreeNode_StrStr(str_id: [*c]const u8, fmt: [*c]const u8, ...) bool; +pub extern fn igTreeNode_Ptr(ptr_id: ?*const anyopaque, fmt: [*c]const u8, ...) bool; +pub extern fn igTreeNodeV_Str(str_id: [*c]const u8, fmt: [*c]const u8, args: va_list) bool; +pub extern fn igTreeNodeV_Ptr(ptr_id: ?*const anyopaque, fmt: [*c]const u8, args: va_list) bool; +pub extern fn igTreeNodeEx_Str(label: [*c]const u8, flags: ImGuiTreeNodeFlags) bool; +pub extern fn igTreeNodeEx_StrStr(str_id: [*c]const u8, flags: ImGuiTreeNodeFlags, fmt: [*c]const u8, ...) bool; +pub extern fn igTreeNodeEx_Ptr(ptr_id: ?*const anyopaque, flags: ImGuiTreeNodeFlags, fmt: [*c]const u8, ...) bool; +pub extern fn igTreeNodeExV_Str(str_id: [*c]const u8, flags: ImGuiTreeNodeFlags, fmt: [*c]const u8, args: va_list) bool; +pub extern fn igTreeNodeExV_Ptr(ptr_id: ?*const anyopaque, flags: ImGuiTreeNodeFlags, fmt: [*c]const u8, args: va_list) bool; +pub extern fn igTreePush_Str(str_id: [*c]const u8) void; +pub extern fn igTreePush_Ptr(ptr_id: ?*const anyopaque) void; +pub extern fn igTreePop() void; +pub extern fn igGetTreeNodeToLabelSpacing() f32; +pub extern fn igCollapsingHeader_TreeNodeFlags(label: [*c]const u8, flags: ImGuiTreeNodeFlags) bool; +pub extern fn igCollapsingHeader_BoolPtr(label: [*c]const u8, p_visible: [*c]bool, flags: ImGuiTreeNodeFlags) bool; +pub extern fn igSetNextItemOpen(is_open: bool, cond: ImGuiCond) void; +pub extern fn igSelectable_Bool(label: [*c]const u8, selected: bool, flags: ImGuiSelectableFlags, size: ImVec2) bool; +pub extern fn igSelectable_BoolPtr(label: [*c]const u8, p_selected: [*c]bool, flags: ImGuiSelectableFlags, size: ImVec2) bool; +pub extern fn igBeginListBox(label: [*c]const u8, size: ImVec2) bool; +pub extern fn igEndListBox() void; +pub extern fn igListBox_Str_arr(label: [*c]const u8, current_item: [*c]c_int, items: [*c]const [*c]const u8, items_count: c_int, height_in_items: c_int) bool; +pub extern fn igListBox_FnBoolPtr(label: [*c]const u8, current_item: [*c]c_int, items_getter: ?*const fn (?*anyopaque, c_int, [*c][*c]const u8) callconv(.C) bool, data: ?*anyopaque, items_count: c_int, height_in_items: c_int) bool; +pub extern fn igPlotLines_FloatPtr(label: [*c]const u8, values: [*c]const f32, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: ImVec2, stride: c_int) void; +pub extern fn igPlotLines_FnFloatPtr(label: [*c]const u8, values_getter: ?*const fn (?*anyopaque, c_int) callconv(.C) f32, data: ?*anyopaque, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: ImVec2) void; +pub extern fn igPlotHistogram_FloatPtr(label: [*c]const u8, values: [*c]const f32, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: ImVec2, stride: c_int) void; +pub extern fn igPlotHistogram_FnFloatPtr(label: [*c]const u8, values_getter: ?*const fn (?*anyopaque, c_int) callconv(.C) f32, data: ?*anyopaque, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: ImVec2) void; +pub extern fn igValue_Bool(prefix: [*c]const u8, b: bool) void; +pub extern fn igValue_Int(prefix: [*c]const u8, v: c_int) void; +pub extern fn igValue_Uint(prefix: [*c]const u8, v: c_uint) void; +pub extern fn igValue_Float(prefix: [*c]const u8, v: f32, float_format: [*c]const u8) void; +pub extern fn igBeginMenuBar() bool; +pub extern fn igEndMenuBar() void; +pub extern fn igBeginMainMenuBar() bool; +pub extern fn igEndMainMenuBar() void; +pub extern fn igBeginMenu(label: [*c]const u8, enabled: bool) bool; +pub extern fn igEndMenu() void; +pub extern fn igMenuItem_Bool(label: [*c]const u8, shortcut: [*c]const u8, selected: bool, enabled: bool) bool; +pub extern fn igMenuItem_BoolPtr(label: [*c]const u8, shortcut: [*c]const u8, p_selected: [*c]bool, enabled: bool) bool; +pub extern fn igBeginTooltip() void; +pub extern fn igEndTooltip() void; +pub extern fn igSetTooltip(fmt: [*c]const u8, ...) void; +pub extern fn igSetTooltipV(fmt: [*c]const u8, args: va_list) void; +pub extern fn igBeginPopup(str_id: [*c]const u8, flags: ImGuiWindowFlags) bool; +pub extern fn igBeginPopupModal(name: [*c]const u8, p_open: [*c]bool, flags: ImGuiWindowFlags) bool; +pub extern fn igEndPopup() void; +pub extern fn igOpenPopup_Str(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) void; +pub extern fn igOpenPopup_ID(id: ImGuiID, popup_flags: ImGuiPopupFlags) void; +pub extern fn igOpenPopupOnItemClick(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) void; +pub extern fn igCloseCurrentPopup() void; +pub extern fn igBeginPopupContextItem(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) bool; +pub extern fn igBeginPopupContextWindow(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) bool; +pub extern fn igBeginPopupContextVoid(str_id: [*c]const u8, popup_flags: ImGuiPopupFlags) bool; +pub extern fn igIsPopupOpen_Str(str_id: [*c]const u8, flags: ImGuiPopupFlags) bool; +pub extern fn igBeginTable(str_id: [*c]const u8, column: c_int, flags: ImGuiTableFlags, outer_size: ImVec2, inner_width: f32) bool; +pub extern fn igEndTable() void; +pub extern fn igTableNextRow(row_flags: ImGuiTableRowFlags, min_row_height: f32) void; +pub extern fn igTableNextColumn() bool; +pub extern fn igTableSetColumnIndex(column_n: c_int) bool; +pub extern fn igTableSetupColumn(label: [*c]const u8, flags: ImGuiTableColumnFlags, init_width_or_weight: f32, user_id: ImGuiID) void; +pub extern fn igTableSetupScrollFreeze(cols: c_int, rows: c_int) void; +pub extern fn igTableHeadersRow() void; +pub extern fn igTableHeader(label: [*c]const u8) void; +pub extern fn igTableGetSortSpecs() [*c]ImGuiTableSortSpecs; +pub extern fn igTableGetColumnCount() c_int; +pub extern fn igTableGetColumnIndex() c_int; +pub extern fn igTableGetRowIndex() c_int; +pub extern fn igTableGetColumnName_Int(column_n: c_int) [*c]const u8; +pub extern fn igTableGetColumnFlags(column_n: c_int) ImGuiTableColumnFlags; +pub extern fn igTableSetColumnEnabled(column_n: c_int, v: bool) void; +pub extern fn igTableSetBgColor(target: ImGuiTableBgTarget, color: ImU32, column_n: c_int) void; +pub extern fn igColumns(count: c_int, id: [*c]const u8, border: bool) void; +pub extern fn igNextColumn() void; +pub extern fn igGetColumnIndex() c_int; +pub extern fn igGetColumnWidth(column_index: c_int) f32; +pub extern fn igSetColumnWidth(column_index: c_int, width: f32) void; +pub extern fn igGetColumnOffset(column_index: c_int) f32; +pub extern fn igSetColumnOffset(column_index: c_int, offset_x: f32) void; +pub extern fn igGetColumnsCount() c_int; +pub extern fn igBeginTabBar(str_id: [*c]const u8, flags: ImGuiTabBarFlags) bool; +pub extern fn igEndTabBar() void; +pub extern fn igBeginTabItem(label: [*c]const u8, p_open: [*c]bool, flags: ImGuiTabItemFlags) bool; +pub extern fn igEndTabItem() void; +pub extern fn igTabItemButton(label: [*c]const u8, flags: ImGuiTabItemFlags) bool; +pub extern fn igSetTabItemClosed(tab_or_docked_window_label: [*c]const u8) void; +pub extern fn igDockSpace(id: ImGuiID, size: ImVec2, flags: ImGuiDockNodeFlags, window_class: [*c]const ImGuiWindowClass) ImGuiID; +pub extern fn igDockSpaceOverViewport(viewport: [*c]const ImGuiViewport, flags: ImGuiDockNodeFlags, window_class: [*c]const ImGuiWindowClass) ImGuiID; +pub extern fn igSetNextWindowDockID(dock_id: ImGuiID, cond: ImGuiCond) void; +pub extern fn igSetNextWindowClass(window_class: [*c]const ImGuiWindowClass) void; +pub extern fn igGetWindowDockID() ImGuiID; +pub extern fn igIsWindowDocked() bool; +pub extern fn igLogToTTY(auto_open_depth: c_int) void; +pub extern fn igLogToFile(auto_open_depth: c_int, filename: [*c]const u8) void; +pub extern fn igLogToClipboard(auto_open_depth: c_int) void; +pub extern fn igLogFinish() void; +pub extern fn igLogButtons() void; +pub extern fn igLogTextV(fmt: [*c]const u8, args: va_list) void; +pub extern fn igBeginDragDropSource(flags: ImGuiDragDropFlags) bool; +pub extern fn igSetDragDropPayload(@"type": [*c]const u8, data: ?*const anyopaque, sz: usize, cond: ImGuiCond) bool; +pub extern fn igEndDragDropSource() void; +pub extern fn igBeginDragDropTarget() bool; +pub extern fn igAcceptDragDropPayload(@"type": [*c]const u8, flags: ImGuiDragDropFlags) [*c]const ImGuiPayload; +pub extern fn igEndDragDropTarget() void; +pub extern fn igGetDragDropPayload() [*c]const ImGuiPayload; +pub extern fn igBeginDisabled(disabled: bool) void; +pub extern fn igEndDisabled() void; +pub extern fn igPushClipRect(clip_rect_min: ImVec2, clip_rect_max: ImVec2, intersect_with_current_clip_rect: bool) void; +pub extern fn igPopClipRect() void; +pub extern fn igSetItemDefaultFocus() void; +pub extern fn igSetKeyboardFocusHere(offset: c_int) void; +pub extern fn igIsItemHovered(flags: ImGuiHoveredFlags) bool; +pub extern fn igIsItemActive() bool; +pub extern fn igIsItemFocused() bool; +pub extern fn igIsItemClicked(mouse_button: ImGuiMouseButton) bool; +pub extern fn igIsItemVisible() bool; +pub extern fn igIsItemEdited() bool; +pub extern fn igIsItemActivated() bool; +pub extern fn igIsItemDeactivated() bool; +pub extern fn igIsItemDeactivatedAfterEdit() bool; +pub extern fn igIsItemToggledOpen() bool; +pub extern fn igIsAnyItemHovered() bool; +pub extern fn igIsAnyItemActive() bool; +pub extern fn igIsAnyItemFocused() bool; +pub extern fn igGetItemRectMin(pOut: [*c]ImVec2) void; +pub extern fn igGetItemRectMax(pOut: [*c]ImVec2) void; +pub extern fn igGetItemRectSize(pOut: [*c]ImVec2) void; +pub extern fn igSetItemAllowOverlap() void; +pub extern fn igGetMainViewport() [*c]ImGuiViewport; +pub extern fn igGetBackgroundDrawList_Nil() [*c]ImDrawList; +pub extern fn igGetForegroundDrawList_Nil() [*c]ImDrawList; +pub extern fn igGetBackgroundDrawList_ViewportPtr(viewport: [*c]ImGuiViewport) [*c]ImDrawList; +pub extern fn igGetForegroundDrawList_ViewportPtr(viewport: [*c]ImGuiViewport) [*c]ImDrawList; +pub extern fn igIsRectVisible_Nil(size: ImVec2) bool; +pub extern fn igIsRectVisible_Vec2(rect_min: ImVec2, rect_max: ImVec2) bool; +pub extern fn igGetTime() f64; +pub extern fn igGetFrameCount() c_int; +pub extern fn igGetDrawListSharedData() [*c]ImDrawListSharedData; +pub extern fn igGetStyleColorName(idx: ImGuiCol) [*c]const u8; +pub extern fn igSetStateStorage(storage: [*c]ImGuiStorage) void; +pub extern fn igGetStateStorage() [*c]ImGuiStorage; +pub extern fn igBeginChildFrame(id: ImGuiID, size: ImVec2, flags: ImGuiWindowFlags) bool; +pub extern fn igEndChildFrame() void; +pub extern fn igCalcTextSize(pOut: [*c]ImVec2, text: [*c]const u8, text_end: [*c]const u8, hide_text_after_double_hash: bool, wrap_width: f32) void; +pub extern fn igColorConvertU32ToFloat4(pOut: [*c]ImVec4, in: ImU32) void; +pub extern fn igColorConvertFloat4ToU32(in: ImVec4) ImU32; +pub extern fn igColorConvertRGBtoHSV(r: f32, g: f32, b: f32, out_h: [*c]f32, out_s: [*c]f32, out_v: [*c]f32) void; +pub extern fn igColorConvertHSVtoRGB(h: f32, s: f32, v: f32, out_r: [*c]f32, out_g: [*c]f32, out_b: [*c]f32) void; +pub extern fn igIsKeyDown(key: ImGuiKey) bool; +pub extern fn igIsKeyPressed(key: ImGuiKey, repeat: bool) bool; +pub extern fn igIsKeyReleased(key: ImGuiKey) bool; +pub extern fn igGetKeyPressedAmount(key: ImGuiKey, repeat_delay: f32, rate: f32) c_int; +pub extern fn igGetKeyName(key: ImGuiKey) [*c]const u8; +pub extern fn igSetNextFrameWantCaptureKeyboard(want_capture_keyboard: bool) void; +pub extern fn igIsMouseDown(button: ImGuiMouseButton) bool; +pub extern fn igIsMouseClicked(button: ImGuiMouseButton, repeat: bool) bool; +pub extern fn igIsMouseReleased(button: ImGuiMouseButton) bool; +pub extern fn igIsMouseDoubleClicked(button: ImGuiMouseButton) bool; +pub extern fn igGetMouseClickedCount(button: ImGuiMouseButton) c_int; +pub extern fn igIsMouseHoveringRect(r_min: ImVec2, r_max: ImVec2, clip: bool) bool; +pub extern fn igIsMousePosValid(mouse_pos: [*c]const ImVec2) bool; +pub extern fn igIsAnyMouseDown() bool; +pub extern fn igGetMousePos(pOut: [*c]ImVec2) void; +pub extern fn igGetMousePosOnOpeningCurrentPopup(pOut: [*c]ImVec2) void; +pub extern fn igIsMouseDragging(button: ImGuiMouseButton, lock_threshold: f32) bool; +pub extern fn igGetMouseDragDelta(pOut: [*c]ImVec2, button: ImGuiMouseButton, lock_threshold: f32) void; +pub extern fn igResetMouseDragDelta(button: ImGuiMouseButton) void; +pub extern fn igGetMouseCursor() ImGuiMouseCursor; +pub extern fn igSetMouseCursor(cursor_type: ImGuiMouseCursor) void; +pub extern fn igSetNextFrameWantCaptureMouse(want_capture_mouse: bool) void; +pub extern fn igGetClipboardText() [*c]const u8; +pub extern fn igSetClipboardText(text: [*c]const u8) void; +pub extern fn igLoadIniSettingsFromDisk(ini_filename: [*c]const u8) void; +pub extern fn igLoadIniSettingsFromMemory(ini_data: [*c]const u8, ini_size: usize) void; +pub extern fn igSaveIniSettingsToDisk(ini_filename: [*c]const u8) void; +pub extern fn igSaveIniSettingsToMemory(out_ini_size: [*c]usize) [*c]const u8; +pub extern fn igDebugTextEncoding(text: [*c]const u8) void; +pub extern fn igDebugCheckVersionAndDataLayout(version_str: [*c]const u8, sz_io: usize, sz_style: usize, sz_vec2: usize, sz_vec4: usize, sz_drawvert: usize, sz_drawidx: usize) bool; +pub extern fn igSetAllocatorFunctions(alloc_func: ImGuiMemAllocFunc, free_func: ImGuiMemFreeFunc, user_data: ?*anyopaque) void; +pub extern fn igGetAllocatorFunctions(p_alloc_func: [*c]ImGuiMemAllocFunc, p_free_func: [*c]ImGuiMemFreeFunc, p_user_data: [*c]?*anyopaque) void; +pub extern fn igMemAlloc(size: usize) ?*anyopaque; +pub extern fn igMemFree(ptr: ?*anyopaque) void; +pub extern fn igGetPlatformIO() [*c]ImGuiPlatformIO; +pub extern fn igUpdatePlatformWindows() void; +pub extern fn igRenderPlatformWindowsDefault(platform_render_arg: ?*anyopaque, renderer_render_arg: ?*anyopaque) void; +pub extern fn igDestroyPlatformWindows() void; +pub extern fn igFindViewportByID(id: ImGuiID) [*c]ImGuiViewport; +pub extern fn igFindViewportByPlatformHandle(platform_handle: ?*anyopaque) [*c]ImGuiViewport; +pub extern fn ImGuiStyle_ImGuiStyle() [*c]ImGuiStyle; +pub extern fn ImGuiStyle_destroy(self: [*c]ImGuiStyle) void; +pub extern fn ImGuiStyle_ScaleAllSizes(self: [*c]ImGuiStyle, scale_factor: f32) void; +pub extern fn ImGuiIO_AddKeyEvent(self: [*c]ImGuiIO, key: ImGuiKey, down: bool) void; +pub extern fn ImGuiIO_AddKeyAnalogEvent(self: [*c]ImGuiIO, key: ImGuiKey, down: bool, v: f32) void; +pub extern fn ImGuiIO_AddMousePosEvent(self: [*c]ImGuiIO, x: f32, y: f32) void; +pub extern fn ImGuiIO_AddMouseButtonEvent(self: [*c]ImGuiIO, button: c_int, down: bool) void; +pub extern fn ImGuiIO_AddMouseWheelEvent(self: [*c]ImGuiIO, wh_x: f32, wh_y: f32) void; +pub extern fn ImGuiIO_AddMouseViewportEvent(self: [*c]ImGuiIO, id: ImGuiID) void; +pub extern fn ImGuiIO_AddFocusEvent(self: [*c]ImGuiIO, focused: bool) void; +pub extern fn ImGuiIO_AddInputCharacter(self: [*c]ImGuiIO, c: c_uint) void; +pub extern fn ImGuiIO_AddInputCharacterUTF16(self: [*c]ImGuiIO, c: ImWchar16) void; +pub extern fn ImGuiIO_AddInputCharactersUTF8(self: [*c]ImGuiIO, str: [*c]const u8) void; +pub extern fn ImGuiIO_SetKeyEventNativeData(self: [*c]ImGuiIO, key: ImGuiKey, native_keycode: c_int, native_scancode: c_int, native_legacy_index: c_int) void; +pub extern fn ImGuiIO_SetAppAcceptingEvents(self: [*c]ImGuiIO, accepting_events: bool) void; +pub extern fn ImGuiIO_ClearInputCharacters(self: [*c]ImGuiIO) void; +pub extern fn ImGuiIO_ClearInputKeys(self: [*c]ImGuiIO) void; +pub extern fn ImGuiIO_ImGuiIO() [*c]ImGuiIO; +pub extern fn ImGuiIO_destroy(self: [*c]ImGuiIO) void; +pub extern fn ImGuiInputTextCallbackData_ImGuiInputTextCallbackData() [*c]ImGuiInputTextCallbackData; +pub extern fn ImGuiInputTextCallbackData_destroy(self: [*c]ImGuiInputTextCallbackData) void; +pub extern fn ImGuiInputTextCallbackData_DeleteChars(self: [*c]ImGuiInputTextCallbackData, pos: c_int, bytes_count: c_int) void; +pub extern fn ImGuiInputTextCallbackData_InsertChars(self: [*c]ImGuiInputTextCallbackData, pos: c_int, text: [*c]const u8, text_end: [*c]const u8) void; +pub extern fn ImGuiInputTextCallbackData_SelectAll(self: [*c]ImGuiInputTextCallbackData) void; +pub extern fn ImGuiInputTextCallbackData_ClearSelection(self: [*c]ImGuiInputTextCallbackData) void; +pub extern fn ImGuiInputTextCallbackData_HasSelection(self: [*c]ImGuiInputTextCallbackData) bool; +pub extern fn ImGuiWindowClass_ImGuiWindowClass() [*c]ImGuiWindowClass; +pub extern fn ImGuiWindowClass_destroy(self: [*c]ImGuiWindowClass) void; +pub extern fn ImGuiPayload_ImGuiPayload() [*c]ImGuiPayload; +pub extern fn ImGuiPayload_destroy(self: [*c]ImGuiPayload) void; +pub extern fn ImGuiPayload_Clear(self: [*c]ImGuiPayload) void; +pub extern fn ImGuiPayload_IsDataType(self: [*c]ImGuiPayload, @"type": [*c]const u8) bool; +pub extern fn ImGuiPayload_IsPreview(self: [*c]ImGuiPayload) bool; +pub extern fn ImGuiPayload_IsDelivery(self: [*c]ImGuiPayload) bool; +pub extern fn ImGuiTableColumnSortSpecs_ImGuiTableColumnSortSpecs() ?*ImGuiTableColumnSortSpecs; +pub extern fn ImGuiTableColumnSortSpecs_destroy(self: ?*ImGuiTableColumnSortSpecs) void; +pub extern fn ImGuiTableSortSpecs_ImGuiTableSortSpecs() [*c]ImGuiTableSortSpecs; +pub extern fn ImGuiTableSortSpecs_destroy(self: [*c]ImGuiTableSortSpecs) void; +pub extern fn ImGuiOnceUponAFrame_ImGuiOnceUponAFrame() [*c]ImGuiOnceUponAFrame; +pub extern fn ImGuiOnceUponAFrame_destroy(self: [*c]ImGuiOnceUponAFrame) void; +pub extern fn ImGuiTextFilter_ImGuiTextFilter(default_filter: [*c]const u8) [*c]ImGuiTextFilter; +pub extern fn ImGuiTextFilter_destroy(self: [*c]ImGuiTextFilter) void; +pub extern fn ImGuiTextFilter_Draw(self: [*c]ImGuiTextFilter, label: [*c]const u8, width: f32) bool; +pub extern fn ImGuiTextFilter_PassFilter(self: [*c]ImGuiTextFilter, text: [*c]const u8, text_end: [*c]const u8) bool; +pub extern fn ImGuiTextFilter_Build(self: [*c]ImGuiTextFilter) void; +pub extern fn ImGuiTextFilter_Clear(self: [*c]ImGuiTextFilter) void; +pub extern fn ImGuiTextFilter_IsActive(self: [*c]ImGuiTextFilter) bool; +pub extern fn ImGuiTextRange_ImGuiTextRange_Nil() [*c]ImGuiTextRange; +pub extern fn ImGuiTextRange_destroy(self: [*c]ImGuiTextRange) void; +pub extern fn ImGuiTextRange_ImGuiTextRange_Str(_b: [*c]const u8, _e: [*c]const u8) [*c]ImGuiTextRange; +pub extern fn ImGuiTextRange_empty(self: [*c]ImGuiTextRange) bool; +pub extern fn ImGuiTextRange_split(self: [*c]ImGuiTextRange, separator: u8, out: [*c]ImVector_ImGuiTextRange) void; +pub extern fn ImGuiTextBuffer_ImGuiTextBuffer() [*c]ImGuiTextBuffer; +pub extern fn ImGuiTextBuffer_destroy(self: [*c]ImGuiTextBuffer) void; +pub extern fn ImGuiTextBuffer_begin(self: [*c]ImGuiTextBuffer) [*c]const u8; +pub extern fn ImGuiTextBuffer_end(self: [*c]ImGuiTextBuffer) [*c]const u8; +pub extern fn ImGuiTextBuffer_size(self: [*c]ImGuiTextBuffer) c_int; +pub extern fn ImGuiTextBuffer_empty(self: [*c]ImGuiTextBuffer) bool; +pub extern fn ImGuiTextBuffer_clear(self: [*c]ImGuiTextBuffer) void; +pub extern fn ImGuiTextBuffer_reserve(self: [*c]ImGuiTextBuffer, capacity: c_int) void; +pub extern fn ImGuiTextBuffer_c_str(self: [*c]ImGuiTextBuffer) [*c]const u8; +pub extern fn ImGuiTextBuffer_append(self: [*c]ImGuiTextBuffer, str: [*c]const u8, str_end: [*c]const u8) void; +pub extern fn ImGuiTextBuffer_appendfv(self: [*c]ImGuiTextBuffer, fmt: [*c]const u8, args: va_list) void; +pub extern fn ImGuiStoragePair_ImGuiStoragePair_Int(_key: ImGuiID, _val_i: c_int) [*c]ImGuiStoragePair; +pub extern fn ImGuiStoragePair_destroy(self: [*c]ImGuiStoragePair) void; +pub extern fn ImGuiStoragePair_ImGuiStoragePair_Float(_key: ImGuiID, _val_f: f32) [*c]ImGuiStoragePair; +pub extern fn ImGuiStoragePair_ImGuiStoragePair_Ptr(_key: ImGuiID, _val_p: ?*anyopaque) [*c]ImGuiStoragePair; +pub extern fn ImGuiStorage_Clear(self: [*c]ImGuiStorage) void; +pub extern fn ImGuiStorage_GetInt(self: [*c]ImGuiStorage, key: ImGuiID, default_val: c_int) c_int; +pub extern fn ImGuiStorage_SetInt(self: [*c]ImGuiStorage, key: ImGuiID, val: c_int) void; +pub extern fn ImGuiStorage_GetBool(self: [*c]ImGuiStorage, key: ImGuiID, default_val: bool) bool; +pub extern fn ImGuiStorage_SetBool(self: [*c]ImGuiStorage, key: ImGuiID, val: bool) void; +pub extern fn ImGuiStorage_GetFloat(self: [*c]ImGuiStorage, key: ImGuiID, default_val: f32) f32; +pub extern fn ImGuiStorage_SetFloat(self: [*c]ImGuiStorage, key: ImGuiID, val: f32) void; +pub extern fn ImGuiStorage_GetVoidPtr(self: [*c]ImGuiStorage, key: ImGuiID) ?*anyopaque; +pub extern fn ImGuiStorage_SetVoidPtr(self: [*c]ImGuiStorage, key: ImGuiID, val: ?*anyopaque) void; +pub extern fn ImGuiStorage_GetIntRef(self: [*c]ImGuiStorage, key: ImGuiID, default_val: c_int) [*c]c_int; +pub extern fn ImGuiStorage_GetBoolRef(self: [*c]ImGuiStorage, key: ImGuiID, default_val: bool) [*c]bool; +pub extern fn ImGuiStorage_GetFloatRef(self: [*c]ImGuiStorage, key: ImGuiID, default_val: f32) [*c]f32; +pub extern fn ImGuiStorage_GetVoidPtrRef(self: [*c]ImGuiStorage, key: ImGuiID, default_val: ?*anyopaque) [*c]?*anyopaque; +pub extern fn ImGuiStorage_SetAllInt(self: [*c]ImGuiStorage, val: c_int) void; +pub extern fn ImGuiStorage_BuildSortByKey(self: [*c]ImGuiStorage) void; +pub extern fn ImGuiListClipper_ImGuiListClipper() [*c]ImGuiListClipper; +pub extern fn ImGuiListClipper_destroy(self: [*c]ImGuiListClipper) void; +pub extern fn ImGuiListClipper_Begin(self: [*c]ImGuiListClipper, items_count: c_int, items_height: f32) void; +pub extern fn ImGuiListClipper_End(self: [*c]ImGuiListClipper) void; +pub extern fn ImGuiListClipper_Step(self: [*c]ImGuiListClipper) bool; +pub extern fn ImGuiListClipper_ForceDisplayRangeByIndices(self: [*c]ImGuiListClipper, item_min: c_int, item_max: c_int) void; +pub extern fn ImColor_ImColor_Nil() [*c]ImColor; +pub extern fn ImColor_destroy(self: [*c]ImColor) void; +pub extern fn ImColor_ImColor_Float(r: f32, g: f32, b: f32, a: f32) [*c]ImColor; +pub extern fn ImColor_ImColor_Vec4(col: ImVec4) [*c]ImColor; +pub extern fn ImColor_ImColor_Int(r: c_int, g: c_int, b: c_int, a: c_int) [*c]ImColor; +pub extern fn ImColor_ImColor_U32(rgba: ImU32) [*c]ImColor; +pub extern fn ImColor_SetHSV(self: [*c]ImColor, h: f32, s: f32, v: f32, a: f32) void; +pub extern fn ImColor_HSV(pOut: [*c]ImColor, h: f32, s: f32, v: f32, a: f32) void; +pub extern fn ImDrawCmd_ImDrawCmd() [*c]ImDrawCmd; +pub extern fn ImDrawCmd_destroy(self: [*c]ImDrawCmd) void; +pub extern fn ImDrawCmd_GetTexID(self: [*c]ImDrawCmd) ImTextureID; +pub extern fn ImDrawListSplitter_ImDrawListSplitter() [*c]ImDrawListSplitter; +pub extern fn ImDrawListSplitter_destroy(self: [*c]ImDrawListSplitter) void; +pub extern fn ImDrawListSplitter_Clear(self: [*c]ImDrawListSplitter) void; +pub extern fn ImDrawListSplitter_ClearFreeMemory(self: [*c]ImDrawListSplitter) void; +pub extern fn ImDrawListSplitter_Split(self: [*c]ImDrawListSplitter, draw_list: [*c]ImDrawList, count: c_int) void; +pub extern fn ImDrawListSplitter_Merge(self: [*c]ImDrawListSplitter, draw_list: [*c]ImDrawList) void; +pub extern fn ImDrawListSplitter_SetCurrentChannel(self: [*c]ImDrawListSplitter, draw_list: [*c]ImDrawList, channel_idx: c_int) void; +pub extern fn ImDrawList_ImDrawList(shared_data: [*c]const ImDrawListSharedData) [*c]ImDrawList; +pub extern fn ImDrawList_destroy(self: [*c]ImDrawList) void; +pub extern fn ImDrawList_PushClipRect(self: [*c]ImDrawList, clip_rect_min: ImVec2, clip_rect_max: ImVec2, intersect_with_current_clip_rect: bool) void; +pub extern fn ImDrawList_PushClipRectFullScreen(self: [*c]ImDrawList) void; +pub extern fn ImDrawList_PopClipRect(self: [*c]ImDrawList) void; +pub extern fn ImDrawList_PushTextureID(self: [*c]ImDrawList, texture_id: ImTextureID) void; +pub extern fn ImDrawList_PopTextureID(self: [*c]ImDrawList) void; +pub extern fn ImDrawList_GetClipRectMin(pOut: [*c]ImVec2, self: [*c]ImDrawList) void; +pub extern fn ImDrawList_GetClipRectMax(pOut: [*c]ImVec2, self: [*c]ImDrawList) void; +pub extern fn ImDrawList_AddLine(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, col: ImU32, thickness: f32) void; +pub extern fn ImDrawList_AddRect(self: [*c]ImDrawList, p_min: ImVec2, p_max: ImVec2, col: ImU32, rounding: f32, flags: ImDrawFlags, thickness: f32) void; +pub extern fn ImDrawList_AddRectFilled(self: [*c]ImDrawList, p_min: ImVec2, p_max: ImVec2, col: ImU32, rounding: f32, flags: ImDrawFlags) void; +pub extern fn ImDrawList_AddRectFilledMultiColor(self: [*c]ImDrawList, p_min: ImVec2, p_max: ImVec2, col_upr_left: ImU32, col_upr_right: ImU32, col_bot_right: ImU32, col_bot_left: ImU32) void; +pub extern fn ImDrawList_AddQuad(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32, thickness: f32) void; +pub extern fn ImDrawList_AddQuadFilled(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32) void; +pub extern fn ImDrawList_AddTriangle(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32, thickness: f32) void; +pub extern fn ImDrawList_AddTriangleFilled(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32) void; +pub extern fn ImDrawList_AddCircle(self: [*c]ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: c_int, thickness: f32) void; +pub extern fn ImDrawList_AddCircleFilled(self: [*c]ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: c_int) void; +pub extern fn ImDrawList_AddNgon(self: [*c]ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: c_int, thickness: f32) void; +pub extern fn ImDrawList_AddNgonFilled(self: [*c]ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: c_int) void; +pub extern fn ImDrawList_AddText_Vec2(self: [*c]ImDrawList, pos: ImVec2, col: ImU32, text_begin: [*c]const u8, text_end: [*c]const u8) void; +pub extern fn ImDrawList_AddText_FontPtr(self: [*c]ImDrawList, font: [*c]const ImFont, font_size: f32, pos: ImVec2, col: ImU32, text_begin: [*c]const u8, text_end: [*c]const u8, wrap_width: f32, cpu_fine_clip_rect: [*c]const ImVec4) void; +pub extern fn ImDrawList_AddPolyline(self: [*c]ImDrawList, points: [*c]const ImVec2, num_points: c_int, col: ImU32, flags: ImDrawFlags, thickness: f32) void; +pub extern fn ImDrawList_AddConvexPolyFilled(self: [*c]ImDrawList, points: [*c]const ImVec2, num_points: c_int, col: ImU32) void; +pub extern fn ImDrawList_AddBezierCubic(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32, thickness: f32, num_segments: c_int) void; +pub extern fn ImDrawList_AddBezierQuadratic(self: [*c]ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32, thickness: f32, num_segments: c_int) void; +pub extern fn ImDrawList_AddImage(self: [*c]ImDrawList, user_texture_id: ImTextureID, p_min: ImVec2, p_max: ImVec2, uv_min: ImVec2, uv_max: ImVec2, col: ImU32) void; +pub extern fn ImDrawList_AddImageQuad(self: [*c]ImDrawList, user_texture_id: ImTextureID, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, uv1: ImVec2, uv2: ImVec2, uv3: ImVec2, uv4: ImVec2, col: ImU32) void; +pub extern fn ImDrawList_AddImageRounded(self: [*c]ImDrawList, user_texture_id: ImTextureID, p_min: ImVec2, p_max: ImVec2, uv_min: ImVec2, uv_max: ImVec2, col: ImU32, rounding: f32, flags: ImDrawFlags) void; +pub extern fn ImDrawList_PathClear(self: [*c]ImDrawList) void; +pub extern fn ImDrawList_PathLineTo(self: [*c]ImDrawList, pos: ImVec2) void; +pub extern fn ImDrawList_PathLineToMergeDuplicate(self: [*c]ImDrawList, pos: ImVec2) void; +pub extern fn ImDrawList_PathFillConvex(self: [*c]ImDrawList, col: ImU32) void; +pub extern fn ImDrawList_PathStroke(self: [*c]ImDrawList, col: ImU32, flags: ImDrawFlags, thickness: f32) void; +pub extern fn ImDrawList_PathArcTo(self: [*c]ImDrawList, center: ImVec2, radius: f32, a_min: f32, a_max: f32, num_segments: c_int) void; +pub extern fn ImDrawList_PathArcToFast(self: [*c]ImDrawList, center: ImVec2, radius: f32, a_min_of_12: c_int, a_max_of_12: c_int) void; +pub extern fn ImDrawList_PathBezierCubicCurveTo(self: [*c]ImDrawList, p2: ImVec2, p3: ImVec2, p4: ImVec2, num_segments: c_int) void; +pub extern fn ImDrawList_PathBezierQuadraticCurveTo(self: [*c]ImDrawList, p2: ImVec2, p3: ImVec2, num_segments: c_int) void; +pub extern fn ImDrawList_PathRect(self: [*c]ImDrawList, rect_min: ImVec2, rect_max: ImVec2, rounding: f32, flags: ImDrawFlags) void; +pub extern fn ImDrawList_AddCallback(self: [*c]ImDrawList, callback: ImDrawCallback, callback_data: ?*anyopaque) void; +pub extern fn ImDrawList_AddDrawCmd(self: [*c]ImDrawList) void; +pub extern fn ImDrawList_CloneOutput(self: [*c]ImDrawList) [*c]ImDrawList; +pub extern fn ImDrawList_ChannelsSplit(self: [*c]ImDrawList, count: c_int) void; +pub extern fn ImDrawList_ChannelsMerge(self: [*c]ImDrawList) void; +pub extern fn ImDrawList_ChannelsSetCurrent(self: [*c]ImDrawList, n: c_int) void; +pub extern fn ImDrawList_PrimReserve(self: [*c]ImDrawList, idx_count: c_int, vtx_count: c_int) void; +pub extern fn ImDrawList_PrimUnreserve(self: [*c]ImDrawList, idx_count: c_int, vtx_count: c_int) void; +pub extern fn ImDrawList_PrimRect(self: [*c]ImDrawList, a: ImVec2, b: ImVec2, col: ImU32) void; +pub extern fn ImDrawList_PrimRectUV(self: [*c]ImDrawList, a: ImVec2, b: ImVec2, uv_a: ImVec2, uv_b: ImVec2, col: ImU32) void; +pub extern fn ImDrawList_PrimQuadUV(self: [*c]ImDrawList, a: ImVec2, b: ImVec2, c: ImVec2, d: ImVec2, uv_a: ImVec2, uv_b: ImVec2, uv_c: ImVec2, uv_d: ImVec2, col: ImU32) void; +pub extern fn ImDrawList_PrimWriteVtx(self: [*c]ImDrawList, pos: ImVec2, uv: ImVec2, col: ImU32) void; +pub extern fn ImDrawList_PrimWriteIdx(self: [*c]ImDrawList, idx: ImDrawIdx) void; +pub extern fn ImDrawList_PrimVtx(self: [*c]ImDrawList, pos: ImVec2, uv: ImVec2, col: ImU32) void; +pub extern fn ImDrawList__ResetForNewFrame(self: [*c]ImDrawList) void; +pub extern fn ImDrawList__ClearFreeMemory(self: [*c]ImDrawList) void; +pub extern fn ImDrawList__PopUnusedDrawCmd(self: [*c]ImDrawList) void; +pub extern fn ImDrawList__TryMergeDrawCmds(self: [*c]ImDrawList) void; +pub extern fn ImDrawList__OnChangedClipRect(self: [*c]ImDrawList) void; +pub extern fn ImDrawList__OnChangedTextureID(self: [*c]ImDrawList) void; +pub extern fn ImDrawList__OnChangedVtxOffset(self: [*c]ImDrawList) void; +pub extern fn ImDrawList__CalcCircleAutoSegmentCount(self: [*c]ImDrawList, radius: f32) c_int; +pub extern fn ImDrawList__PathArcToFastEx(self: [*c]ImDrawList, center: ImVec2, radius: f32, a_min_sample: c_int, a_max_sample: c_int, a_step: c_int) void; +pub extern fn ImDrawList__PathArcToN(self: [*c]ImDrawList, center: ImVec2, radius: f32, a_min: f32, a_max: f32, num_segments: c_int) void; +pub extern fn ImDrawData_ImDrawData() [*c]ImDrawData; +pub extern fn ImDrawData_destroy(self: [*c]ImDrawData) void; +pub extern fn ImDrawData_Clear(self: [*c]ImDrawData) void; +pub extern fn ImDrawData_DeIndexAllBuffers(self: [*c]ImDrawData) void; +pub extern fn ImDrawData_ScaleClipRects(self: [*c]ImDrawData, fb_scale: ImVec2) void; +pub extern fn ImFontConfig_ImFontConfig() [*c]ImFontConfig; +pub extern fn ImFontConfig_destroy(self: [*c]ImFontConfig) void; +pub extern fn ImFontGlyphRangesBuilder_ImFontGlyphRangesBuilder() [*c]ImFontGlyphRangesBuilder; +pub extern fn ImFontGlyphRangesBuilder_destroy(self: [*c]ImFontGlyphRangesBuilder) void; +pub extern fn ImFontGlyphRangesBuilder_Clear(self: [*c]ImFontGlyphRangesBuilder) void; +pub extern fn ImFontGlyphRangesBuilder_GetBit(self: [*c]ImFontGlyphRangesBuilder, n: usize) bool; +pub extern fn ImFontGlyphRangesBuilder_SetBit(self: [*c]ImFontGlyphRangesBuilder, n: usize) void; +pub extern fn ImFontGlyphRangesBuilder_AddChar(self: [*c]ImFontGlyphRangesBuilder, c: ImWchar) void; +pub extern fn ImFontGlyphRangesBuilder_AddText(self: [*c]ImFontGlyphRangesBuilder, text: [*c]const u8, text_end: [*c]const u8) void; +pub extern fn ImFontGlyphRangesBuilder_AddRanges(self: [*c]ImFontGlyphRangesBuilder, ranges: [*c]const ImWchar) void; +pub extern fn ImFontGlyphRangesBuilder_BuildRanges(self: [*c]ImFontGlyphRangesBuilder, out_ranges: [*c]ImVector_ImWchar) void; +pub extern fn ImFontAtlasCustomRect_ImFontAtlasCustomRect() [*c]ImFontAtlasCustomRect; +pub extern fn ImFontAtlasCustomRect_destroy(self: [*c]ImFontAtlasCustomRect) void; +pub extern fn ImFontAtlasCustomRect_IsPacked(self: [*c]ImFontAtlasCustomRect) bool; +pub extern fn ImFontAtlas_ImFontAtlas() [*c]ImFontAtlas; +pub extern fn ImFontAtlas_destroy(self: [*c]ImFontAtlas) void; +pub extern fn ImFontAtlas_AddFont(self: [*c]ImFontAtlas, font_cfg: [*c]const ImFontConfig) [*c]ImFont; +pub extern fn ImFontAtlas_AddFontDefault(self: [*c]ImFontAtlas, font_cfg: [*c]const ImFontConfig) [*c]ImFont; +pub extern fn ImFontAtlas_AddFontFromFileTTF(self: [*c]ImFontAtlas, filename: [*c]const u8, size_pixels: f32, font_cfg: [*c]const ImFontConfig, glyph_ranges: [*c]const ImWchar) [*c]ImFont; +pub extern fn ImFontAtlas_AddFontFromMemoryTTF(self: [*c]ImFontAtlas, font_data: ?*anyopaque, font_size: c_int, size_pixels: f32, font_cfg: [*c]const ImFontConfig, glyph_ranges: [*c]const ImWchar) [*c]ImFont; +pub extern fn ImFontAtlas_AddFontFromMemoryCompressedTTF(self: [*c]ImFontAtlas, compressed_font_data: ?*const anyopaque, compressed_font_size: c_int, size_pixels: f32, font_cfg: [*c]const ImFontConfig, glyph_ranges: [*c]const ImWchar) [*c]ImFont; +pub extern fn ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(self: [*c]ImFontAtlas, compressed_font_data_base85: [*c]const u8, size_pixels: f32, font_cfg: [*c]const ImFontConfig, glyph_ranges: [*c]const ImWchar) [*c]ImFont; +pub extern fn ImFontAtlas_ClearInputData(self: [*c]ImFontAtlas) void; +pub extern fn ImFontAtlas_ClearTexData(self: [*c]ImFontAtlas) void; +pub extern fn ImFontAtlas_ClearFonts(self: [*c]ImFontAtlas) void; +pub extern fn ImFontAtlas_Clear(self: [*c]ImFontAtlas) void; +pub extern fn ImFontAtlas_Build(self: [*c]ImFontAtlas) bool; +pub extern fn ImFontAtlas_GetTexDataAsAlpha8(self: [*c]ImFontAtlas, out_pixels: [*c][*c]u8, out_width: [*c]c_int, out_height: [*c]c_int, out_bytes_per_pixel: [*c]c_int) void; +pub extern fn ImFontAtlas_GetTexDataAsRGBA32(self: [*c]ImFontAtlas, out_pixels: [*c][*c]u8, out_width: [*c]c_int, out_height: [*c]c_int, out_bytes_per_pixel: [*c]c_int) void; +pub extern fn ImFontAtlas_IsBuilt(self: [*c]ImFontAtlas) bool; +pub extern fn ImFontAtlas_SetTexID(self: [*c]ImFontAtlas, id: ImTextureID) void; +pub extern fn ImFontAtlas_GetGlyphRangesDefault(self: [*c]ImFontAtlas) [*c]const ImWchar; +pub extern fn ImFontAtlas_GetGlyphRangesKorean(self: [*c]ImFontAtlas) [*c]const ImWchar; +pub extern fn ImFontAtlas_GetGlyphRangesJapanese(self: [*c]ImFontAtlas) [*c]const ImWchar; +pub extern fn ImFontAtlas_GetGlyphRangesChineseFull(self: [*c]ImFontAtlas) [*c]const ImWchar; +pub extern fn ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(self: [*c]ImFontAtlas) [*c]const ImWchar; +pub extern fn ImFontAtlas_GetGlyphRangesCyrillic(self: [*c]ImFontAtlas) [*c]const ImWchar; +pub extern fn ImFontAtlas_GetGlyphRangesThai(self: [*c]ImFontAtlas) [*c]const ImWchar; +pub extern fn ImFontAtlas_GetGlyphRangesVietnamese(self: [*c]ImFontAtlas) [*c]const ImWchar; +pub extern fn ImFontAtlas_AddCustomRectRegular(self: [*c]ImFontAtlas, width: c_int, height: c_int) c_int; +pub extern fn ImFontAtlas_AddCustomRectFontGlyph(self: [*c]ImFontAtlas, font: [*c]ImFont, id: ImWchar, width: c_int, height: c_int, advance_x: f32, offset: ImVec2) c_int; +pub extern fn ImFontAtlas_GetCustomRectByIndex(self: [*c]ImFontAtlas, index: c_int) [*c]ImFontAtlasCustomRect; +pub extern fn ImFontAtlas_CalcCustomRectUV(self: [*c]ImFontAtlas, rect: [*c]const ImFontAtlasCustomRect, out_uv_min: [*c]ImVec2, out_uv_max: [*c]ImVec2) void; +pub extern fn ImFontAtlas_GetMouseCursorTexData(self: [*c]ImFontAtlas, cursor: ImGuiMouseCursor, out_offset: [*c]ImVec2, out_size: [*c]ImVec2, out_uv_border: [*c]ImVec2, out_uv_fill: [*c]ImVec2) bool; +pub extern fn ImFont_ImFont() [*c]ImFont; +pub extern fn ImFont_destroy(self: [*c]ImFont) void; +pub extern fn ImFont_FindGlyph(self: [*c]ImFont, c: ImWchar) ?*const ImFontGlyph; +pub extern fn ImFont_FindGlyphNoFallback(self: [*c]ImFont, c: ImWchar) ?*const ImFontGlyph; +pub extern fn ImFont_GetCharAdvance(self: [*c]ImFont, c: ImWchar) f32; +pub extern fn ImFont_IsLoaded(self: [*c]ImFont) bool; +pub extern fn ImFont_GetDebugName(self: [*c]ImFont) [*c]const u8; +pub extern fn ImFont_CalcTextSizeA(pOut: [*c]ImVec2, self: [*c]ImFont, size: f32, max_width: f32, wrap_width: f32, text_begin: [*c]const u8, text_end: [*c]const u8, remaining: [*c][*c]const u8) void; +pub extern fn ImFont_CalcWordWrapPositionA(self: [*c]ImFont, scale: f32, text: [*c]const u8, text_end: [*c]const u8, wrap_width: f32) [*c]const u8; +pub extern fn ImFont_RenderChar(self: [*c]ImFont, draw_list: [*c]ImDrawList, size: f32, pos: ImVec2, col: ImU32, c: ImWchar) void; +pub extern fn ImFont_RenderText(self: [*c]ImFont, draw_list: [*c]ImDrawList, size: f32, pos: ImVec2, col: ImU32, clip_rect: ImVec4, text_begin: [*c]const u8, text_end: [*c]const u8, wrap_width: f32, cpu_fine_clip: bool) void; +pub extern fn ImFont_BuildLookupTable(self: [*c]ImFont) void; +pub extern fn ImFont_ClearOutputData(self: [*c]ImFont) void; +pub extern fn ImFont_GrowIndex(self: [*c]ImFont, new_size: c_int) void; +pub extern fn ImFont_AddGlyph(self: [*c]ImFont, src_cfg: [*c]const ImFontConfig, c: ImWchar, x0: f32, y0: f32, x1: f32, y1: f32, @"u0": f32, v0: f32, @"u1": f32, v1: f32, advance_x: f32) void; +pub extern fn ImFont_AddRemapChar(self: [*c]ImFont, dst: ImWchar, src: ImWchar, overwrite_dst: bool) void; +pub extern fn ImFont_SetGlyphVisible(self: [*c]ImFont, c: ImWchar, visible: bool) void; +pub extern fn ImFont_IsGlyphRangeUnused(self: [*c]ImFont, c_begin: c_uint, c_last: c_uint) bool; +pub extern fn ImGuiViewport_ImGuiViewport() [*c]ImGuiViewport; +pub extern fn ImGuiViewport_destroy(self: [*c]ImGuiViewport) void; +pub extern fn ImGuiViewport_GetCenter(pOut: [*c]ImVec2, self: [*c]ImGuiViewport) void; +pub extern fn ImGuiViewport_GetWorkCenter(pOut: [*c]ImVec2, self: [*c]ImGuiViewport) void; +pub extern fn ImGuiPlatformIO_ImGuiPlatformIO() [*c]ImGuiPlatformIO; +pub extern fn ImGuiPlatformIO_destroy(self: [*c]ImGuiPlatformIO) void; +pub extern fn ImGuiPlatformMonitor_ImGuiPlatformMonitor() [*c]ImGuiPlatformMonitor; +pub extern fn ImGuiPlatformMonitor_destroy(self: [*c]ImGuiPlatformMonitor) void; +pub extern fn ImGuiPlatformImeData_ImGuiPlatformImeData() [*c]ImGuiPlatformImeData; +pub extern fn ImGuiPlatformImeData_destroy(self: [*c]ImGuiPlatformImeData) void; +pub extern fn igGetKeyIndex(key: ImGuiKey) c_int; +pub extern fn igImHashData(data: ?*const anyopaque, data_size: usize, seed: ImU32) ImGuiID; +pub extern fn igImHashStr(data: [*c]const u8, data_size: usize, seed: ImU32) ImGuiID; +pub extern fn igImQsort(base: ?*anyopaque, count: usize, size_of_element: usize, compare_func: ?*const fn (?*const anyopaque, ?*const anyopaque) callconv(.C) c_int) void; +pub extern fn igImAlphaBlendColors(col_a: ImU32, col_b: ImU32) ImU32; +pub extern fn igImIsPowerOfTwo_Int(v: c_int) bool; +pub extern fn igImIsPowerOfTwo_U64(v: ImU64) bool; +pub extern fn igImUpperPowerOfTwo(v: c_int) c_int; +pub extern fn igImStricmp(str1: [*c]const u8, str2: [*c]const u8) c_int; +pub extern fn igImStrnicmp(str1: [*c]const u8, str2: [*c]const u8, count: usize) c_int; +pub extern fn igImStrncpy(dst: [*c]u8, src: [*c]const u8, count: usize) void; +pub extern fn igImStrdup(str: [*c]const u8) [*c]u8; +pub extern fn igImStrdupcpy(dst: [*c]u8, p_dst_size: [*c]usize, str: [*c]const u8) [*c]u8; +pub extern fn igImStrchrRange(str_begin: [*c]const u8, str_end: [*c]const u8, c: u8) [*c]const u8; +pub extern fn igImStrlenW(str: [*c]const ImWchar) c_int; +pub extern fn igImStreolRange(str: [*c]const u8, str_end: [*c]const u8) [*c]const u8; +pub extern fn igImStrbolW(buf_mid_line: [*c]const ImWchar, buf_begin: [*c]const ImWchar) [*c]const ImWchar; +pub extern fn igImStristr(haystack: [*c]const u8, haystack_end: [*c]const u8, needle: [*c]const u8, needle_end: [*c]const u8) [*c]const u8; +pub extern fn igImStrTrimBlanks(str: [*c]u8) void; +pub extern fn igImStrSkipBlank(str: [*c]const u8) [*c]const u8; +pub extern fn igImCharIsBlankA(c: u8) bool; +pub extern fn igImCharIsBlankW(c: c_uint) bool; +pub extern fn igImFormatString(buf: [*c]u8, buf_size: usize, fmt: [*c]const u8, ...) c_int; +pub extern fn igImFormatStringV(buf: [*c]u8, buf_size: usize, fmt: [*c]const u8, args: va_list) c_int; +pub extern fn igImFormatStringToTempBuffer(out_buf: [*c][*c]const u8, out_buf_end: [*c][*c]const u8, fmt: [*c]const u8, ...) void; +pub extern fn igImFormatStringToTempBufferV(out_buf: [*c][*c]const u8, out_buf_end: [*c][*c]const u8, fmt: [*c]const u8, args: va_list) void; +pub extern fn igImParseFormatFindStart(format: [*c]const u8) [*c]const u8; +pub extern fn igImParseFormatFindEnd(format: [*c]const u8) [*c]const u8; +pub extern fn igImParseFormatTrimDecorations(format: [*c]const u8, buf: [*c]u8, buf_size: usize) [*c]const u8; +pub extern fn igImParseFormatSanitizeForPrinting(fmt_in: [*c]const u8, fmt_out: [*c]u8, fmt_out_size: usize) void; +pub extern fn igImParseFormatSanitizeForScanning(fmt_in: [*c]const u8, fmt_out: [*c]u8, fmt_out_size: usize) [*c]const u8; +pub extern fn igImParseFormatPrecision(format: [*c]const u8, default_value: c_int) c_int; +pub extern fn igImTextCharToUtf8(out_buf: [*c]u8, c: c_uint) [*c]const u8; +pub extern fn igImTextStrToUtf8(out_buf: [*c]u8, out_buf_size: c_int, in_text: [*c]const ImWchar, in_text_end: [*c]const ImWchar) c_int; +pub extern fn igImTextCharFromUtf8(out_char: [*c]c_uint, in_text: [*c]const u8, in_text_end: [*c]const u8) c_int; +pub extern fn igImTextStrFromUtf8(out_buf: [*c]ImWchar, out_buf_size: c_int, in_text: [*c]const u8, in_text_end: [*c]const u8, in_remaining: [*c][*c]const u8) c_int; +pub extern fn igImTextCountCharsFromUtf8(in_text: [*c]const u8, in_text_end: [*c]const u8) c_int; +pub extern fn igImTextCountUtf8BytesFromChar(in_text: [*c]const u8, in_text_end: [*c]const u8) c_int; +pub extern fn igImTextCountUtf8BytesFromStr(in_text: [*c]const ImWchar, in_text_end: [*c]const ImWchar) c_int; +pub extern fn igImFileLoadToMemory(filename: [*c]const u8, mode: [*c]const u8, out_file_size: [*c]usize, padding_bytes: c_int) ?*anyopaque; +pub extern fn igImPow_Float(x: f32, y: f32) f32; +pub extern fn igImPow_double(x: f64, y: f64) f64; +pub extern fn igImLog_Float(x: f32) f32; +pub extern fn igImLog_double(x: f64) f64; +pub extern fn igImAbs_Int(x: c_int) c_int; +pub extern fn igImAbs_Float(x: f32) f32; +pub extern fn igImAbs_double(x: f64) f64; +pub extern fn igImSign_Float(x: f32) f32; +pub extern fn igImSign_double(x: f64) f64; +pub extern fn igImRsqrt_Float(x: f32) f32; +pub extern fn igImRsqrt_double(x: f64) f64; +pub extern fn igImMin(pOut: [*c]ImVec2, lhs: ImVec2, rhs: ImVec2) void; +pub extern fn igImMax(pOut: [*c]ImVec2, lhs: ImVec2, rhs: ImVec2) void; +pub extern fn igImClamp(pOut: [*c]ImVec2, v: ImVec2, mn: ImVec2, mx: ImVec2) void; +pub extern fn igImLerp_Vec2Float(pOut: [*c]ImVec2, a: ImVec2, b: ImVec2, t: f32) void; +pub extern fn igImLerp_Vec2Vec2(pOut: [*c]ImVec2, a: ImVec2, b: ImVec2, t: ImVec2) void; +pub extern fn igImLerp_Vec4(pOut: [*c]ImVec4, a: ImVec4, b: ImVec4, t: f32) void; +pub extern fn igImSaturate(f: f32) f32; +pub extern fn igImLengthSqr_Vec2(lhs: ImVec2) f32; +pub extern fn igImLengthSqr_Vec4(lhs: ImVec4) f32; +pub extern fn igImInvLength(lhs: ImVec2, fail_value: f32) f32; +pub extern fn igImFloor_Float(f: f32) f32; +pub extern fn igImFloorSigned_Float(f: f32) f32; +pub extern fn igImFloor_Vec2(pOut: [*c]ImVec2, v: ImVec2) void; +pub extern fn igImFloorSigned_Vec2(pOut: [*c]ImVec2, v: ImVec2) void; +pub extern fn igImModPositive(a: c_int, b: c_int) c_int; +pub extern fn igImDot(a: ImVec2, b: ImVec2) f32; +pub extern fn igImRotate(pOut: [*c]ImVec2, v: ImVec2, cos_a: f32, sin_a: f32) void; +pub extern fn igImLinearSweep(current: f32, target: f32, speed: f32) f32; +pub extern fn igImMul(pOut: [*c]ImVec2, lhs: ImVec2, rhs: ImVec2) void; +pub extern fn igImIsFloatAboveGuaranteedIntegerPrecision(f: f32) bool; +pub extern fn igImBezierCubicCalc(pOut: [*c]ImVec2, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, t: f32) void; +pub extern fn igImBezierCubicClosestPoint(pOut: [*c]ImVec2, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, p: ImVec2, num_segments: c_int) void; +pub extern fn igImBezierCubicClosestPointCasteljau(pOut: [*c]ImVec2, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, p: ImVec2, tess_tol: f32) void; +pub extern fn igImBezierQuadraticCalc(pOut: [*c]ImVec2, p1: ImVec2, p2: ImVec2, p3: ImVec2, t: f32) void; +pub extern fn igImLineClosestPoint(pOut: [*c]ImVec2, a: ImVec2, b: ImVec2, p: ImVec2) void; +pub extern fn igImTriangleContainsPoint(a: ImVec2, b: ImVec2, c: ImVec2, p: ImVec2) bool; +pub extern fn igImTriangleClosestPoint(pOut: [*c]ImVec2, a: ImVec2, b: ImVec2, c: ImVec2, p: ImVec2) void; +pub extern fn igImTriangleBarycentricCoords(a: ImVec2, b: ImVec2, c: ImVec2, p: ImVec2, out_u: [*c]f32, out_v: [*c]f32, out_w: [*c]f32) void; +pub extern fn igImTriangleArea(a: ImVec2, b: ImVec2, c: ImVec2) f32; +pub extern fn igImGetDirQuadrantFromDelta(dx: f32, dy: f32) ImGuiDir; +pub extern fn ImVec1_ImVec1_Nil() [*c]ImVec1; +pub extern fn ImVec1_destroy(self: [*c]ImVec1) void; +pub extern fn ImVec1_ImVec1_Float(_x: f32) [*c]ImVec1; +pub extern fn ImVec2ih_ImVec2ih_Nil() [*c]ImVec2ih; +pub extern fn ImVec2ih_destroy(self: [*c]ImVec2ih) void; +pub extern fn ImVec2ih_ImVec2ih_short(_x: c_short, _y: c_short) [*c]ImVec2ih; +pub extern fn ImVec2ih_ImVec2ih_Vec2(rhs: ImVec2) [*c]ImVec2ih; +pub extern fn ImRect_ImRect_Nil() [*c]ImRect; +pub extern fn ImRect_destroy(self: [*c]ImRect) void; +pub extern fn ImRect_ImRect_Vec2(min: ImVec2, max: ImVec2) [*c]ImRect; +pub extern fn ImRect_ImRect_Vec4(v: ImVec4) [*c]ImRect; +pub extern fn ImRect_ImRect_Float(x1: f32, y1: f32, x2: f32, y2: f32) [*c]ImRect; +pub extern fn ImRect_GetCenter(pOut: [*c]ImVec2, self: [*c]ImRect) void; +pub extern fn ImRect_GetSize(pOut: [*c]ImVec2, self: [*c]ImRect) void; +pub extern fn ImRect_GetWidth(self: [*c]ImRect) f32; +pub extern fn ImRect_GetHeight(self: [*c]ImRect) f32; +pub extern fn ImRect_GetArea(self: [*c]ImRect) f32; +pub extern fn ImRect_GetTL(pOut: [*c]ImVec2, self: [*c]ImRect) void; +pub extern fn ImRect_GetTR(pOut: [*c]ImVec2, self: [*c]ImRect) void; +pub extern fn ImRect_GetBL(pOut: [*c]ImVec2, self: [*c]ImRect) void; +pub extern fn ImRect_GetBR(pOut: [*c]ImVec2, self: [*c]ImRect) void; +pub extern fn ImRect_Contains_Vec2(self: [*c]ImRect, p: ImVec2) bool; +pub extern fn ImRect_Contains_Rect(self: [*c]ImRect, r: ImRect) bool; +pub extern fn ImRect_Overlaps(self: [*c]ImRect, r: ImRect) bool; +pub extern fn ImRect_Add_Vec2(self: [*c]ImRect, p: ImVec2) void; +pub extern fn ImRect_Add_Rect(self: [*c]ImRect, r: ImRect) void; +pub extern fn ImRect_Expand_Float(self: [*c]ImRect, amount: f32) void; +pub extern fn ImRect_Expand_Vec2(self: [*c]ImRect, amount: ImVec2) void; +pub extern fn ImRect_Translate(self: [*c]ImRect, d: ImVec2) void; +pub extern fn ImRect_TranslateX(self: [*c]ImRect, dx: f32) void; +pub extern fn ImRect_TranslateY(self: [*c]ImRect, dy: f32) void; +pub extern fn ImRect_ClipWith(self: [*c]ImRect, r: ImRect) void; +pub extern fn ImRect_ClipWithFull(self: [*c]ImRect, r: ImRect) void; +pub extern fn ImRect_Floor(self: [*c]ImRect) void; +pub extern fn ImRect_IsInverted(self: [*c]ImRect) bool; +pub extern fn ImRect_ToVec4(pOut: [*c]ImVec4, self: [*c]ImRect) void; +pub extern fn igImBitArrayTestBit(arr: [*c]const ImU32, n: c_int) bool; +pub extern fn igImBitArrayClearBit(arr: [*c]ImU32, n: c_int) void; +pub extern fn igImBitArraySetBit(arr: [*c]ImU32, n: c_int) void; +pub extern fn igImBitArraySetBitRange(arr: [*c]ImU32, n: c_int, n2: c_int) void; +pub extern fn ImBitVector_Create(self: [*c]ImBitVector, sz: c_int) void; +pub extern fn ImBitVector_Clear(self: [*c]ImBitVector) void; +pub extern fn ImBitVector_TestBit(self: [*c]ImBitVector, n: c_int) bool; +pub extern fn ImBitVector_SetBit(self: [*c]ImBitVector, n: c_int) void; +pub extern fn ImBitVector_ClearBit(self: [*c]ImBitVector, n: c_int) void; +pub extern fn ImDrawListSharedData_ImDrawListSharedData() [*c]ImDrawListSharedData; +pub extern fn ImDrawListSharedData_destroy(self: [*c]ImDrawListSharedData) void; +pub extern fn ImDrawListSharedData_SetCircleTessellationMaxError(self: [*c]ImDrawListSharedData, max_error: f32) void; +pub extern fn ImDrawDataBuilder_Clear(self: [*c]ImDrawDataBuilder) void; +pub extern fn ImDrawDataBuilder_ClearFreeMemory(self: [*c]ImDrawDataBuilder) void; +pub extern fn ImDrawDataBuilder_GetDrawListCount(self: [*c]ImDrawDataBuilder) c_int; +pub extern fn ImDrawDataBuilder_FlattenIntoSingleLayer(self: [*c]ImDrawDataBuilder) void; +pub extern fn ImGuiStyleMod_ImGuiStyleMod_Int(idx: ImGuiStyleVar, v: c_int) [*c]ImGuiStyleMod; +pub extern fn ImGuiStyleMod_destroy(self: [*c]ImGuiStyleMod) void; +pub extern fn ImGuiStyleMod_ImGuiStyleMod_Float(idx: ImGuiStyleVar, v: f32) [*c]ImGuiStyleMod; +pub extern fn ImGuiStyleMod_ImGuiStyleMod_Vec2(idx: ImGuiStyleVar, v: ImVec2) [*c]ImGuiStyleMod; +pub extern fn ImGuiComboPreviewData_ImGuiComboPreviewData() [*c]ImGuiComboPreviewData; +pub extern fn ImGuiComboPreviewData_destroy(self: [*c]ImGuiComboPreviewData) void; +pub extern fn ImGuiMenuColumns_ImGuiMenuColumns() [*c]ImGuiMenuColumns; +pub extern fn ImGuiMenuColumns_destroy(self: [*c]ImGuiMenuColumns) void; +pub extern fn ImGuiMenuColumns_Update(self: [*c]ImGuiMenuColumns, spacing: f32, window_reappearing: bool) void; +pub extern fn ImGuiMenuColumns_DeclColumns(self: [*c]ImGuiMenuColumns, w_icon: f32, w_label: f32, w_shortcut: f32, w_mark: f32) f32; +pub extern fn ImGuiMenuColumns_CalcNextTotalWidth(self: [*c]ImGuiMenuColumns, update_offsets: bool) void; +pub extern fn ImGuiInputTextState_ImGuiInputTextState() [*c]ImGuiInputTextState; +pub extern fn ImGuiInputTextState_destroy(self: [*c]ImGuiInputTextState) void; +pub extern fn ImGuiInputTextState_ClearText(self: [*c]ImGuiInputTextState) void; +pub extern fn ImGuiInputTextState_ClearFreeMemory(self: [*c]ImGuiInputTextState) void; +pub extern fn ImGuiInputTextState_GetUndoAvailCount(self: [*c]ImGuiInputTextState) c_int; +pub extern fn ImGuiInputTextState_GetRedoAvailCount(self: [*c]ImGuiInputTextState) c_int; +pub extern fn ImGuiInputTextState_OnKeyPressed(self: [*c]ImGuiInputTextState, key: c_int) void; +pub extern fn ImGuiInputTextState_CursorAnimReset(self: [*c]ImGuiInputTextState) void; +pub extern fn ImGuiInputTextState_CursorClamp(self: [*c]ImGuiInputTextState) void; +pub extern fn ImGuiInputTextState_HasSelection(self: [*c]ImGuiInputTextState) bool; +pub extern fn ImGuiInputTextState_ClearSelection(self: [*c]ImGuiInputTextState) void; +pub extern fn ImGuiInputTextState_GetCursorPos(self: [*c]ImGuiInputTextState) c_int; +pub extern fn ImGuiInputTextState_GetSelectionStart(self: [*c]ImGuiInputTextState) c_int; +pub extern fn ImGuiInputTextState_GetSelectionEnd(self: [*c]ImGuiInputTextState) c_int; +pub extern fn ImGuiInputTextState_SelectAll(self: [*c]ImGuiInputTextState) void; +pub extern fn ImGuiPopupData_ImGuiPopupData() [*c]ImGuiPopupData; +pub extern fn ImGuiPopupData_destroy(self: [*c]ImGuiPopupData) void; +pub extern fn ImGuiNextWindowData_ImGuiNextWindowData() [*c]ImGuiNextWindowData; +pub extern fn ImGuiNextWindowData_destroy(self: [*c]ImGuiNextWindowData) void; +pub extern fn ImGuiNextWindowData_ClearFlags(self: [*c]ImGuiNextWindowData) void; +pub extern fn ImGuiNextItemData_ImGuiNextItemData() [*c]ImGuiNextItemData; +pub extern fn ImGuiNextItemData_destroy(self: [*c]ImGuiNextItemData) void; +pub extern fn ImGuiNextItemData_ClearFlags(self: [*c]ImGuiNextItemData) void; +pub extern fn ImGuiLastItemData_ImGuiLastItemData() [*c]ImGuiLastItemData; +pub extern fn ImGuiLastItemData_destroy(self: [*c]ImGuiLastItemData) void; +pub extern fn ImGuiStackSizes_ImGuiStackSizes() [*c]ImGuiStackSizes; +pub extern fn ImGuiStackSizes_destroy(self: [*c]ImGuiStackSizes) void; +pub extern fn ImGuiStackSizes_SetToCurrentState(self: [*c]ImGuiStackSizes) void; +pub extern fn ImGuiStackSizes_CompareWithCurrentState(self: [*c]ImGuiStackSizes) void; +pub extern fn ImGuiPtrOrIndex_ImGuiPtrOrIndex_Ptr(ptr: ?*anyopaque) [*c]ImGuiPtrOrIndex; +pub extern fn ImGuiPtrOrIndex_destroy(self: [*c]ImGuiPtrOrIndex) void; +pub extern fn ImGuiPtrOrIndex_ImGuiPtrOrIndex_Int(index: c_int) [*c]ImGuiPtrOrIndex; +pub extern fn ImGuiInputEvent_ImGuiInputEvent() [*c]ImGuiInputEvent; +pub extern fn ImGuiInputEvent_destroy(self: [*c]ImGuiInputEvent) void; +pub extern fn ImGuiListClipperRange_FromIndices(min: c_int, max: c_int) ImGuiListClipperRange; +pub extern fn ImGuiListClipperRange_FromPositions(y1: f32, y2: f32, off_min: c_int, off_max: c_int) ImGuiListClipperRange; +pub extern fn ImGuiListClipperData_ImGuiListClipperData() [*c]ImGuiListClipperData; +pub extern fn ImGuiListClipperData_destroy(self: [*c]ImGuiListClipperData) void; +pub extern fn ImGuiListClipperData_Reset(self: [*c]ImGuiListClipperData, clipper: [*c]ImGuiListClipper) void; +pub extern fn ImGuiNavItemData_ImGuiNavItemData() [*c]ImGuiNavItemData; +pub extern fn ImGuiNavItemData_destroy(self: [*c]ImGuiNavItemData) void; +pub extern fn ImGuiNavItemData_Clear(self: [*c]ImGuiNavItemData) void; +pub extern fn ImGuiOldColumnData_ImGuiOldColumnData() [*c]ImGuiOldColumnData; +pub extern fn ImGuiOldColumnData_destroy(self: [*c]ImGuiOldColumnData) void; +pub extern fn ImGuiOldColumns_ImGuiOldColumns() [*c]ImGuiOldColumns; +pub extern fn ImGuiOldColumns_destroy(self: [*c]ImGuiOldColumns) void; +pub extern fn ImGuiDockNode_ImGuiDockNode(id: ImGuiID) ?*ImGuiDockNode; +pub extern fn ImGuiDockNode_destroy(self: ?*ImGuiDockNode) void; +pub extern fn ImGuiDockNode_IsRootNode(self: ?*ImGuiDockNode) bool; +pub extern fn ImGuiDockNode_IsDockSpace(self: ?*ImGuiDockNode) bool; +pub extern fn ImGuiDockNode_IsFloatingNode(self: ?*ImGuiDockNode) bool; +pub extern fn ImGuiDockNode_IsCentralNode(self: ?*ImGuiDockNode) bool; +pub extern fn ImGuiDockNode_IsHiddenTabBar(self: ?*ImGuiDockNode) bool; +pub extern fn ImGuiDockNode_IsNoTabBar(self: ?*ImGuiDockNode) bool; +pub extern fn ImGuiDockNode_IsSplitNode(self: ?*ImGuiDockNode) bool; +pub extern fn ImGuiDockNode_IsLeafNode(self: ?*ImGuiDockNode) bool; +pub extern fn ImGuiDockNode_IsEmpty(self: ?*ImGuiDockNode) bool; +pub extern fn ImGuiDockNode_Rect(pOut: [*c]ImRect, self: ?*ImGuiDockNode) void; +pub extern fn ImGuiDockNode_SetLocalFlags(self: ?*ImGuiDockNode, flags: ImGuiDockNodeFlags) void; +pub extern fn ImGuiDockNode_UpdateMergedFlags(self: ?*ImGuiDockNode) void; +pub extern fn ImGuiDockContext_ImGuiDockContext() [*c]ImGuiDockContext; +pub extern fn ImGuiDockContext_destroy(self: [*c]ImGuiDockContext) void; +pub extern fn ImGuiViewportP_ImGuiViewportP() [*c]ImGuiViewportP; +pub extern fn ImGuiViewportP_destroy(self: [*c]ImGuiViewportP) void; +pub extern fn ImGuiViewportP_ClearRequestFlags(self: [*c]ImGuiViewportP) void; +pub extern fn ImGuiViewportP_CalcWorkRectPos(pOut: [*c]ImVec2, self: [*c]ImGuiViewportP, off_min: ImVec2) void; +pub extern fn ImGuiViewportP_CalcWorkRectSize(pOut: [*c]ImVec2, self: [*c]ImGuiViewportP, off_min: ImVec2, off_max: ImVec2) void; +pub extern fn ImGuiViewportP_UpdateWorkRect(self: [*c]ImGuiViewportP) void; +pub extern fn ImGuiViewportP_GetMainRect(pOut: [*c]ImRect, self: [*c]ImGuiViewportP) void; +pub extern fn ImGuiViewportP_GetWorkRect(pOut: [*c]ImRect, self: [*c]ImGuiViewportP) void; +pub extern fn ImGuiViewportP_GetBuildWorkRect(pOut: [*c]ImRect, self: [*c]ImGuiViewportP) void; +pub extern fn ImGuiWindowSettings_ImGuiWindowSettings() [*c]ImGuiWindowSettings; +pub extern fn ImGuiWindowSettings_destroy(self: [*c]ImGuiWindowSettings) void; +pub extern fn ImGuiWindowSettings_GetName(self: [*c]ImGuiWindowSettings) [*c]u8; +pub extern fn ImGuiSettingsHandler_ImGuiSettingsHandler() [*c]ImGuiSettingsHandler; +pub extern fn ImGuiSettingsHandler_destroy(self: [*c]ImGuiSettingsHandler) void; +pub extern fn ImGuiMetricsConfig_ImGuiMetricsConfig() [*c]ImGuiMetricsConfig; +pub extern fn ImGuiMetricsConfig_destroy(self: [*c]ImGuiMetricsConfig) void; +pub extern fn ImGuiStackLevelInfo_ImGuiStackLevelInfo() ?*ImGuiStackLevelInfo; +pub extern fn ImGuiStackLevelInfo_destroy(self: ?*ImGuiStackLevelInfo) void; +pub extern fn ImGuiStackTool_ImGuiStackTool() [*c]ImGuiStackTool; +pub extern fn ImGuiStackTool_destroy(self: [*c]ImGuiStackTool) void; +pub extern fn ImGuiContextHook_ImGuiContextHook() [*c]ImGuiContextHook; +pub extern fn ImGuiContextHook_destroy(self: [*c]ImGuiContextHook) void; +pub extern fn ImGuiContext_ImGuiContext(shared_font_atlas: [*c]ImFontAtlas) [*c]ImGuiContext; +pub extern fn ImGuiContext_destroy(self: [*c]ImGuiContext) void; +pub extern fn ImGuiWindow_ImGuiWindow(context: [*c]ImGuiContext, name: [*c]const u8) ?*ImGuiWindow; +pub extern fn ImGuiWindow_destroy(self: ?*ImGuiWindow) void; +pub extern fn ImGuiWindow_GetID_Str(self: ?*ImGuiWindow, str: [*c]const u8, str_end: [*c]const u8) ImGuiID; +pub extern fn ImGuiWindow_GetID_Ptr(self: ?*ImGuiWindow, ptr: ?*const anyopaque) ImGuiID; +pub extern fn ImGuiWindow_GetID_Int(self: ?*ImGuiWindow, n: c_int) ImGuiID; +pub extern fn ImGuiWindow_GetIDFromRectangle(self: ?*ImGuiWindow, r_abs: ImRect) ImGuiID; +pub extern fn ImGuiWindow_Rect(pOut: [*c]ImRect, self: ?*ImGuiWindow) void; +pub extern fn ImGuiWindow_CalcFontSize(self: ?*ImGuiWindow) f32; +pub extern fn ImGuiWindow_TitleBarHeight(self: ?*ImGuiWindow) f32; +pub extern fn ImGuiWindow_TitleBarRect(pOut: [*c]ImRect, self: ?*ImGuiWindow) void; +pub extern fn ImGuiWindow_MenuBarHeight(self: ?*ImGuiWindow) f32; +pub extern fn ImGuiWindow_MenuBarRect(pOut: [*c]ImRect, self: ?*ImGuiWindow) void; +pub extern fn ImGuiTabItem_ImGuiTabItem() [*c]ImGuiTabItem; +pub extern fn ImGuiTabItem_destroy(self: [*c]ImGuiTabItem) void; +pub extern fn ImGuiTabBar_ImGuiTabBar() [*c]ImGuiTabBar; +pub extern fn ImGuiTabBar_destroy(self: [*c]ImGuiTabBar) void; +pub extern fn ImGuiTabBar_GetTabOrder(self: [*c]ImGuiTabBar, tab: [*c]const ImGuiTabItem) c_int; +pub extern fn ImGuiTabBar_GetTabName(self: [*c]ImGuiTabBar, tab: [*c]const ImGuiTabItem) [*c]const u8; +pub extern fn ImGuiTableColumn_ImGuiTableColumn() ?*ImGuiTableColumn; +pub extern fn ImGuiTableColumn_destroy(self: ?*ImGuiTableColumn) void; +pub extern fn ImGuiTableInstanceData_ImGuiTableInstanceData() [*c]ImGuiTableInstanceData; +pub extern fn ImGuiTableInstanceData_destroy(self: [*c]ImGuiTableInstanceData) void; +pub extern fn ImGuiTable_ImGuiTable() ?*ImGuiTable; +pub extern fn ImGuiTable_destroy(self: ?*ImGuiTable) void; +pub extern fn ImGuiTableTempData_ImGuiTableTempData() [*c]ImGuiTableTempData; +pub extern fn ImGuiTableTempData_destroy(self: [*c]ImGuiTableTempData) void; +pub extern fn ImGuiTableColumnSettings_ImGuiTableColumnSettings() ?*ImGuiTableColumnSettings; +pub extern fn ImGuiTableColumnSettings_destroy(self: ?*ImGuiTableColumnSettings) void; +pub extern fn ImGuiTableSettings_ImGuiTableSettings() [*c]ImGuiTableSettings; +pub extern fn ImGuiTableSettings_destroy(self: [*c]ImGuiTableSettings) void; +pub extern fn ImGuiTableSettings_GetColumnSettings(self: [*c]ImGuiTableSettings) ?*ImGuiTableColumnSettings; +pub extern fn igGetCurrentWindowRead() ?*ImGuiWindow; +pub extern fn igGetCurrentWindow() ?*ImGuiWindow; +pub extern fn igFindWindowByID(id: ImGuiID) ?*ImGuiWindow; +pub extern fn igFindWindowByName(name: [*c]const u8) ?*ImGuiWindow; +pub extern fn igUpdateWindowParentAndRootLinks(window: ?*ImGuiWindow, flags: ImGuiWindowFlags, parent_window: ?*ImGuiWindow) void; +pub extern fn igCalcWindowNextAutoFitSize(pOut: [*c]ImVec2, window: ?*ImGuiWindow) void; +pub extern fn igIsWindowChildOf(window: ?*ImGuiWindow, potential_parent: ?*ImGuiWindow, popup_hierarchy: bool, dock_hierarchy: bool) bool; +pub extern fn igIsWindowWithinBeginStackOf(window: ?*ImGuiWindow, potential_parent: ?*ImGuiWindow) bool; +pub extern fn igIsWindowAbove(potential_above: ?*ImGuiWindow, potential_below: ?*ImGuiWindow) bool; +pub extern fn igIsWindowNavFocusable(window: ?*ImGuiWindow) bool; +pub extern fn igSetWindowPos_WindowPtr(window: ?*ImGuiWindow, pos: ImVec2, cond: ImGuiCond) void; +pub extern fn igSetWindowSize_WindowPtr(window: ?*ImGuiWindow, size: ImVec2, cond: ImGuiCond) void; +pub extern fn igSetWindowCollapsed_WindowPtr(window: ?*ImGuiWindow, collapsed: bool, cond: ImGuiCond) void; +pub extern fn igSetWindowHitTestHole(window: ?*ImGuiWindow, pos: ImVec2, size: ImVec2) void; +pub extern fn igWindowRectAbsToRel(pOut: [*c]ImRect, window: ?*ImGuiWindow, r: ImRect) void; +pub extern fn igWindowRectRelToAbs(pOut: [*c]ImRect, window: ?*ImGuiWindow, r: ImRect) void; +pub extern fn igFocusWindow(window: ?*ImGuiWindow) void; +pub extern fn igFocusTopMostWindowUnderOne(under_this_window: ?*ImGuiWindow, ignore_window: ?*ImGuiWindow) void; +pub extern fn igBringWindowToFocusFront(window: ?*ImGuiWindow) void; +pub extern fn igBringWindowToDisplayFront(window: ?*ImGuiWindow) void; +pub extern fn igBringWindowToDisplayBack(window: ?*ImGuiWindow) void; +pub extern fn igBringWindowToDisplayBehind(window: ?*ImGuiWindow, above_window: ?*ImGuiWindow) void; +pub extern fn igFindWindowDisplayIndex(window: ?*ImGuiWindow) c_int; +pub extern fn igFindBottomMostVisibleWindowWithinBeginStack(window: ?*ImGuiWindow) ?*ImGuiWindow; +pub extern fn igSetCurrentFont(font: [*c]ImFont) void; +pub extern fn igGetDefaultFont() [*c]ImFont; +pub extern fn igGetForegroundDrawList_WindowPtr(window: ?*ImGuiWindow) [*c]ImDrawList; +pub extern fn igInitialize() void; +pub extern fn igShutdown() void; +pub extern fn igUpdateInputEvents(trickle_fast_inputs: bool) void; +pub extern fn igUpdateHoveredWindowAndCaptureFlags() void; +pub extern fn igStartMouseMovingWindow(window: ?*ImGuiWindow) void; +pub extern fn igStartMouseMovingWindowOrNode(window: ?*ImGuiWindow, node: ?*ImGuiDockNode, undock_floating_node: bool) void; +pub extern fn igUpdateMouseMovingWindowNewFrame() void; +pub extern fn igUpdateMouseMovingWindowEndFrame() void; +pub extern fn igAddContextHook(context: [*c]ImGuiContext, hook: [*c]const ImGuiContextHook) ImGuiID; +pub extern fn igRemoveContextHook(context: [*c]ImGuiContext, hook_to_remove: ImGuiID) void; +pub extern fn igCallContextHooks(context: [*c]ImGuiContext, @"type": ImGuiContextHookType) void; +pub extern fn igTranslateWindowsInViewport(viewport: [*c]ImGuiViewportP, old_pos: ImVec2, new_pos: ImVec2) void; +pub extern fn igScaleWindowsInViewport(viewport: [*c]ImGuiViewportP, scale: f32) void; +pub extern fn igDestroyPlatformWindow(viewport: [*c]ImGuiViewportP) void; +pub extern fn igSetWindowViewport(window: ?*ImGuiWindow, viewport: [*c]ImGuiViewportP) void; +pub extern fn igSetCurrentViewport(window: ?*ImGuiWindow, viewport: [*c]ImGuiViewportP) void; +pub extern fn igGetViewportPlatformMonitor(viewport: [*c]ImGuiViewport) [*c]const ImGuiPlatformMonitor; +pub extern fn igFindHoveredViewportFromPlatformWindowStack(mouse_platform_pos: ImVec2) [*c]ImGuiViewportP; +pub extern fn igMarkIniSettingsDirty_Nil() void; +pub extern fn igMarkIniSettingsDirty_WindowPtr(window: ?*ImGuiWindow) void; +pub extern fn igClearIniSettings() void; +pub extern fn igCreateNewWindowSettings(name: [*c]const u8) [*c]ImGuiWindowSettings; +pub extern fn igFindWindowSettings(id: ImGuiID) [*c]ImGuiWindowSettings; +pub extern fn igFindOrCreateWindowSettings(name: [*c]const u8) [*c]ImGuiWindowSettings; +pub extern fn igAddSettingsHandler(handler: [*c]const ImGuiSettingsHandler) void; +pub extern fn igRemoveSettingsHandler(type_name: [*c]const u8) void; +pub extern fn igFindSettingsHandler(type_name: [*c]const u8) [*c]ImGuiSettingsHandler; +pub extern fn igSetNextWindowScroll(scroll: ImVec2) void; +pub extern fn igSetScrollX_WindowPtr(window: ?*ImGuiWindow, scroll_x: f32) void; +pub extern fn igSetScrollY_WindowPtr(window: ?*ImGuiWindow, scroll_y: f32) void; +pub extern fn igSetScrollFromPosX_WindowPtr(window: ?*ImGuiWindow, local_x: f32, center_x_ratio: f32) void; +pub extern fn igSetScrollFromPosY_WindowPtr(window: ?*ImGuiWindow, local_y: f32, center_y_ratio: f32) void; +pub extern fn igScrollToItem(flags: ImGuiScrollFlags) void; +pub extern fn igScrollToRect(window: ?*ImGuiWindow, rect: ImRect, flags: ImGuiScrollFlags) void; +pub extern fn igScrollToRectEx(pOut: [*c]ImVec2, window: ?*ImGuiWindow, rect: ImRect, flags: ImGuiScrollFlags) void; +pub extern fn igScrollToBringRectIntoView(window: ?*ImGuiWindow, rect: ImRect) void; +pub extern fn igGetItemID() ImGuiID; +pub extern fn igGetItemStatusFlags() ImGuiItemStatusFlags; +pub extern fn igGetItemFlags() ImGuiItemFlags; +pub extern fn igGetActiveID() ImGuiID; +pub extern fn igGetFocusID() ImGuiID; +pub extern fn igSetActiveID(id: ImGuiID, window: ?*ImGuiWindow) void; +pub extern fn igSetFocusID(id: ImGuiID, window: ?*ImGuiWindow) void; +pub extern fn igClearActiveID() void; +pub extern fn igGetHoveredID() ImGuiID; +pub extern fn igSetHoveredID(id: ImGuiID) void; +pub extern fn igKeepAliveID(id: ImGuiID) void; +pub extern fn igMarkItemEdited(id: ImGuiID) void; +pub extern fn igPushOverrideID(id: ImGuiID) void; +pub extern fn igGetIDWithSeed(str_id_begin: [*c]const u8, str_id_end: [*c]const u8, seed: ImGuiID) ImGuiID; +pub extern fn igItemSize_Vec2(size: ImVec2, text_baseline_y: f32) void; +pub extern fn igItemSize_Rect(bb: ImRect, text_baseline_y: f32) void; +pub extern fn igItemAdd(bb: ImRect, id: ImGuiID, nav_bb: [*c]const ImRect, extra_flags: ImGuiItemFlags) bool; +pub extern fn igItemHoverable(bb: ImRect, id: ImGuiID) bool; +pub extern fn igIsClippedEx(bb: ImRect, id: ImGuiID) bool; +pub extern fn igSetLastItemData(item_id: ImGuiID, in_flags: ImGuiItemFlags, status_flags: ImGuiItemStatusFlags, item_rect: ImRect) void; +pub extern fn igCalcItemSize(pOut: [*c]ImVec2, size: ImVec2, default_w: f32, default_h: f32) void; +pub extern fn igCalcWrapWidthForPos(pos: ImVec2, wrap_pos_x: f32) f32; +pub extern fn igPushMultiItemsWidths(components: c_int, width_full: f32) void; +pub extern fn igIsItemToggledSelection() bool; +pub extern fn igGetContentRegionMaxAbs(pOut: [*c]ImVec2) void; +pub extern fn igShrinkWidths(items: [*c]ImGuiShrinkWidthItem, count: c_int, width_excess: f32) void; +pub extern fn igPushItemFlag(option: ImGuiItemFlags, enabled: bool) void; +pub extern fn igPopItemFlag() void; +pub extern fn igLogBegin(@"type": ImGuiLogType, auto_open_depth: c_int) void; +pub extern fn igLogToBuffer(auto_open_depth: c_int) void; +pub extern fn igLogRenderedText(ref_pos: [*c]const ImVec2, text: [*c]const u8, text_end: [*c]const u8) void; +pub extern fn igLogSetNextTextDecoration(prefix: [*c]const u8, suffix: [*c]const u8) void; +pub extern fn igBeginChildEx(name: [*c]const u8, id: ImGuiID, size_arg: ImVec2, border: bool, flags: ImGuiWindowFlags) bool; +pub extern fn igOpenPopupEx(id: ImGuiID, popup_flags: ImGuiPopupFlags) void; +pub extern fn igClosePopupToLevel(remaining: c_int, restore_focus_to_window_under_popup: bool) void; +pub extern fn igClosePopupsOverWindow(ref_window: ?*ImGuiWindow, restore_focus_to_window_under_popup: bool) void; +pub extern fn igClosePopupsExceptModals() void; +pub extern fn igIsPopupOpen_ID(id: ImGuiID, popup_flags: ImGuiPopupFlags) bool; +pub extern fn igBeginPopupEx(id: ImGuiID, extra_flags: ImGuiWindowFlags) bool; +pub extern fn igBeginTooltipEx(tooltip_flags: ImGuiTooltipFlags, extra_window_flags: ImGuiWindowFlags) void; +pub extern fn igGetPopupAllowedExtentRect(pOut: [*c]ImRect, window: ?*ImGuiWindow) void; +pub extern fn igGetTopMostPopupModal() ?*ImGuiWindow; +pub extern fn igGetTopMostAndVisiblePopupModal() ?*ImGuiWindow; +pub extern fn igFindBestWindowPosForPopup(pOut: [*c]ImVec2, window: ?*ImGuiWindow) void; +pub extern fn igFindBestWindowPosForPopupEx(pOut: [*c]ImVec2, ref_pos: ImVec2, size: ImVec2, last_dir: [*c]ImGuiDir, r_outer: ImRect, r_avoid: ImRect, policy: ImGuiPopupPositionPolicy) void; +pub extern fn igBeginViewportSideBar(name: [*c]const u8, viewport: [*c]ImGuiViewport, dir: ImGuiDir, size: f32, window_flags: ImGuiWindowFlags) bool; +pub extern fn igBeginMenuEx(label: [*c]const u8, icon: [*c]const u8, enabled: bool) bool; +pub extern fn igMenuItemEx(label: [*c]const u8, icon: [*c]const u8, shortcut: [*c]const u8, selected: bool, enabled: bool) bool; +pub extern fn igBeginComboPopup(popup_id: ImGuiID, bb: ImRect, flags: ImGuiComboFlags) bool; +pub extern fn igBeginComboPreview() bool; +pub extern fn igEndComboPreview() void; +pub extern fn igNavInitWindow(window: ?*ImGuiWindow, force_reinit: bool) void; +pub extern fn igNavInitRequestApplyResult() void; +pub extern fn igNavMoveRequestButNoResultYet() bool; +pub extern fn igNavMoveRequestSubmit(move_dir: ImGuiDir, clip_dir: ImGuiDir, move_flags: ImGuiNavMoveFlags, scroll_flags: ImGuiScrollFlags) void; +pub extern fn igNavMoveRequestForward(move_dir: ImGuiDir, clip_dir: ImGuiDir, move_flags: ImGuiNavMoveFlags, scroll_flags: ImGuiScrollFlags) void; +pub extern fn igNavMoveRequestResolveWithLastItem(result: [*c]ImGuiNavItemData) void; +pub extern fn igNavMoveRequestCancel() void; +pub extern fn igNavMoveRequestApplyResult() void; +pub extern fn igNavMoveRequestTryWrapping(window: ?*ImGuiWindow, move_flags: ImGuiNavMoveFlags) void; +pub extern fn igGetNavInputName(n: ImGuiNavInput) [*c]const u8; +pub extern fn igGetNavInputAmount(n: ImGuiNavInput, mode: ImGuiNavReadMode) f32; +pub extern fn igGetNavInputAmount2d(pOut: [*c]ImVec2, dir_sources: ImGuiNavDirSourceFlags, mode: ImGuiNavReadMode, slow_factor: f32, fast_factor: f32) void; +pub extern fn igCalcTypematicRepeatAmount(t0: f32, t1: f32, repeat_delay: f32, repeat_rate: f32) c_int; +pub extern fn igActivateItem(id: ImGuiID) void; +pub extern fn igSetNavWindow(window: ?*ImGuiWindow) void; +pub extern fn igSetNavID(id: ImGuiID, nav_layer: ImGuiNavLayer, focus_scope_id: ImGuiID, rect_rel: ImRect) void; +pub extern fn igPushFocusScope(id: ImGuiID) void; +pub extern fn igPopFocusScope() void; +pub extern fn igGetFocusedFocusScope() ImGuiID; +pub extern fn igGetFocusScope() ImGuiID; +pub extern fn igIsNamedKey(key: ImGuiKey) bool; +pub extern fn igIsLegacyKey(key: ImGuiKey) bool; +pub extern fn igIsGamepadKey(key: ImGuiKey) bool; +pub extern fn igGetKeyData(key: ImGuiKey) [*c]ImGuiKeyData; +pub extern fn igSetItemUsingMouseWheel() void; +pub extern fn igSetActiveIdUsingNavAndKeys() void; +pub extern fn igIsActiveIdUsingNavDir(dir: ImGuiDir) bool; +pub extern fn igIsActiveIdUsingNavInput(input: ImGuiNavInput) bool; +pub extern fn igIsActiveIdUsingKey(key: ImGuiKey) bool; +pub extern fn igSetActiveIdUsingKey(key: ImGuiKey) void; +pub extern fn igIsMouseDragPastThreshold(button: ImGuiMouseButton, lock_threshold: f32) bool; +pub extern fn igIsNavInputDown(n: ImGuiNavInput) bool; +pub extern fn igIsNavInputTest(n: ImGuiNavInput, rm: ImGuiNavReadMode) bool; +pub extern fn igGetMergedModFlags() ImGuiModFlags; +pub extern fn igIsKeyPressedMap(key: ImGuiKey, repeat: bool) bool; +pub extern fn igDockContextInitialize(ctx: [*c]ImGuiContext) void; +pub extern fn igDockContextShutdown(ctx: [*c]ImGuiContext) void; +pub extern fn igDockContextClearNodes(ctx: [*c]ImGuiContext, root_id: ImGuiID, clear_settings_refs: bool) void; +pub extern fn igDockContextRebuildNodes(ctx: [*c]ImGuiContext) void; +pub extern fn igDockContextNewFrameUpdateUndocking(ctx: [*c]ImGuiContext) void; +pub extern fn igDockContextNewFrameUpdateDocking(ctx: [*c]ImGuiContext) void; +pub extern fn igDockContextEndFrame(ctx: [*c]ImGuiContext) void; +pub extern fn igDockContextGenNodeID(ctx: [*c]ImGuiContext) ImGuiID; +pub extern fn igDockContextQueueDock(ctx: [*c]ImGuiContext, target: ?*ImGuiWindow, target_node: ?*ImGuiDockNode, payload: ?*ImGuiWindow, split_dir: ImGuiDir, split_ratio: f32, split_outer: bool) void; +pub extern fn igDockContextQueueUndockWindow(ctx: [*c]ImGuiContext, window: ?*ImGuiWindow) void; +pub extern fn igDockContextQueueUndockNode(ctx: [*c]ImGuiContext, node: ?*ImGuiDockNode) void; +pub extern fn igDockContextCalcDropPosForDocking(target: ?*ImGuiWindow, target_node: ?*ImGuiDockNode, payload: ?*ImGuiWindow, split_dir: ImGuiDir, split_outer: bool, out_pos: [*c]ImVec2) bool; +pub extern fn igDockNodeBeginAmendTabBar(node: ?*ImGuiDockNode) bool; +pub extern fn igDockNodeEndAmendTabBar() void; +pub extern fn igDockNodeGetRootNode(node: ?*ImGuiDockNode) ?*ImGuiDockNode; +pub extern fn igDockNodeIsInHierarchyOf(node: ?*ImGuiDockNode, parent: ?*ImGuiDockNode) bool; +pub extern fn igDockNodeGetDepth(node: ?*const ImGuiDockNode) c_int; +pub extern fn igDockNodeGetWindowMenuButtonId(node: ?*const ImGuiDockNode) ImGuiID; +pub extern fn igGetWindowDockNode() ?*ImGuiDockNode; +pub extern fn igGetWindowAlwaysWantOwnTabBar(window: ?*ImGuiWindow) bool; +pub extern fn igBeginDocked(window: ?*ImGuiWindow, p_open: [*c]bool) void; +pub extern fn igBeginDockableDragDropSource(window: ?*ImGuiWindow) void; +pub extern fn igBeginDockableDragDropTarget(window: ?*ImGuiWindow) void; +pub extern fn igSetWindowDock(window: ?*ImGuiWindow, dock_id: ImGuiID, cond: ImGuiCond) void; +pub extern fn igDockBuilderDockWindow(window_name: [*c]const u8, node_id: ImGuiID) void; +pub extern fn igDockBuilderGetNode(node_id: ImGuiID) ?*ImGuiDockNode; +pub extern fn igDockBuilderGetCentralNode(node_id: ImGuiID) ?*ImGuiDockNode; +pub extern fn igDockBuilderAddNode(node_id: ImGuiID, flags: ImGuiDockNodeFlags) ImGuiID; +pub extern fn igDockBuilderRemoveNode(node_id: ImGuiID) void; +pub extern fn igDockBuilderRemoveNodeDockedWindows(node_id: ImGuiID, clear_settings_refs: bool) void; +pub extern fn igDockBuilderRemoveNodeChildNodes(node_id: ImGuiID) void; +pub extern fn igDockBuilderSetNodePos(node_id: ImGuiID, pos: ImVec2) void; +pub extern fn igDockBuilderSetNodeSize(node_id: ImGuiID, size: ImVec2) void; +pub extern fn igDockBuilderSplitNode(node_id: ImGuiID, split_dir: ImGuiDir, size_ratio_for_node_at_dir: f32, out_id_at_dir: [*c]ImGuiID, out_id_at_opposite_dir: [*c]ImGuiID) ImGuiID; +pub extern fn igDockBuilderCopyDockSpace(src_dockspace_id: ImGuiID, dst_dockspace_id: ImGuiID, in_window_remap_pairs: [*c]ImVector_const_charPtr) void; +pub extern fn igDockBuilderCopyNode(src_node_id: ImGuiID, dst_node_id: ImGuiID, out_node_remap_pairs: [*c]ImVector_ImGuiID) void; +pub extern fn igDockBuilderCopyWindowSettings(src_name: [*c]const u8, dst_name: [*c]const u8) void; +pub extern fn igDockBuilderFinish(node_id: ImGuiID) void; +pub extern fn igIsDragDropActive() bool; +pub extern fn igBeginDragDropTargetCustom(bb: ImRect, id: ImGuiID) bool; +pub extern fn igClearDragDrop() void; +pub extern fn igIsDragDropPayloadBeingAccepted() bool; +pub extern fn igSetWindowClipRectBeforeSetChannel(window: ?*ImGuiWindow, clip_rect: ImRect) void; +pub extern fn igBeginColumns(str_id: [*c]const u8, count: c_int, flags: ImGuiOldColumnFlags) void; +pub extern fn igEndColumns() void; +pub extern fn igPushColumnClipRect(column_index: c_int) void; +pub extern fn igPushColumnsBackground() void; +pub extern fn igPopColumnsBackground() void; +pub extern fn igGetColumnsID(str_id: [*c]const u8, count: c_int) ImGuiID; +pub extern fn igFindOrCreateColumns(window: ?*ImGuiWindow, id: ImGuiID) [*c]ImGuiOldColumns; +pub extern fn igGetColumnOffsetFromNorm(columns: [*c]const ImGuiOldColumns, offset_norm: f32) f32; +pub extern fn igGetColumnNormFromOffset(columns: [*c]const ImGuiOldColumns, offset: f32) f32; +pub extern fn igTableOpenContextMenu(column_n: c_int) void; +pub extern fn igTableSetColumnWidth(column_n: c_int, width: f32) void; +pub extern fn igTableSetColumnSortDirection(column_n: c_int, sort_direction: ImGuiSortDirection, append_to_sort_specs: bool) void; +pub extern fn igTableGetHoveredColumn() c_int; +pub extern fn igTableGetHeaderRowHeight() f32; +pub extern fn igTablePushBackgroundChannel() void; +pub extern fn igTablePopBackgroundChannel() void; +pub extern fn igGetCurrentTable() ?*ImGuiTable; +pub extern fn igTableFindByID(id: ImGuiID) ?*ImGuiTable; +pub extern fn igBeginTableEx(name: [*c]const u8, id: ImGuiID, columns_count: c_int, flags: ImGuiTableFlags, outer_size: ImVec2, inner_width: f32) bool; +pub extern fn igTableBeginInitMemory(table: ?*ImGuiTable, columns_count: c_int) void; +pub extern fn igTableBeginApplyRequests(table: ?*ImGuiTable) void; +pub extern fn igTableSetupDrawChannels(table: ?*ImGuiTable) void; +pub extern fn igTableUpdateLayout(table: ?*ImGuiTable) void; +pub extern fn igTableUpdateBorders(table: ?*ImGuiTable) void; +pub extern fn igTableUpdateColumnsWeightFromWidth(table: ?*ImGuiTable) void; +pub extern fn igTableDrawBorders(table: ?*ImGuiTable) void; +pub extern fn igTableDrawContextMenu(table: ?*ImGuiTable) void; +pub extern fn igTableMergeDrawChannels(table: ?*ImGuiTable) void; +pub extern fn igTableGetInstanceData(table: ?*ImGuiTable, instance_no: c_int) [*c]ImGuiTableInstanceData; +pub extern fn igTableSortSpecsSanitize(table: ?*ImGuiTable) void; +pub extern fn igTableSortSpecsBuild(table: ?*ImGuiTable) void; +pub extern fn igTableGetColumnNextSortDirection(column: ?*ImGuiTableColumn) ImGuiSortDirection; +pub extern fn igTableFixColumnSortDirection(table: ?*ImGuiTable, column: ?*ImGuiTableColumn) void; +pub extern fn igTableGetColumnWidthAuto(table: ?*ImGuiTable, column: ?*ImGuiTableColumn) f32; +pub extern fn igTableBeginRow(table: ?*ImGuiTable) void; +pub extern fn igTableEndRow(table: ?*ImGuiTable) void; +pub extern fn igTableBeginCell(table: ?*ImGuiTable, column_n: c_int) void; +pub extern fn igTableEndCell(table: ?*ImGuiTable) void; +pub extern fn igTableGetCellBgRect(pOut: [*c]ImRect, table: ?*const ImGuiTable, column_n: c_int) void; +pub extern fn igTableGetColumnName_TablePtr(table: ?*const ImGuiTable, column_n: c_int) [*c]const u8; +pub extern fn igTableGetColumnResizeID(table: ?*const ImGuiTable, column_n: c_int, instance_no: c_int) ImGuiID; +pub extern fn igTableGetMaxColumnWidth(table: ?*const ImGuiTable, column_n: c_int) f32; +pub extern fn igTableSetColumnWidthAutoSingle(table: ?*ImGuiTable, column_n: c_int) void; +pub extern fn igTableSetColumnWidthAutoAll(table: ?*ImGuiTable) void; +pub extern fn igTableRemove(table: ?*ImGuiTable) void; +pub extern fn igTableGcCompactTransientBuffers_TablePtr(table: ?*ImGuiTable) void; +pub extern fn igTableGcCompactTransientBuffers_TableTempDataPtr(table: [*c]ImGuiTableTempData) void; +pub extern fn igTableGcCompactSettings() void; +pub extern fn igTableLoadSettings(table: ?*ImGuiTable) void; +pub extern fn igTableSaveSettings(table: ?*ImGuiTable) void; +pub extern fn igTableResetSettings(table: ?*ImGuiTable) void; +pub extern fn igTableGetBoundSettings(table: ?*ImGuiTable) [*c]ImGuiTableSettings; +pub extern fn igTableSettingsAddSettingsHandler() void; +pub extern fn igTableSettingsCreate(id: ImGuiID, columns_count: c_int) [*c]ImGuiTableSettings; +pub extern fn igTableSettingsFindByID(id: ImGuiID) [*c]ImGuiTableSettings; +pub extern fn igBeginTabBarEx(tab_bar: [*c]ImGuiTabBar, bb: ImRect, flags: ImGuiTabBarFlags, dock_node: ?*ImGuiDockNode) bool; +pub extern fn igTabBarFindTabByID(tab_bar: [*c]ImGuiTabBar, tab_id: ImGuiID) [*c]ImGuiTabItem; +pub extern fn igTabBarFindMostRecentlySelectedTabForActiveWindow(tab_bar: [*c]ImGuiTabBar) [*c]ImGuiTabItem; +pub extern fn igTabBarAddTab(tab_bar: [*c]ImGuiTabBar, tab_flags: ImGuiTabItemFlags, window: ?*ImGuiWindow) void; +pub extern fn igTabBarRemoveTab(tab_bar: [*c]ImGuiTabBar, tab_id: ImGuiID) void; +pub extern fn igTabBarCloseTab(tab_bar: [*c]ImGuiTabBar, tab: [*c]ImGuiTabItem) void; +pub extern fn igTabBarQueueReorder(tab_bar: [*c]ImGuiTabBar, tab: [*c]const ImGuiTabItem, offset: c_int) void; +pub extern fn igTabBarQueueReorderFromMousePos(tab_bar: [*c]ImGuiTabBar, tab: [*c]const ImGuiTabItem, mouse_pos: ImVec2) void; +pub extern fn igTabBarProcessReorder(tab_bar: [*c]ImGuiTabBar) bool; +pub extern fn igTabItemEx(tab_bar: [*c]ImGuiTabBar, label: [*c]const u8, p_open: [*c]bool, flags: ImGuiTabItemFlags, docked_window: ?*ImGuiWindow) bool; +pub extern fn igTabItemCalcSize(pOut: [*c]ImVec2, label: [*c]const u8, has_close_button: bool) void; +pub extern fn igTabItemBackground(draw_list: [*c]ImDrawList, bb: ImRect, flags: ImGuiTabItemFlags, col: ImU32) void; +pub extern fn igTabItemLabelAndCloseButton(draw_list: [*c]ImDrawList, bb: ImRect, flags: ImGuiTabItemFlags, frame_padding: ImVec2, label: [*c]const u8, tab_id: ImGuiID, close_button_id: ImGuiID, is_contents_visible: bool, out_just_closed: [*c]bool, out_text_clipped: [*c]bool +) void; +pub extern fn igRenderText(pos: ImVec2, text: [*c]const u8, text_end: [*c]const u8, hide_text_after_hash: bool) void; +pub extern fn igRenderTextWrapped(pos: ImVec2, text: [*c]const u8, text_end: [*c]const u8, wrap_width: f32) void; +pub extern fn igRenderTextClipped(pos_min: ImVec2, pos_max: ImVec2, text: [*c]const u8, text_end: [*c]const u8, text_size_if_known: [*c]const ImVec2, @"align": ImVec2, clip_rect: [*c]const ImRect) void; +pub extern fn igRenderTextClippedEx(draw_list: [*c]ImDrawList, pos_min: ImVec2, pos_max: ImVec2, text: [*c]const u8, text_end: [*c]const u8, text_size_if_known: [*c]const ImVec2, @"align": ImVec2, clip_rect: [*c]const ImRect) void; +pub extern fn igRenderTextEllipsis(draw_list: [*c]ImDrawList, pos_min: ImVec2, pos_max: ImVec2, clip_max_x: f32, ellipsis_max_x: f32, text: [*c]const u8, text_end: [*c]const u8, text_size_if_known: [*c]const ImVec2) void; +pub extern fn igRenderFrame(p_min: ImVec2, p_max: ImVec2, fill_col: ImU32, border: bool, rounding: f32) void; +pub extern fn igRenderFrameBorder(p_min: ImVec2, p_max: ImVec2, rounding: f32) void; +pub extern fn igRenderColorRectWithAlphaCheckerboard(draw_list: [*c]ImDrawList, p_min: ImVec2, p_max: ImVec2, fill_col: ImU32, grid_step: f32, grid_off: ImVec2, rounding: f32, flags: ImDrawFlags) void; +pub extern fn igRenderNavHighlight(bb: ImRect, id: ImGuiID, flags: ImGuiNavHighlightFlags) void; +pub extern fn igFindRenderedTextEnd(text: [*c]const u8, text_end: [*c]const u8) [*c]const u8; +pub extern fn igRenderMouseCursor(pos: ImVec2, scale: f32, mouse_cursor: ImGuiMouseCursor, col_fill: ImU32, col_border: ImU32, col_shadow: ImU32) void; +pub extern fn igRenderArrow(draw_list: [*c]ImDrawList, pos: ImVec2, col: ImU32, dir: ImGuiDir, scale: f32) void; +pub extern fn igRenderBullet(draw_list: [*c]ImDrawList, pos: ImVec2, col: ImU32) void; +pub extern fn igRenderCheckMark(draw_list: [*c]ImDrawList, pos: ImVec2, col: ImU32, sz: f32) void; +pub extern fn igRenderArrowPointingAt(draw_list: [*c]ImDrawList, pos: ImVec2, half_sz: ImVec2, direction: ImGuiDir, col: ImU32) void; +pub extern fn igRenderArrowDockMenu(draw_list: [*c]ImDrawList, p_min: ImVec2, sz: f32, col: ImU32) void; +pub extern fn igRenderRectFilledRangeH(draw_list: [*c]ImDrawList, rect: ImRect, col: ImU32, x_start_norm: f32, x_end_norm: f32, rounding: f32) void; +pub extern fn igRenderRectFilledWithHole(draw_list: [*c]ImDrawList, outer: ImRect, inner: ImRect, col: ImU32, rounding: f32) void; +pub extern fn igCalcRoundingFlagsForRectInRect(r_in: ImRect, r_outer: ImRect, threshold: f32) ImDrawFlags; +pub extern fn igTextEx(text: [*c]const u8, text_end: [*c]const u8, flags: ImGuiTextFlags) void; +pub extern fn igButtonEx(label: [*c]const u8, size_arg: ImVec2, flags: ImGuiButtonFlags) bool; +pub extern fn igCloseButton(id: ImGuiID, pos: ImVec2) bool; +pub extern fn igCollapseButton(id: ImGuiID, pos: ImVec2, dock_node: ?*ImGuiDockNode) bool; +pub extern fn igArrowButtonEx(str_id: [*c]const u8, dir: ImGuiDir, size_arg: ImVec2, flags: ImGuiButtonFlags) bool; +pub extern fn igScrollbar(axis: ImGuiAxis) void; +pub extern fn igScrollbarEx(bb: ImRect, id: ImGuiID, axis: ImGuiAxis, p_scroll_v: [*c]ImS64, avail_v: ImS64, contents_v: ImS64, flags: ImDrawFlags) bool; +pub extern fn igImageButtonEx(id: ImGuiID, texture_id: ImTextureID, size: ImVec2, uv0: ImVec2, uv1: ImVec2, padding: ImVec2, bg_col: ImVec4, tint_col: ImVec4) bool; +pub extern fn igGetWindowScrollbarRect(pOut: [*c]ImRect, window: ?*ImGuiWindow, axis: ImGuiAxis) void; +pub extern fn igGetWindowScrollbarID(window: ?*ImGuiWindow, axis: ImGuiAxis) ImGuiID; +pub extern fn igGetWindowResizeCornerID(window: ?*ImGuiWindow, n: c_int) ImGuiID; +pub extern fn igGetWindowResizeBorderID(window: ?*ImGuiWindow, dir: ImGuiDir) ImGuiID; +pub extern fn igSeparatorEx(flags: ImGuiSeparatorFlags) void; +pub extern fn igCheckboxFlags_S64Ptr(label: [*c]const u8, flags: [*c]ImS64, flags_value: ImS64) bool; +pub extern fn igCheckboxFlags_U64Ptr(label: [*c]const u8, flags: [*c]ImU64, flags_value: ImU64) bool; +pub extern fn igButtonBehavior(bb: ImRect, id: ImGuiID, out_hovered: [*c]bool, out_held: [*c]bool, flags: ImGuiButtonFlags) bool; +pub extern fn igDragBehavior(id: ImGuiID, data_type: ImGuiDataType, p_v: ?*anyopaque, v_speed: f32, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags) bool; +pub extern fn igSliderBehavior(bb: ImRect, id: ImGuiID, data_type: ImGuiDataType, p_v: ?*anyopaque, p_min: ?*const anyopaque, p_max: ?*const anyopaque, format: [*c]const u8, flags: ImGuiSliderFlags, out_grab_bb: [*c]ImRect) bool; +pub extern fn igSplitterBehavior(bb: ImRect, id: ImGuiID, axis: ImGuiAxis, size1: [*c]f32, size2: [*c]f32, min_size1: f32, min_size2: f32, hover_extend: f32, hover_visibility_delay: f32, bg_col: ImU32) bool; +pub extern fn igTreeNodeBehavior(id: ImGuiID, flags: ImGuiTreeNodeFlags, label: [*c]const u8, label_end: [*c]const u8) bool; +pub extern fn igTreeNodeBehaviorIsOpen(id: ImGuiID, flags: ImGuiTreeNodeFlags) bool; +pub extern fn igTreePushOverrideID(id: ImGuiID) void; +pub extern fn igDataTypeGetInfo(data_type: ImGuiDataType) [*c]const ImGuiDataTypeInfo; +pub extern fn igDataTypeFormatString(buf: [*c]u8, buf_size: c_int, data_type: ImGuiDataType, p_data: ?*const anyopaque, format: [*c]const u8) c_int; +pub extern fn igDataTypeApplyOp(data_type: ImGuiDataType, op: c_int, output: ?*anyopaque, arg_1: ?*const anyopaque, arg_2: ?*const anyopaque) void; +pub extern fn igDataTypeApplyFromText(buf: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, format: [*c]const u8) bool; +pub extern fn igDataTypeCompare(data_type: ImGuiDataType, arg_1: ?*const anyopaque, arg_2: ?*const anyopaque) c_int; +pub extern fn igDataTypeClamp(data_type: ImGuiDataType, p_data: ?*anyopaque, p_min: ?*const anyopaque, p_max: ?*const anyopaque) bool; +pub extern fn igInputTextEx(label: [*c]const u8, hint: [*c]const u8, buf: [*c]u8, buf_size: c_int, size_arg: ImVec2, flags: ImGuiInputTextFlags, callback: ImGuiInputTextCallback, user_data: ?*anyopaque) bool; +pub extern fn igTempInputText(bb: ImRect, id: ImGuiID, label: [*c]const u8, buf: [*c]u8, buf_size: c_int, flags: ImGuiInputTextFlags) bool; +pub extern fn igTempInputScalar(bb: ImRect, id: ImGuiID, label: [*c]const u8, data_type: ImGuiDataType, p_data: ?*anyopaque, format: [*c]const u8, p_clamp_min: ?*const anyopaque, p_clamp_max: ?*const anyopaque) bool; +pub extern fn igTempInputIsActive(id: ImGuiID) bool; +pub extern fn igGetInputTextState(id: ImGuiID) [*c]ImGuiInputTextState; +pub extern fn igColorTooltip(text: [*c]const u8, col: [*c]const f32, flags: ImGuiColorEditFlags) void; +pub extern fn igColorEditOptionsPopup(col: [*c]const f32, flags: ImGuiColorEditFlags) void; +pub extern fn igColorPickerOptionsPopup(ref_col: [*c]const f32, flags: ImGuiColorEditFlags) void; +pub extern fn igPlotEx(plot_type: ImGuiPlotType, label: [*c]const u8, values_getter: ?*const fn (?*anyopaque, c_int) callconv(.C) f32, data: ?*anyopaque, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, frame_size: ImVec2 +) c_int; +pub extern fn igShadeVertsLinearColorGradientKeepAlpha(draw_list: [*c]ImDrawList, vert_start_idx: c_int, vert_end_idx: c_int, gradient_p0: ImVec2, gradient_p1: ImVec2, col0: ImU32, col1: ImU32) void; +pub extern fn igShadeVertsLinearUV(draw_list: [*c]ImDrawList, vert_start_idx: c_int, vert_end_idx: c_int, a: ImVec2, b: ImVec2, uv_a: ImVec2, uv_b: ImVec2, clamp: bool) void; +pub extern fn igGcCompactTransientMiscBuffers() void; +pub extern fn igGcCompactTransientWindowBuffers(window: ?*ImGuiWindow) void; +pub extern fn igGcAwakeTransientWindowBuffers(window: ?*ImGuiWindow) void; +pub extern fn igDebugLog(fmt: [*c]const u8, ...) void; +pub extern fn igDebugLogV(fmt: [*c]const u8, args: va_list) void; +pub extern fn igErrorCheckEndFrameRecover(log_callback: ImGuiErrorLogCallback, user_data: ?*anyopaque) void; +pub extern fn igErrorCheckEndWindowRecover(log_callback: ImGuiErrorLogCallback, user_data: ?*anyopaque) void; +pub extern fn igDebugDrawItemRect(col: ImU32) void; +pub extern fn igDebugStartItemPicker() void; +pub extern fn igShowFontAtlas(atlas: [*c]ImFontAtlas) void; +pub extern fn igDebugHookIdInfo(id: ImGuiID, data_type: ImGuiDataType, data_id: ?*const anyopaque, data_id_end: ?*const anyopaque) void; +pub extern fn igDebugNodeColumns(columns: [*c]ImGuiOldColumns) void; +pub extern fn igDebugNodeDockNode(node: ?*ImGuiDockNode, label: [*c]const u8) void; +pub extern fn igDebugNodeDrawList(window: ?*ImGuiWindow, viewport: [*c]ImGuiViewportP, draw_list: [*c]const ImDrawList, label: [*c]const u8) void; +pub extern fn igDebugNodeDrawCmdShowMeshAndBoundingBox(out_draw_list: [*c]ImDrawList, draw_list: [*c]const ImDrawList, draw_cmd: [*c]const ImDrawCmd, show_mesh: bool, show_aabb: bool) void; +pub extern fn igDebugNodeFont(font: [*c]ImFont) void; +pub extern fn igDebugNodeFontGlyph(font: [*c]ImFont, glyph: ?*const ImFontGlyph) void; +pub extern fn igDebugNodeStorage(storage: [*c]ImGuiStorage, label: [*c]const u8) void; +pub extern fn igDebugNodeTabBar(tab_bar: [*c]ImGuiTabBar, label: [*c]const u8) void; +pub extern fn igDebugNodeTable(table: ?*ImGuiTable) void; +pub extern fn igDebugNodeTableSettings(settings: [*c]ImGuiTableSettings) void; +pub extern fn igDebugNodeInputTextState(state: [*c]ImGuiInputTextState) void; +pub extern fn igDebugNodeWindow(window: ?*ImGuiWindow, label: [*c]const u8) void; +pub extern fn igDebugNodeWindowSettings(settings: [*c]ImGuiWindowSettings) void; +pub extern fn igDebugNodeWindowsList(windows: [*c]ImVector_ImGuiWindowPtr, label: [*c]const u8) void; +pub extern fn igDebugNodeWindowsListByBeginStackParent(windows: [*c]?*ImGuiWindow, windows_size: c_int, parent_in_begin_stack: ?*ImGuiWindow) void; +pub extern fn igDebugNodeViewport(viewport: [*c]ImGuiViewportP) void; +pub extern fn igDebugRenderViewportThumbnail(draw_list: [*c]ImDrawList, viewport: [*c]ImGuiViewportP, bb: ImRect) void; +pub extern fn igImFontAtlasGetBuilderForStbTruetype() [*c]const ImFontBuilderIO; +pub extern fn igImFontAtlasBuildInit(atlas: [*c]ImFontAtlas) void; +pub extern fn igImFontAtlasBuildSetupFont(atlas: [*c]ImFontAtlas, font: [*c]ImFont, font_config: [*c]ImFontConfig, ascent: f32, descent: f32) void; +pub extern fn igImFontAtlasBuildPackCustomRects(atlas: [*c]ImFontAtlas, stbrp_context_opaque: ?*anyopaque) void; +pub extern fn igImFontAtlasBuildFinish(atlas: [*c]ImFontAtlas) void; +pub extern fn igImFontAtlasBuildRender8bppRectFromString(atlas: [*c]ImFontAtlas, x: c_int, y: c_int, w: c_int, h: c_int, in_str: [*c]const u8, in_marker_char: u8, in_marker_pixel_value: u8) void; +pub extern fn igImFontAtlasBuildRender32bppRectFromString(atlas: [*c]ImFontAtlas, x: c_int, y: c_int, w: c_int, h: c_int, in_str: [*c]const u8, in_marker_char: u8, in_marker_pixel_value: c_uint) void; +pub extern fn igImFontAtlasBuildMultiplyCalcLookupTable(out_table: [*c]u8, in_multiply_factor: f32) void; +pub extern fn igImFontAtlasBuildMultiplyRectAlpha8(table: [*c]const u8, pixels: [*c]u8, x: c_int, y: c_int, w: c_int, h: c_int, stride: c_int) void; +pub extern fn igLogText(fmt: [*c]const u8, ...) void; +pub extern fn ImGuiTextBuffer_appendf(buffer: [*c]struct_ImGuiTextBuffer, fmt: [*c]const u8, ...) void; +pub extern fn igGET_FLT_MAX() f32; +pub extern fn igGET_FLT_MIN() f32; +pub extern fn ImVector_ImWchar_create() [*c]ImVector_ImWchar; +pub extern fn ImVector_ImWchar_destroy(self: [*c]ImVector_ImWchar) void; +pub extern fn ImVector_ImWchar_Init(p: [*c]ImVector_ImWchar) void; +pub extern fn ImVector_ImWchar_UnInit(p: [*c]ImVector_ImWchar) void; +pub const __llvm__ = @as(c_int, 1); +pub const __clang__ = @as(c_int, 1); +pub const __clang_major__ = @as(c_int, 18); +pub const __clang_minor__ = @as(c_int, 1); +pub const __clang_patchlevel__ = @as(c_int, 6); +pub const __clang_version__ = "18.1.6 (https://github.com/ziglang/zig-bootstrap 98bc6bf4fc4009888d33941daf6b600d20a42a56)"; +pub const __GNUC__ = @as(c_int, 4); +pub const __GNUC_MINOR__ = @as(c_int, 2); +pub const __GNUC_PATCHLEVEL__ = @as(c_int, 1); +pub const __GXX_ABI_VERSION = @as(c_int, 1002); +pub const __ATOMIC_RELAXED = @as(c_int, 0); +pub const __ATOMIC_CONSUME = @as(c_int, 1); +pub const __ATOMIC_ACQUIRE = @as(c_int, 2); +pub const __ATOMIC_RELEASE = @as(c_int, 3); +pub const __ATOMIC_ACQ_REL = @as(c_int, 4); +pub const __ATOMIC_SEQ_CST = @as(c_int, 5); +pub const __MEMORY_SCOPE_SYSTEM = @as(c_int, 0); +pub const __MEMORY_SCOPE_DEVICE = @as(c_int, 1); +pub const __MEMORY_SCOPE_WRKGRP = @as(c_int, 2); +pub const __MEMORY_SCOPE_WVFRNT = @as(c_int, 3); +pub const __MEMORY_SCOPE_SINGLE = @as(c_int, 4); +pub const __OPENCL_MEMORY_SCOPE_WORK_ITEM = @as(c_int, 0); +pub const __OPENCL_MEMORY_SCOPE_WORK_GROUP = @as(c_int, 1); +pub const __OPENCL_MEMORY_SCOPE_DEVICE = @as(c_int, 2); +pub const __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES = @as(c_int, 3); +pub const __OPENCL_MEMORY_SCOPE_SUB_GROUP = @as(c_int, 4); +pub const __FPCLASS_SNAN = @as(c_int, 0x0001); +pub const __FPCLASS_QNAN = @as(c_int, 0x0002); +pub const __FPCLASS_NEGINF = @as(c_int, 0x0004); +pub const __FPCLASS_NEGNORMAL = @as(c_int, 0x0008); +pub const __FPCLASS_NEGSUBNORMAL = @as(c_int, 0x0010); +pub const __FPCLASS_NEGZERO = @as(c_int, 0x0020); +pub const __FPCLASS_POSZERO = @as(c_int, 0x0040); +pub const __FPCLASS_POSSUBNORMAL = @as(c_int, 0x0080); +pub const __FPCLASS_POSNORMAL = @as(c_int, 0x0100); +pub const __FPCLASS_POSINF = @as(c_int, 0x0200); +pub const __PRAGMA_REDEFINE_EXTNAME = @as(c_int, 1); +pub const __VERSION__ = "Clang 18.1.6 (https://github.com/ziglang/zig-bootstrap 98bc6bf4fc4009888d33941daf6b600d20a42a56)"; +pub const __OBJC_BOOL_IS_BOOL = @as(c_int, 0); +pub const __CONSTANT_CFSTRINGS__ = @as(c_int, 1); +pub const __SEH__ = @as(c_int, 1); +pub const __clang_literal_encoding__ = "UTF-8"; +pub const __clang_wide_literal_encoding__ = "UTF-16"; +pub const __ORDER_LITTLE_ENDIAN__ = @as(c_int, 1234); +pub const __ORDER_BIG_ENDIAN__ = @as(c_int, 4321); +pub const __ORDER_PDP_ENDIAN__ = @as(c_int, 3412); +pub const __BYTE_ORDER__ = __ORDER_LITTLE_ENDIAN__; +pub const __LITTLE_ENDIAN__ = @as(c_int, 1); +pub const __CHAR_BIT__ = @as(c_int, 8); +pub const __BOOL_WIDTH__ = @as(c_int, 8); +pub const __SHRT_WIDTH__ = @as(c_int, 16); +pub const __INT_WIDTH__ = @as(c_int, 32); +pub const __LONG_WIDTH__ = @as(c_int, 32); +pub const __LLONG_WIDTH__ = @as(c_int, 64); +pub const __BITINT_MAXWIDTH__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 8388608, .decimal); +pub const __SCHAR_MAX__ = @as(c_int, 127); +pub const __SHRT_MAX__ = @as(c_int, 32767); +pub const __INT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); +pub const __LONG_MAX__ = @as(c_long, 2147483647); +pub const __LONG_LONG_MAX__ = @as(c_longlong, 9223372036854775807); +pub const __WCHAR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); +pub const __WCHAR_WIDTH__ = @as(c_int, 16); +pub const __WINT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); +pub const __WINT_WIDTH__ = @as(c_int, 16); +pub const __INTMAX_MAX__ = @as(c_longlong, 9223372036854775807); +pub const __INTMAX_WIDTH__ = @as(c_int, 64); +pub const __SIZE_MAX__ = @as(c_ulonglong, 18446744073709551615); +pub const __SIZE_WIDTH__ = @as(c_int, 64); +pub const __UINTMAX_MAX__ = @as(c_ulonglong, 18446744073709551615); +pub const __UINTMAX_WIDTH__ = @as(c_int, 64); +pub const __PTRDIFF_MAX__ = @as(c_longlong, 9223372036854775807); +pub const __PTRDIFF_WIDTH__ = @as(c_int, 64); +pub const __INTPTR_MAX__ = @as(c_longlong, 9223372036854775807); +pub const __INTPTR_WIDTH__ = @as(c_int, 64); +pub const __UINTPTR_MAX__ = @as(c_ulonglong, 18446744073709551615); +pub const __UINTPTR_WIDTH__ = @as(c_int, 64); +pub const __SIZEOF_DOUBLE__ = @as(c_int, 8); +pub const __SIZEOF_FLOAT__ = @as(c_int, 4); +pub const __SIZEOF_INT__ = @as(c_int, 4); +pub const __SIZEOF_LONG__ = @as(c_int, 4); +pub const __SIZEOF_LONG_DOUBLE__ = @as(c_int, 16); +pub const __SIZEOF_LONG_LONG__ = @as(c_int, 8); +pub const __SIZEOF_POINTER__ = @as(c_int, 8); +pub const __SIZEOF_SHORT__ = @as(c_int, 2); +pub const __SIZEOF_PTRDIFF_T__ = @as(c_int, 8); +pub const __SIZEOF_SIZE_T__ = @as(c_int, 8); +pub const __SIZEOF_WCHAR_T__ = @as(c_int, 2); +pub const __SIZEOF_WINT_T__ = @as(c_int, 2); +pub const __SIZEOF_INT128__ = @as(c_int, 16); +pub const __INTMAX_TYPE__ = c_longlong; +pub const __INTMAX_FMTd__ = "lld"; +pub const __INTMAX_FMTi__ = "lli"; +pub const __INTMAX_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `LL`"); +// (no file):94:9 +pub const __UINTMAX_TYPE__ = c_ulonglong; +pub const __UINTMAX_FMTo__ = "llo"; +pub const __UINTMAX_FMTu__ = "llu"; +pub const __UINTMAX_FMTx__ = "llx"; +pub const __UINTMAX_FMTX__ = "llX"; +pub const __UINTMAX_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `ULL`"); +// (no file):100:9 +pub const __PTRDIFF_TYPE__ = c_longlong; +pub const __PTRDIFF_FMTd__ = "lld"; +pub const __PTRDIFF_FMTi__ = "lli"; +pub const __INTPTR_TYPE__ = c_longlong; +pub const __INTPTR_FMTd__ = "lld"; +pub const __INTPTR_FMTi__ = "lli"; +pub const __SIZE_TYPE__ = c_ulonglong; +pub const __SIZE_FMTo__ = "llo"; +pub const __SIZE_FMTu__ = "llu"; +pub const __SIZE_FMTx__ = "llx"; +pub const __SIZE_FMTX__ = "llX"; +pub const __WCHAR_TYPE__ = c_ushort; +pub const __WINT_TYPE__ = c_ushort; +pub const __SIG_ATOMIC_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); +pub const __SIG_ATOMIC_WIDTH__ = @as(c_int, 32); +pub const __CHAR16_TYPE__ = c_ushort; +pub const __CHAR32_TYPE__ = c_uint; +pub const __UINTPTR_TYPE__ = c_ulonglong; +pub const __UINTPTR_FMTo__ = "llo"; +pub const __UINTPTR_FMTu__ = "llu"; +pub const __UINTPTR_FMTx__ = "llx"; +pub const __UINTPTR_FMTX__ = "llX"; +pub const __FLT16_DENORM_MIN__ = @as(f16, 5.9604644775390625e-8); +pub const __FLT16_HAS_DENORM__ = @as(c_int, 1); +pub const __FLT16_DIG__ = @as(c_int, 3); +pub const __FLT16_DECIMAL_DIG__ = @as(c_int, 5); +pub const __FLT16_EPSILON__ = @as(f16, 9.765625e-4); +pub const __FLT16_HAS_INFINITY__ = @as(c_int, 1); +pub const __FLT16_HAS_QUIET_NAN__ = @as(c_int, 1); +pub const __FLT16_MANT_DIG__ = @as(c_int, 11); +pub const __FLT16_MAX_10_EXP__ = @as(c_int, 4); +pub const __FLT16_MAX_EXP__ = @as(c_int, 16); +pub const __FLT16_MAX__ = @as(f16, 6.5504e+4); +pub const __FLT16_MIN_10_EXP__ = -@as(c_int, 4); +pub const __FLT16_MIN_EXP__ = -@as(c_int, 13); +pub const __FLT16_MIN__ = @as(f16, 6.103515625e-5); +pub const __FLT_DENORM_MIN__ = @as(f32, 1.40129846e-45); +pub const __FLT_HAS_DENORM__ = @as(c_int, 1); +pub const __FLT_DIG__ = @as(c_int, 6); +pub const __FLT_DECIMAL_DIG__ = @as(c_int, 9); +pub const __FLT_EPSILON__ = @as(f32, 1.19209290e-7); +pub const __FLT_HAS_INFINITY__ = @as(c_int, 1); +pub const __FLT_HAS_QUIET_NAN__ = @as(c_int, 1); +pub const __FLT_MANT_DIG__ = @as(c_int, 24); +pub const __FLT_MAX_10_EXP__ = @as(c_int, 38); +pub const __FLT_MAX_EXP__ = @as(c_int, 128); +pub const __FLT_MAX__ = @as(f32, 3.40282347e+38); +pub const __FLT_MIN_10_EXP__ = -@as(c_int, 37); +pub const __FLT_MIN_EXP__ = -@as(c_int, 125); +pub const __FLT_MIN__ = @as(f32, 1.17549435e-38); +pub const __DBL_DENORM_MIN__ = @as(f64, 4.9406564584124654e-324); +pub const __DBL_HAS_DENORM__ = @as(c_int, 1); +pub const __DBL_DIG__ = @as(c_int, 15); +pub const __DBL_DECIMAL_DIG__ = @as(c_int, 17); +pub const __DBL_EPSILON__ = @as(f64, 2.2204460492503131e-16); +pub const __DBL_HAS_INFINITY__ = @as(c_int, 1); +pub const __DBL_HAS_QUIET_NAN__ = @as(c_int, 1); +pub const __DBL_MANT_DIG__ = @as(c_int, 53); +pub const __DBL_MAX_10_EXP__ = @as(c_int, 308); +pub const __DBL_MAX_EXP__ = @as(c_int, 1024); +pub const __DBL_MAX__ = @as(f64, 1.7976931348623157e+308); +pub const __DBL_MIN_10_EXP__ = -@as(c_int, 307); +pub const __DBL_MIN_EXP__ = -@as(c_int, 1021); +pub const __DBL_MIN__ = @as(f64, 2.2250738585072014e-308); +pub const __LDBL_DENORM_MIN__ = @as(c_longdouble, 3.64519953188247460253e-4951); +pub const __LDBL_HAS_DENORM__ = @as(c_int, 1); +pub const __LDBL_DIG__ = @as(c_int, 18); +pub const __LDBL_DECIMAL_DIG__ = @as(c_int, 21); +pub const __LDBL_EPSILON__ = @as(c_longdouble, 1.08420217248550443401e-19); +pub const __LDBL_HAS_INFINITY__ = @as(c_int, 1); +pub const __LDBL_HAS_QUIET_NAN__ = @as(c_int, 1); +pub const __LDBL_MANT_DIG__ = @as(c_int, 64); +pub const __LDBL_MAX_10_EXP__ = @as(c_int, 4932); +pub const __LDBL_MAX_EXP__ = @as(c_int, 16384); +pub const __LDBL_MAX__ = @as(c_longdouble, 1.18973149535723176502e+4932); +pub const __LDBL_MIN_10_EXP__ = -@as(c_int, 4931); +pub const __LDBL_MIN_EXP__ = -@as(c_int, 16381); +pub const __LDBL_MIN__ = @as(c_longdouble, 3.36210314311209350626e-4932); +pub const __POINTER_WIDTH__ = @as(c_int, 64); +pub const __BIGGEST_ALIGNMENT__ = @as(c_int, 16); +pub const __WCHAR_UNSIGNED__ = @as(c_int, 1); +pub const __WINT_UNSIGNED__ = @as(c_int, 1); +pub const __INT8_TYPE__ = i8; +pub const __INT8_FMTd__ = "hhd"; +pub const __INT8_FMTi__ = "hhi"; +pub const __INT8_C_SUFFIX__ = ""; +pub const __INT16_TYPE__ = c_short; +pub const __INT16_FMTd__ = "hd"; +pub const __INT16_FMTi__ = "hi"; +pub const __INT16_C_SUFFIX__ = ""; +pub const __INT32_TYPE__ = c_int; +pub const __INT32_FMTd__ = "d"; +pub const __INT32_FMTi__ = "i"; +pub const __INT32_C_SUFFIX__ = ""; +pub const __INT64_TYPE__ = c_longlong; +pub const __INT64_FMTd__ = "lld"; +pub const __INT64_FMTi__ = "lli"; +pub const __INT64_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `LL`"); +// (no file):198:9 +pub const __UINT8_TYPE__ = u8; +pub const __UINT8_FMTo__ = "hho"; +pub const __UINT8_FMTu__ = "hhu"; +pub const __UINT8_FMTx__ = "hhx"; +pub const __UINT8_FMTX__ = "hhX"; +pub const __UINT8_C_SUFFIX__ = ""; +pub const __UINT8_MAX__ = @as(c_int, 255); +pub const __INT8_MAX__ = @as(c_int, 127); +pub const __UINT16_TYPE__ = c_ushort; +pub const __UINT16_FMTo__ = "ho"; +pub const __UINT16_FMTu__ = "hu"; +pub const __UINT16_FMTx__ = "hx"; +pub const __UINT16_FMTX__ = "hX"; +pub const __UINT16_C_SUFFIX__ = ""; +pub const __UINT16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); +pub const __INT16_MAX__ = @as(c_int, 32767); +pub const __UINT32_TYPE__ = c_uint; +pub const __UINT32_FMTo__ = "o"; +pub const __UINT32_FMTu__ = "u"; +pub const __UINT32_FMTx__ = "x"; +pub const __UINT32_FMTX__ = "X"; +pub const __UINT32_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `U`"); +// (no file):220:9 +pub const __UINT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal); +pub const __INT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); +pub const __UINT64_TYPE__ = c_ulonglong; +pub const __UINT64_FMTo__ = "llo"; +pub const __UINT64_FMTu__ = "llu"; +pub const __UINT64_FMTx__ = "llx"; +pub const __UINT64_FMTX__ = "llX"; +pub const __UINT64_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `ULL`"); +// (no file):228:9 +pub const __UINT64_MAX__ = @as(c_ulonglong, 18446744073709551615); +pub const __INT64_MAX__ = @as(c_longlong, 9223372036854775807); +pub const __INT_LEAST8_TYPE__ = i8; +pub const __INT_LEAST8_MAX__ = @as(c_int, 127); +pub const __INT_LEAST8_WIDTH__ = @as(c_int, 8); +pub const __INT_LEAST8_FMTd__ = "hhd"; +pub const __INT_LEAST8_FMTi__ = "hhi"; +pub const __UINT_LEAST8_TYPE__ = u8; +pub const __UINT_LEAST8_MAX__ = @as(c_int, 255); +pub const __UINT_LEAST8_FMTo__ = "hho"; +pub const __UINT_LEAST8_FMTu__ = "hhu"; +pub const __UINT_LEAST8_FMTx__ = "hhx"; +pub const __UINT_LEAST8_FMTX__ = "hhX"; +pub const __INT_LEAST16_TYPE__ = c_short; +pub const __INT_LEAST16_MAX__ = @as(c_int, 32767); +pub const __INT_LEAST16_WIDTH__ = @as(c_int, 16); +pub const __INT_LEAST16_FMTd__ = "hd"; +pub const __INT_LEAST16_FMTi__ = "hi"; +pub const __UINT_LEAST16_TYPE__ = c_ushort; +pub const __UINT_LEAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); +pub const __UINT_LEAST16_FMTo__ = "ho"; +pub const __UINT_LEAST16_FMTu__ = "hu"; +pub const __UINT_LEAST16_FMTx__ = "hx"; +pub const __UINT_LEAST16_FMTX__ = "hX"; +pub const __INT_LEAST32_TYPE__ = c_int; +pub const __INT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); +pub const __INT_LEAST32_WIDTH__ = @as(c_int, 32); +pub const __INT_LEAST32_FMTd__ = "d"; +pub const __INT_LEAST32_FMTi__ = "i"; +pub const __UINT_LEAST32_TYPE__ = c_uint; +pub const __UINT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal); +pub const __UINT_LEAST32_FMTo__ = "o"; +pub const __UINT_LEAST32_FMTu__ = "u"; +pub const __UINT_LEAST32_FMTx__ = "x"; +pub const __UINT_LEAST32_FMTX__ = "X"; +pub const __INT_LEAST64_TYPE__ = c_longlong; +pub const __INT_LEAST64_MAX__ = @as(c_longlong, 9223372036854775807); +pub const __INT_LEAST64_WIDTH__ = @as(c_int, 64); +pub const __INT_LEAST64_FMTd__ = "lld"; +pub const __INT_LEAST64_FMTi__ = "lli"; +pub const __UINT_LEAST64_TYPE__ = c_ulonglong; +pub const __UINT_LEAST64_MAX__ = @as(c_ulonglong, 18446744073709551615); +pub const __UINT_LEAST64_FMTo__ = "llo"; +pub const __UINT_LEAST64_FMTu__ = "llu"; +pub const __UINT_LEAST64_FMTx__ = "llx"; +pub const __UINT_LEAST64_FMTX__ = "llX"; +pub const __INT_FAST8_TYPE__ = i8; +pub const __INT_FAST8_MAX__ = @as(c_int, 127); +pub const __INT_FAST8_WIDTH__ = @as(c_int, 8); +pub const __INT_FAST8_FMTd__ = "hhd"; +pub const __INT_FAST8_FMTi__ = "hhi"; +pub const __UINT_FAST8_TYPE__ = u8; +pub const __UINT_FAST8_MAX__ = @as(c_int, 255); +pub const __UINT_FAST8_FMTo__ = "hho"; +pub const __UINT_FAST8_FMTu__ = "hhu"; +pub const __UINT_FAST8_FMTx__ = "hhx"; +pub const __UINT_FAST8_FMTX__ = "hhX"; +pub const __INT_FAST16_TYPE__ = c_short; +pub const __INT_FAST16_MAX__ = @as(c_int, 32767); +pub const __INT_FAST16_WIDTH__ = @as(c_int, 16); +pub const __INT_FAST16_FMTd__ = "hd"; +pub const __INT_FAST16_FMTi__ = "hi"; +pub const __UINT_FAST16_TYPE__ = c_ushort; +pub const __UINT_FAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); +pub const __UINT_FAST16_FMTo__ = "ho"; +pub const __UINT_FAST16_FMTu__ = "hu"; +pub const __UINT_FAST16_FMTx__ = "hx"; +pub const __UINT_FAST16_FMTX__ = "hX"; +pub const __INT_FAST32_TYPE__ = c_int; +pub const __INT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); +pub const __INT_FAST32_WIDTH__ = @as(c_int, 32); +pub const __INT_FAST32_FMTd__ = "d"; +pub const __INT_FAST32_FMTi__ = "i"; +pub const __UINT_FAST32_TYPE__ = c_uint; +pub const __UINT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal); +pub const __UINT_FAST32_FMTo__ = "o"; +pub const __UINT_FAST32_FMTu__ = "u"; +pub const __UINT_FAST32_FMTx__ = "x"; +pub const __UINT_FAST32_FMTX__ = "X"; +pub const __INT_FAST64_TYPE__ = c_longlong; +pub const __INT_FAST64_MAX__ = @as(c_longlong, 9223372036854775807); +pub const __INT_FAST64_WIDTH__ = @as(c_int, 64); +pub const __INT_FAST64_FMTd__ = "lld"; +pub const __INT_FAST64_FMTi__ = "lli"; +pub const __UINT_FAST64_TYPE__ = c_ulonglong; +pub const __UINT_FAST64_MAX__ = @as(c_ulonglong, 18446744073709551615); +pub const __UINT_FAST64_FMTo__ = "llo"; +pub const __UINT_FAST64_FMTu__ = "llu"; +pub const __UINT_FAST64_FMTx__ = "llx"; +pub const __UINT_FAST64_FMTX__ = "llX"; +pub const __USER_LABEL_PREFIX__ = ""; +pub const __FINITE_MATH_ONLY__ = @as(c_int, 0); +pub const __GNUC_STDC_INLINE__ = @as(c_int, 1); +pub const __GCC_ATOMIC_TEST_AND_SET_TRUEVAL = @as(c_int, 1); +pub const __CLANG_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2); +pub const __CLANG_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2); +pub const __CLANG_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2); +pub const __CLANG_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2); +pub const __CLANG_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2); +pub const __CLANG_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2); +pub const __CLANG_ATOMIC_INT_LOCK_FREE = @as(c_int, 2); +pub const __CLANG_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2); +pub const __CLANG_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2); +pub const __CLANG_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_INT_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2); +pub const __GCC_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2); +pub const __NO_INLINE__ = @as(c_int, 1); +pub const __PIC__ = @as(c_int, 2); +pub const __pic__ = @as(c_int, 2); +pub const __FLT_RADIX__ = @as(c_int, 2); +pub const __DECIMAL_DIG__ = __LDBL_DECIMAL_DIG__; +pub const __GCC_ASM_FLAG_OUTPUTS__ = @as(c_int, 1); +pub const __code_model_small__ = @as(c_int, 1); +pub const __amd64__ = @as(c_int, 1); +pub const __amd64 = @as(c_int, 1); +pub const __x86_64 = @as(c_int, 1); +pub const __x86_64__ = @as(c_int, 1); +pub const __SEG_GS = @as(c_int, 1); +pub const __SEG_FS = @as(c_int, 1); +pub const __seg_gs = @compileError("unable to translate macro: undefined identifier `address_space`"); +// (no file):356:9 +pub const __seg_fs = @compileError("unable to translate macro: undefined identifier `address_space`"); +// (no file):357:9 +pub const __corei7 = @as(c_int, 1); +pub const __corei7__ = @as(c_int, 1); +pub const __tune_corei7__ = @as(c_int, 1); +pub const __REGISTER_PREFIX__ = ""; +pub const __NO_MATH_INLINES = @as(c_int, 1); +pub const __AES__ = @as(c_int, 1); +pub const __PCLMUL__ = @as(c_int, 1); +pub const __LAHF_SAHF__ = @as(c_int, 1); +pub const __LZCNT__ = @as(c_int, 1); +pub const __RDRND__ = @as(c_int, 1); +pub const __FSGSBASE__ = @as(c_int, 1); +pub const __BMI__ = @as(c_int, 1); +pub const __BMI2__ = @as(c_int, 1); +pub const __POPCNT__ = @as(c_int, 1); +pub const __PRFCHW__ = @as(c_int, 1); +pub const __RDSEED__ = @as(c_int, 1); +pub const __ADX__ = @as(c_int, 1); +pub const __MOVBE__ = @as(c_int, 1); +pub const __FMA__ = @as(c_int, 1); +pub const __F16C__ = @as(c_int, 1); +pub const __EVEX512__ = @as(c_int, 1); +pub const __AVX512CD__ = @as(c_int, 1); +pub const __AVX512VNNI__ = @as(c_int, 1); +pub const __AVX512DQ__ = @as(c_int, 1); +pub const __AVX512BW__ = @as(c_int, 1); +pub const __AVX512VL__ = @as(c_int, 1); +pub const __EVEX256__ = @as(c_int, 1); +pub const __FXSR__ = @as(c_int, 1); +pub const __XSAVE__ = @as(c_int, 1); +pub const __XSAVEOPT__ = @as(c_int, 1); +pub const __XSAVEC__ = @as(c_int, 1); +pub const __XSAVES__ = @as(c_int, 1); +pub const __CLFLUSHOPT__ = @as(c_int, 1); +pub const __CLWB__ = @as(c_int, 1); +pub const __INVPCID__ = @as(c_int, 1); +pub const __CRC32__ = @as(c_int, 1); +pub const __AVX512F__ = @as(c_int, 1); +pub const __AVX2__ = @as(c_int, 1); +pub const __AVX__ = @as(c_int, 1); +pub const __SSE4_2__ = @as(c_int, 1); +pub const __SSE4_1__ = @as(c_int, 1); +pub const __SSSE3__ = @as(c_int, 1); +pub const __SSE3__ = @as(c_int, 1); +pub const __SSE2__ = @as(c_int, 1); +pub const __SSE2_MATH__ = @as(c_int, 1); +pub const __SSE__ = @as(c_int, 1); +pub const __SSE_MATH__ = @as(c_int, 1); +pub const __MMX__ = @as(c_int, 1); +pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = @as(c_int, 1); +pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = @as(c_int, 1); +pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = @as(c_int, 1); +pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = @as(c_int, 1); +pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 = @as(c_int, 1); +pub const __SIZEOF_FLOAT128__ = @as(c_int, 16); +pub const _WIN32 = @as(c_int, 1); +pub const _WIN64 = @as(c_int, 1); +pub const WIN32 = @as(c_int, 1); +pub const __WIN32 = @as(c_int, 1); +pub const __WIN32__ = @as(c_int, 1); +pub const WINNT = @as(c_int, 1); +pub const __WINNT = @as(c_int, 1); +pub const __WINNT__ = @as(c_int, 1); +pub const WIN64 = @as(c_int, 1); +pub const __WIN64 = @as(c_int, 1); +pub const __WIN64__ = @as(c_int, 1); +pub const __MINGW64__ = @as(c_int, 1); +pub const __MSVCRT__ = @as(c_int, 1); +pub const __MINGW32__ = @as(c_int, 1); +pub const __declspec = @compileError("unable to translate C expr: unexpected token '__attribute__'"); +// (no file):426:9 +pub const _cdecl = @compileError("unable to translate macro: undefined identifier `__cdecl__`"); +// (no file):427:9 +pub const __cdecl = @compileError("unable to translate macro: undefined identifier `__cdecl__`"); +// (no file):428:9 +pub const _stdcall = @compileError("unable to translate macro: undefined identifier `__stdcall__`"); +// (no file):429:9 +pub const __stdcall = @compileError("unable to translate macro: undefined identifier `__stdcall__`"); +// (no file):430:9 +pub const _fastcall = @compileError("unable to translate macro: undefined identifier `__fastcall__`"); +// (no file):431:9 +pub const __fastcall = @compileError("unable to translate macro: undefined identifier `__fastcall__`"); +// (no file):432:9 +pub const _thiscall = @compileError("unable to translate macro: undefined identifier `__thiscall__`"); +// (no file):433:9 +pub const __thiscall = @compileError("unable to translate macro: undefined identifier `__thiscall__`"); +// (no file):434:9 +pub const _pascal = @compileError("unable to translate macro: undefined identifier `__pascal__`"); +// (no file):435:9 +pub const __pascal = @compileError("unable to translate macro: undefined identifier `__pascal__`"); +// (no file):436:9 +pub const __STDC__ = @as(c_int, 1); +pub const __STDC_HOSTED__ = @as(c_int, 1); +pub const __STDC_VERSION__ = @as(c_long, 201710); +pub const __STDC_UTF_16__ = @as(c_int, 1); +pub const __STDC_UTF_32__ = @as(c_int, 1); +pub const _DEBUG = @as(c_int, 1); +pub const EXTERN = @compileError("unable to translate C expr: unexpected token 'extern'"); +// cimgui2.h:1:9 +pub const CIMGUI_API = EXTERN; +pub const CONST = @compileError("unable to translate C expr: unexpected token 'const'"); +// cimgui2.h:3:9 +pub const __STDBOOL_H = ""; +pub const __bool_true_false_are_defined = @as(c_int, 1); +pub const @"bool" = bool; +pub const @"true" = @as(c_int, 1); +pub const @"false" = @as(c_int, 0); +pub const __CLANG_STDINT_H = ""; +pub const __int_least64_t = i64; +pub const __uint_least64_t = u64; +pub const __int_least32_t = i64; +pub const __uint_least32_t = u64; +pub const __int_least16_t = i64; +pub const __uint_least16_t = u64; +pub const __int_least8_t = i64; +pub const __uint_least8_t = u64; +pub const __uint32_t_defined = ""; +pub const __int8_t_defined = ""; +pub const __stdint_join3 = @compileError("unable to translate C expr: unexpected token '##'"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:287:9 +pub const __intptr_t_defined = ""; +pub const _INTPTR_T = ""; +pub const _UINTPTR_T = ""; +pub const __int_c_join = @compileError("unable to translate C expr: unexpected token '##'"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:324:9 +pub inline fn __int_c(v: anytype, suffix: anytype) @TypeOf(__int_c_join(v, suffix)) { + _ = &v; + _ = &suffix; + return __int_c_join(v, suffix); +} +pub const __uint_c = @compileError("unable to translate macro: undefined identifier `U`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:326:9 +pub const __int64_c_suffix = __INT64_C_SUFFIX__; +pub const __int32_c_suffix = __INT64_C_SUFFIX__; +pub const __int16_c_suffix = __INT64_C_SUFFIX__; +pub const __int8_c_suffix = __INT64_C_SUFFIX__; +pub inline fn INT64_C(v: anytype) @TypeOf(__int_c(v, __int64_c_suffix)) { + _ = &v; + return __int_c(v, __int64_c_suffix); +} +pub inline fn UINT64_C(v: anytype) @TypeOf(__uint_c(v, __int64_c_suffix)) { + _ = &v; + return __uint_c(v, __int64_c_suffix); +} +pub inline fn INT32_C(v: anytype) @TypeOf(__int_c(v, __int32_c_suffix)) { + _ = &v; + return __int_c(v, __int32_c_suffix); +} +pub inline fn UINT32_C(v: anytype) @TypeOf(__uint_c(v, __int32_c_suffix)) { + _ = &v; + return __uint_c(v, __int32_c_suffix); +} +pub inline fn INT16_C(v: anytype) @TypeOf(__int_c(v, __int16_c_suffix)) { + _ = &v; + return __int_c(v, __int16_c_suffix); +} +pub inline fn UINT16_C(v: anytype) @TypeOf(__uint_c(v, __int16_c_suffix)) { + _ = &v; + return __uint_c(v, __int16_c_suffix); +} +pub inline fn INT8_C(v: anytype) @TypeOf(__int_c(v, __int8_c_suffix)) { + _ = &v; + return __int_c(v, __int8_c_suffix); +} +pub inline fn UINT8_C(v: anytype) @TypeOf(__uint_c(v, __int8_c_suffix)) { + _ = &v; + return __uint_c(v, __int8_c_suffix); +} +pub const INT64_MAX = INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal)); +pub const INT64_MIN = -INT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 9223372036854775807, .decimal)) - @as(c_int, 1); +pub const UINT64_MAX = UINT64_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 18446744073709551615, .decimal)); +pub const __INT_LEAST64_MIN = INT64_MIN; +pub const __INT_LEAST64_MAX = INT64_MAX; +pub const __UINT_LEAST64_MAX = UINT64_MAX; +pub const __INT_LEAST32_MIN = INT64_MIN; +pub const __INT_LEAST32_MAX = INT64_MAX; +pub const __UINT_LEAST32_MAX = UINT64_MAX; +pub const __INT_LEAST16_MIN = INT64_MIN; +pub const __INT_LEAST16_MAX = INT64_MAX; +pub const __UINT_LEAST16_MAX = UINT64_MAX; +pub const __INT_LEAST8_MIN = INT64_MIN; +pub const __INT_LEAST8_MAX = INT64_MAX; +pub const __UINT_LEAST8_MAX = UINT64_MAX; +pub const INT_LEAST64_MIN = __INT_LEAST64_MIN; +pub const INT_LEAST64_MAX = __INT_LEAST64_MAX; +pub const UINT_LEAST64_MAX = __UINT_LEAST64_MAX; +pub const INT_FAST64_MIN = __INT_LEAST64_MIN; +pub const INT_FAST64_MAX = __INT_LEAST64_MAX; +pub const UINT_FAST64_MAX = __UINT_LEAST64_MAX; +pub const INT32_MAX = INT32_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal)); +pub const INT32_MIN = -INT32_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal)) - @as(c_int, 1); +pub const UINT32_MAX = UINT32_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 4294967295, .decimal)); +pub const INT_LEAST32_MIN = __INT_LEAST32_MIN; +pub const INT_LEAST32_MAX = __INT_LEAST32_MAX; +pub const UINT_LEAST32_MAX = __UINT_LEAST32_MAX; +pub const INT_FAST32_MIN = __INT_LEAST32_MIN; +pub const INT_FAST32_MAX = __INT_LEAST32_MAX; +pub const UINT_FAST32_MAX = __UINT_LEAST32_MAX; +pub const INT16_MAX = INT16_C(@as(c_int, 32767)); +pub const INT16_MIN = -INT16_C(@as(c_int, 32767)) - @as(c_int, 1); +pub const UINT16_MAX = UINT16_C(@import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal)); +pub const INT_LEAST16_MIN = __INT_LEAST16_MIN; +pub const INT_LEAST16_MAX = __INT_LEAST16_MAX; +pub const UINT_LEAST16_MAX = __UINT_LEAST16_MAX; +pub const INT_FAST16_MIN = __INT_LEAST16_MIN; +pub const INT_FAST16_MAX = __INT_LEAST16_MAX; +pub const UINT_FAST16_MAX = __UINT_LEAST16_MAX; +pub const INT8_MAX = INT8_C(@as(c_int, 127)); +pub const INT8_MIN = -INT8_C(@as(c_int, 127)) - @as(c_int, 1); +pub const UINT8_MAX = UINT8_C(@as(c_int, 255)); +pub const INT_LEAST8_MIN = __INT_LEAST8_MIN; +pub const INT_LEAST8_MAX = __INT_LEAST8_MAX; +pub const UINT_LEAST8_MAX = __UINT_LEAST8_MAX; +pub const INT_FAST8_MIN = __INT_LEAST8_MIN; +pub const INT_FAST8_MAX = __INT_LEAST8_MAX; +pub const UINT_FAST8_MAX = __UINT_LEAST8_MAX; +pub const __INTN_MIN = @compileError("unable to translate macro: undefined identifier `INT`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:871:10 +pub const __INTN_MAX = @compileError("unable to translate macro: undefined identifier `INT`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:872:10 +pub const __UINTN_MAX = @compileError("unable to translate macro: undefined identifier `UINT`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:873:9 +pub const __INTN_C = @compileError("unable to translate macro: undefined identifier `INT`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:874:10 +pub const __UINTN_C = @compileError("unable to translate macro: undefined identifier `UINT`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/stdint.h:875:9 +pub const INTPTR_MIN = -__INTPTR_MAX__ - @as(c_int, 1); +pub const INTPTR_MAX = __INTPTR_MAX__; +pub const UINTPTR_MAX = __UINTPTR_MAX__; +pub const PTRDIFF_MIN = -__PTRDIFF_MAX__ - @as(c_int, 1); +pub const PTRDIFF_MAX = __PTRDIFF_MAX__; +pub const SIZE_MAX = __SIZE_MAX__; +pub const INTMAX_MIN = -__INTMAX_MAX__ - @as(c_int, 1); +pub const INTMAX_MAX = __INTMAX_MAX__; +pub const UINTMAX_MAX = __UINTMAX_MAX__; +pub const SIG_ATOMIC_MIN = __INTN_MIN(__SIG_ATOMIC_WIDTH__); +pub const SIG_ATOMIC_MAX = __INTN_MAX(__SIG_ATOMIC_WIDTH__); +pub const WINT_MIN = __UINTN_C(__WINT_WIDTH__, @as(c_int, 0)); +pub const WINT_MAX = __UINTN_MAX(__WINT_WIDTH__); +pub const WCHAR_MAX = __WCHAR_MAX__; +pub const WCHAR_MIN = __UINTN_C(__WCHAR_WIDTH__, @as(c_int, 0)); +pub inline fn INTMAX_C(v: anytype) @TypeOf(__int_c(v, __INTMAX_C_SUFFIX__)) { + _ = &v; + return __int_c(v, __INTMAX_C_SUFFIX__); +} +pub inline fn UINTMAX_C(v: anytype) @TypeOf(__int_c(v, __UINTMAX_C_SUFFIX__)) { + _ = &v; + return __int_c(v, __UINTMAX_C_SUFFIX__); +} +pub const __STDDEF_H = ""; +pub const __need_ptrdiff_t = ""; +pub const __need_size_t = ""; +pub const __need_wchar_t = ""; +pub const __need_NULL = ""; +pub const __need_max_align_t = ""; +pub const __need_offsetof = ""; +pub const _PTRDIFF_T = ""; +pub const _SIZE_T = ""; +pub const _WCHAR_T = ""; +pub const NULL = @import("std").zig.c_translation.cast(?*anyopaque, @as(c_int, 0)); +pub const __CLANG_MAX_ALIGN_T_DEFINED = ""; +pub const offsetof = @compileError("unable to translate C expr: unexpected token 'an identifier'"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stddef_offsetof.h:16:9 +pub const __STDARG_H = ""; +pub const __need___va_list = ""; +pub const __need_va_list = ""; +pub const __need_va_arg = ""; +pub const __need___va_copy = ""; +pub const __need_va_copy = ""; +pub const __GNUC_VA_LIST = ""; +pub const _VA_LIST = ""; +pub const va_start = @compileError("unable to translate macro: undefined identifier `__builtin_va_start`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg_va_arg.h:17:9 +pub const va_end = @compileError("unable to translate macro: undefined identifier `__builtin_va_end`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg_va_arg.h:19:9 +pub const va_arg = @compileError("unable to translate C expr: unexpected token 'an identifier'"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg_va_arg.h:20:9 +pub const __va_copy = @compileError("unable to translate macro: undefined identifier `__builtin_va_copy`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg___va_copy.h:11:9 +pub const va_copy = @compileError("unable to translate macro: undefined identifier `__builtin_va_copy`"); +// C:\app\zig-windows-x86_64-0.13.0\lib\include/__stdarg_va_copy.h:11:9 +pub const CIMGUI_DEFINE_ENUMS_AND_STRUCTS = @as(c_int, 1); +pub const IMGUI_HAS_DOCK = @as(c_int, 1); + +[Process exited 0] diff --git a/engine/vkImgui/cimgui/vulkan/vk_enum_string_helper.h b/engine/_archive/vkImgui/cimgui/vulkan/vk_enum_string_helper.h similarity index 100% rename from engine/vkImgui/cimgui/vulkan/vk_enum_string_helper.h rename to engine/_archive/vkImgui/cimgui/vulkan/vk_enum_string_helper.h diff --git a/engine/vkImgui/cimgui/vulkan/vk_icd.h b/engine/_archive/vkImgui/cimgui/vulkan/vk_icd.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vk_icd.h rename to engine/_archive/vkImgui/cimgui/vulkan/vk_icd.h index b933950..41989ee 100644 --- a/engine/vkImgui/cimgui/vulkan/vk_icd.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vk_icd.h @@ -1,245 +1,245 @@ -// -// File: vk_icd.h -// -/* - * Copyright (c) 2015-2016 The Khronos Group Inc. - * Copyright (c) 2015-2016 Valve Corporation - * Copyright (c) 2015-2016 LunarG, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef VKICD_H -#define VKICD_H - -#include "vulkan.h" -#include - -// Loader-ICD version negotiation API. Versions add the following features: -// Version 0 - Initial. Doesn't support vk_icdGetInstanceProcAddr -// or vk_icdNegotiateLoaderICDInterfaceVersion. -// Version 1 - Add support for vk_icdGetInstanceProcAddr. -// Version 2 - Add Loader/ICD Interface version negotiation -// via vk_icdNegotiateLoaderICDInterfaceVersion. -// Version 3 - Add ICD creation/destruction of KHR_surface objects. -// Version 4 - Add unknown physical device extension querying via -// vk_icdGetPhysicalDeviceProcAddr. -// Version 5 - Tells ICDs that the loader is now paying attention to the -// application version of Vulkan passed into the ApplicationInfo -// structure during vkCreateInstance. This will tell the ICD -// that if the loader is older, it should automatically fail a -// call for any API version > 1.0. Otherwise, the loader will -// manually determine if it can support the expected version. -// Version 6 - Add support for vk_icdEnumerateAdapterPhysicalDevices. -#define CURRENT_LOADER_ICD_INTERFACE_VERSION 6 -#define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0 -#define MIN_PHYS_DEV_EXTENSION_ICD_INTERFACE_VERSION 4 - -// Old typedefs that don't follow a proper naming convention but are preserved for compatibility -typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion); -// This is defined in vk_layer.h which will be found by the loader, but if an ICD is building against this -// file directly, it won't be found. -#ifndef PFN_GetPhysicalDeviceProcAddr -typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName); -#endif - -// Typedefs for loader/ICD interface -typedef VkResult (VKAPI_PTR *PFN_vk_icdNegotiateLoaderICDInterfaceVersion)(uint32_t* pVersion); -typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetInstanceProcAddr)(VkInstance instance, const char* pName); -typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName); -#if defined(VK_USE_PLATFORM_WIN32_KHR) -typedef VkResult (VKAPI_PTR *PFN_vk_icdEnumerateAdapterPhysicalDevices)(VkInstance instance, LUID adapterLUID, - uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); -#endif - -// Prototypes for loader/ICD interface -#if !defined(VK_NO_PROTOTYPES) -#ifdef __cplusplus -extern "C" { -#endif - VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pVersion); - VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName); - VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance isntance, const char* pName); -#if defined(VK_USE_PLATFORM_WIN32_KHR) - VKAPI_ATTR VkResult VKAPI_CALL vk_icdEnumerateAdapterPhysicalDevices(VkInstance instance, LUID adapterLUID, - uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); -#endif -#ifdef __cplusplus -} -#endif -#endif - -/* - * The ICD must reserve space for a pointer for the loader's dispatch - * table, at the start of . - * The ICD must initialize this variable using the SET_LOADER_MAGIC_VALUE macro. - */ - -#define ICD_LOADER_MAGIC 0x01CDC0DE - -typedef union { - uintptr_t loaderMagic; - void *loaderData; -} VK_LOADER_DATA; - -static inline void set_loader_magic_value(void *pNewObject) { - VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject; - loader_info->loaderMagic = ICD_LOADER_MAGIC; -} - -static inline bool valid_loader_magic_value(void *pNewObject) { - const VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject; - return (loader_info->loaderMagic & 0xffffffff) == ICD_LOADER_MAGIC; -} - -/* - * Windows and Linux ICDs will treat VkSurfaceKHR as a pointer to a struct that - * contains the platform-specific connection and surface information. - */ -typedef enum { - VK_ICD_WSI_PLATFORM_MIR, - VK_ICD_WSI_PLATFORM_WAYLAND, - VK_ICD_WSI_PLATFORM_WIN32, - VK_ICD_WSI_PLATFORM_XCB, - VK_ICD_WSI_PLATFORM_XLIB, - VK_ICD_WSI_PLATFORM_ANDROID, - VK_ICD_WSI_PLATFORM_MACOS, - VK_ICD_WSI_PLATFORM_IOS, - VK_ICD_WSI_PLATFORM_DISPLAY, - VK_ICD_WSI_PLATFORM_HEADLESS, - VK_ICD_WSI_PLATFORM_METAL, - VK_ICD_WSI_PLATFORM_DIRECTFB, - VK_ICD_WSI_PLATFORM_VI, - VK_ICD_WSI_PLATFORM_GGP, - VK_ICD_WSI_PLATFORM_SCREEN, -} VkIcdWsiPlatform; - -typedef struct { - VkIcdWsiPlatform platform; -} VkIcdSurfaceBase; - -#ifdef VK_USE_PLATFORM_MIR_KHR -typedef struct { - VkIcdSurfaceBase base; - MirConnection *connection; - MirSurface *mirSurface; -} VkIcdSurfaceMir; -#endif // VK_USE_PLATFORM_MIR_KHR - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR -typedef struct { - VkIcdSurfaceBase base; - struct wl_display *display; - struct wl_surface *surface; -} VkIcdSurfaceWayland; -#endif // VK_USE_PLATFORM_WAYLAND_KHR - -#ifdef VK_USE_PLATFORM_WIN32_KHR -typedef struct { - VkIcdSurfaceBase base; - HINSTANCE hinstance; - HWND hwnd; -} VkIcdSurfaceWin32; -#endif // VK_USE_PLATFORM_WIN32_KHR - -#ifdef VK_USE_PLATFORM_XCB_KHR -typedef struct { - VkIcdSurfaceBase base; - xcb_connection_t *connection; - xcb_window_t window; -} VkIcdSurfaceXcb; -#endif // VK_USE_PLATFORM_XCB_KHR - -#ifdef VK_USE_PLATFORM_XLIB_KHR -typedef struct { - VkIcdSurfaceBase base; - Display *dpy; - Window window; -} VkIcdSurfaceXlib; -#endif // VK_USE_PLATFORM_XLIB_KHR - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT -typedef struct { - VkIcdSurfaceBase base; - IDirectFB *dfb; - IDirectFBSurface *surface; -} VkIcdSurfaceDirectFB; -#endif // VK_USE_PLATFORM_DIRECTFB_EXT - -#ifdef VK_USE_PLATFORM_ANDROID_KHR -typedef struct { - VkIcdSurfaceBase base; - struct ANativeWindow *window; -} VkIcdSurfaceAndroid; -#endif // VK_USE_PLATFORM_ANDROID_KHR - -#ifdef VK_USE_PLATFORM_MACOS_MVK -typedef struct { - VkIcdSurfaceBase base; - const void *pView; -} VkIcdSurfaceMacOS; -#endif // VK_USE_PLATFORM_MACOS_MVK - -#ifdef VK_USE_PLATFORM_IOS_MVK -typedef struct { - VkIcdSurfaceBase base; - const void *pView; -} VkIcdSurfaceIOS; -#endif // VK_USE_PLATFORM_IOS_MVK - -#ifdef VK_USE_PLATFORM_GGP -typedef struct { - VkIcdSurfaceBase base; - GgpStreamDescriptor streamDescriptor; -} VkIcdSurfaceGgp; -#endif // VK_USE_PLATFORM_GGP - -typedef struct { - VkIcdSurfaceBase base; - VkDisplayModeKHR displayMode; - uint32_t planeIndex; - uint32_t planeStackIndex; - VkSurfaceTransformFlagBitsKHR transform; - float globalAlpha; - VkDisplayPlaneAlphaFlagBitsKHR alphaMode; - VkExtent2D imageExtent; -} VkIcdSurfaceDisplay; - -typedef struct { - VkIcdSurfaceBase base; -} VkIcdSurfaceHeadless; - -#ifdef VK_USE_PLATFORM_METAL_EXT -typedef struct { - VkIcdSurfaceBase base; - const CAMetalLayer *pLayer; -} VkIcdSurfaceMetal; -#endif // VK_USE_PLATFORM_METAL_EXT - -#ifdef VK_USE_PLATFORM_VI_NN -typedef struct { - VkIcdSurfaceBase base; - void *window; -} VkIcdSurfaceVi; -#endif // VK_USE_PLATFORM_VI_NN - -#ifdef VK_USE_PLATFORM_SCREEN_QNX -typedef struct { - VkIcdSurfaceBase base; - struct _screen_context *context; - struct _screen_window *window; -} VkIcdSurfaceScreen; -#endif // VK_USE_PLATFORM_SCREEN_QNX - -#endif // VKICD_H +// +// File: vk_icd.h +// +/* + * Copyright (c) 2015-2016 The Khronos Group Inc. + * Copyright (c) 2015-2016 Valve Corporation + * Copyright (c) 2015-2016 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef VKICD_H +#define VKICD_H + +#include "vulkan.h" +#include + +// Loader-ICD version negotiation API. Versions add the following features: +// Version 0 - Initial. Doesn't support vk_icdGetInstanceProcAddr +// or vk_icdNegotiateLoaderICDInterfaceVersion. +// Version 1 - Add support for vk_icdGetInstanceProcAddr. +// Version 2 - Add Loader/ICD Interface version negotiation +// via vk_icdNegotiateLoaderICDInterfaceVersion. +// Version 3 - Add ICD creation/destruction of KHR_surface objects. +// Version 4 - Add unknown physical device extension querying via +// vk_icdGetPhysicalDeviceProcAddr. +// Version 5 - Tells ICDs that the loader is now paying attention to the +// application version of Vulkan passed into the ApplicationInfo +// structure during vkCreateInstance. This will tell the ICD +// that if the loader is older, it should automatically fail a +// call for any API version > 1.0. Otherwise, the loader will +// manually determine if it can support the expected version. +// Version 6 - Add support for vk_icdEnumerateAdapterPhysicalDevices. +#define CURRENT_LOADER_ICD_INTERFACE_VERSION 6 +#define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0 +#define MIN_PHYS_DEV_EXTENSION_ICD_INTERFACE_VERSION 4 + +// Old typedefs that don't follow a proper naming convention but are preserved for compatibility +typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion); +// This is defined in vk_layer.h which will be found by the loader, but if an ICD is building against this +// file directly, it won't be found. +#ifndef PFN_GetPhysicalDeviceProcAddr +typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName); +#endif + +// Typedefs for loader/ICD interface +typedef VkResult (VKAPI_PTR *PFN_vk_icdNegotiateLoaderICDInterfaceVersion)(uint32_t* pVersion); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetInstanceProcAddr)(VkInstance instance, const char* pName); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName); +#if defined(VK_USE_PLATFORM_WIN32_KHR) +typedef VkResult (VKAPI_PTR *PFN_vk_icdEnumerateAdapterPhysicalDevices)(VkInstance instance, LUID adapterLUID, + uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); +#endif + +// Prototypes for loader/ICD interface +#if !defined(VK_NO_PROTOTYPES) +#ifdef __cplusplus +extern "C" { +#endif + VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pVersion); + VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName); + VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance isntance, const char* pName); +#if defined(VK_USE_PLATFORM_WIN32_KHR) + VKAPI_ATTR VkResult VKAPI_CALL vk_icdEnumerateAdapterPhysicalDevices(VkInstance instance, LUID adapterLUID, + uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); +#endif +#ifdef __cplusplus +} +#endif +#endif + +/* + * The ICD must reserve space for a pointer for the loader's dispatch + * table, at the start of . + * The ICD must initialize this variable using the SET_LOADER_MAGIC_VALUE macro. + */ + +#define ICD_LOADER_MAGIC 0x01CDC0DE + +typedef union { + uintptr_t loaderMagic; + void *loaderData; +} VK_LOADER_DATA; + +static inline void set_loader_magic_value(void *pNewObject) { + VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject; + loader_info->loaderMagic = ICD_LOADER_MAGIC; +} + +static inline bool valid_loader_magic_value(void *pNewObject) { + const VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject; + return (loader_info->loaderMagic & 0xffffffff) == ICD_LOADER_MAGIC; +} + +/* + * Windows and Linux ICDs will treat VkSurfaceKHR as a pointer to a struct that + * contains the platform-specific connection and surface information. + */ +typedef enum { + VK_ICD_WSI_PLATFORM_MIR, + VK_ICD_WSI_PLATFORM_WAYLAND, + VK_ICD_WSI_PLATFORM_WIN32, + VK_ICD_WSI_PLATFORM_XCB, + VK_ICD_WSI_PLATFORM_XLIB, + VK_ICD_WSI_PLATFORM_ANDROID, + VK_ICD_WSI_PLATFORM_MACOS, + VK_ICD_WSI_PLATFORM_IOS, + VK_ICD_WSI_PLATFORM_DISPLAY, + VK_ICD_WSI_PLATFORM_HEADLESS, + VK_ICD_WSI_PLATFORM_METAL, + VK_ICD_WSI_PLATFORM_DIRECTFB, + VK_ICD_WSI_PLATFORM_VI, + VK_ICD_WSI_PLATFORM_GGP, + VK_ICD_WSI_PLATFORM_SCREEN, +} VkIcdWsiPlatform; + +typedef struct { + VkIcdWsiPlatform platform; +} VkIcdSurfaceBase; + +#ifdef VK_USE_PLATFORM_MIR_KHR +typedef struct { + VkIcdSurfaceBase base; + MirConnection *connection; + MirSurface *mirSurface; +} VkIcdSurfaceMir; +#endif // VK_USE_PLATFORM_MIR_KHR + +#ifdef VK_USE_PLATFORM_WAYLAND_KHR +typedef struct { + VkIcdSurfaceBase base; + struct wl_display *display; + struct wl_surface *surface; +} VkIcdSurfaceWayland; +#endif // VK_USE_PLATFORM_WAYLAND_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +typedef struct { + VkIcdSurfaceBase base; + HINSTANCE hinstance; + HWND hwnd; +} VkIcdSurfaceWin32; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_XCB_KHR +typedef struct { + VkIcdSurfaceBase base; + xcb_connection_t *connection; + xcb_window_t window; +} VkIcdSurfaceXcb; +#endif // VK_USE_PLATFORM_XCB_KHR + +#ifdef VK_USE_PLATFORM_XLIB_KHR +typedef struct { + VkIcdSurfaceBase base; + Display *dpy; + Window window; +} VkIcdSurfaceXlib; +#endif // VK_USE_PLATFORM_XLIB_KHR + +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +typedef struct { + VkIcdSurfaceBase base; + IDirectFB *dfb; + IDirectFBSurface *surface; +} VkIcdSurfaceDirectFB; +#endif // VK_USE_PLATFORM_DIRECTFB_EXT + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +typedef struct { + VkIcdSurfaceBase base; + struct ANativeWindow *window; +} VkIcdSurfaceAndroid; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_MACOS_MVK +typedef struct { + VkIcdSurfaceBase base; + const void *pView; +} VkIcdSurfaceMacOS; +#endif // VK_USE_PLATFORM_MACOS_MVK + +#ifdef VK_USE_PLATFORM_IOS_MVK +typedef struct { + VkIcdSurfaceBase base; + const void *pView; +} VkIcdSurfaceIOS; +#endif // VK_USE_PLATFORM_IOS_MVK + +#ifdef VK_USE_PLATFORM_GGP +typedef struct { + VkIcdSurfaceBase base; + GgpStreamDescriptor streamDescriptor; +} VkIcdSurfaceGgp; +#endif // VK_USE_PLATFORM_GGP + +typedef struct { + VkIcdSurfaceBase base; + VkDisplayModeKHR displayMode; + uint32_t planeIndex; + uint32_t planeStackIndex; + VkSurfaceTransformFlagBitsKHR transform; + float globalAlpha; + VkDisplayPlaneAlphaFlagBitsKHR alphaMode; + VkExtent2D imageExtent; +} VkIcdSurfaceDisplay; + +typedef struct { + VkIcdSurfaceBase base; +} VkIcdSurfaceHeadless; + +#ifdef VK_USE_PLATFORM_METAL_EXT +typedef struct { + VkIcdSurfaceBase base; + const CAMetalLayer *pLayer; +} VkIcdSurfaceMetal; +#endif // VK_USE_PLATFORM_METAL_EXT + +#ifdef VK_USE_PLATFORM_VI_NN +typedef struct { + VkIcdSurfaceBase base; + void *window; +} VkIcdSurfaceVi; +#endif // VK_USE_PLATFORM_VI_NN + +#ifdef VK_USE_PLATFORM_SCREEN_QNX +typedef struct { + VkIcdSurfaceBase base; + struct _screen_context *context; + struct _screen_window *window; +} VkIcdSurfaceScreen; +#endif // VK_USE_PLATFORM_SCREEN_QNX + +#endif // VKICD_H diff --git a/engine/vkImgui/cimgui/vulkan/vk_layer.h b/engine/_archive/vkImgui/cimgui/vulkan/vk_layer.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vk_layer.h rename to engine/_archive/vkImgui/cimgui/vulkan/vk_layer.h index 32be24d..0651870 100644 --- a/engine/vkImgui/cimgui/vulkan/vk_layer.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vk_layer.h @@ -1,210 +1,210 @@ -// -// File: vk_layer.h -// -/* - * Copyright (c) 2015-2017 The Khronos Group Inc. - * Copyright (c) 2015-2017 Valve Corporation - * Copyright (c) 2015-2017 LunarG, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -/* Need to define dispatch table - * Core struct can then have ptr to dispatch table at the top - * Along with object ptrs for current and next OBJ - */ -#pragma once - -#include "vulkan.h" -#if defined(__GNUC__) && __GNUC__ >= 4 -#define VK_LAYER_EXPORT __attribute__((visibility("default"))) -#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) -#define VK_LAYER_EXPORT __attribute__((visibility("default"))) -#else -#define VK_LAYER_EXPORT -#endif - -#define MAX_NUM_UNKNOWN_EXTS 250 - - // Loader-Layer version negotiation API. Versions add the following features: - // Versions 0/1 - Initial. Doesn't support vk_layerGetPhysicalDeviceProcAddr - // or vk_icdNegotiateLoaderLayerInterfaceVersion. - // Version 2 - Add support for vk_layerGetPhysicalDeviceProcAddr and - // vk_icdNegotiateLoaderLayerInterfaceVersion. -#define CURRENT_LOADER_LAYER_INTERFACE_VERSION 2 -#define MIN_SUPPORTED_LOADER_LAYER_INTERFACE_VERSION 1 - -#define VK_CURRENT_CHAIN_VERSION 1 - -// Typedef for use in the interfaces below -typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName); - -// Version negotiation values -typedef enum VkNegotiateLayerStructType { - LAYER_NEGOTIATE_UNINTIALIZED = 0, - LAYER_NEGOTIATE_INTERFACE_STRUCT = 1, -} VkNegotiateLayerStructType; - -// Version negotiation structures -typedef struct VkNegotiateLayerInterface { - VkNegotiateLayerStructType sType; - void *pNext; - uint32_t loaderLayerInterfaceVersion; - PFN_vkGetInstanceProcAddr pfnGetInstanceProcAddr; - PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr; - PFN_GetPhysicalDeviceProcAddr pfnGetPhysicalDeviceProcAddr; -} VkNegotiateLayerInterface; - -// Version negotiation functions -typedef VkResult (VKAPI_PTR *PFN_vkNegotiateLoaderLayerInterfaceVersion)(VkNegotiateLayerInterface *pVersionStruct); - -// Function prototype for unknown physical device extension command -typedef VkResult(VKAPI_PTR *PFN_PhysDevExt)(VkPhysicalDevice phys_device); - -// ------------------------------------------------------------------------------------------------ -// CreateInstance and CreateDevice support structures - -/* Sub type of structure for instance and device loader ext of CreateInfo. - * When sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO - * or sType == VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - * then VkLayerFunction indicates struct type pointed to by pNext - */ -typedef enum VkLayerFunction_ { - VK_LAYER_LINK_INFO = 0, - VK_LOADER_DATA_CALLBACK = 1, - VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK = 2, - VK_LOADER_FEATURES = 3, -} VkLayerFunction; - -typedef struct VkLayerInstanceLink_ { - struct VkLayerInstanceLink_ *pNext; - PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; - PFN_GetPhysicalDeviceProcAddr pfnNextGetPhysicalDeviceProcAddr; -} VkLayerInstanceLink; - -/* - * When creating the device chain the loader needs to pass - * down information about it's device structure needed at - * the end of the chain. Passing the data via the - * VkLayerDeviceInfo avoids issues with finding the - * exact instance being used. - */ -typedef struct VkLayerDeviceInfo_ { - void *device_info; - PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; -} VkLayerDeviceInfo; - -typedef VkResult (VKAPI_PTR *PFN_vkSetInstanceLoaderData)(VkInstance instance, - void *object); -typedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device, - void *object); -typedef VkResult (VKAPI_PTR *PFN_vkLayerCreateDevice)(VkInstance instance, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo, - const VkAllocationCallbacks *pAllocator, VkDevice *pDevice, PFN_vkGetInstanceProcAddr layerGIPA, PFN_vkGetDeviceProcAddr *nextGDPA); -typedef void (VKAPI_PTR *PFN_vkLayerDestroyDevice)(VkDevice physicalDevice, const VkAllocationCallbacks *pAllocator, PFN_vkDestroyDevice destroyFunction); - -typedef enum VkLoaderFeastureFlagBits { - VK_LOADER_FEATURE_PHYSICAL_DEVICE_SORTING = 0x00000001, -} VkLoaderFlagBits; -typedef VkFlags VkLoaderFeatureFlags; - -typedef struct { - VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO - const void *pNext; - VkLayerFunction function; - union { - VkLayerInstanceLink *pLayerInfo; - PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData; - struct { - PFN_vkLayerCreateDevice pfnLayerCreateDevice; - PFN_vkLayerDestroyDevice pfnLayerDestroyDevice; - } layerDevice; - VkLoaderFeatureFlags loaderFeatures; - } u; -} VkLayerInstanceCreateInfo; - -typedef struct VkLayerDeviceLink_ { - struct VkLayerDeviceLink_ *pNext; - PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; - PFN_vkGetDeviceProcAddr pfnNextGetDeviceProcAddr; -} VkLayerDeviceLink; - -typedef struct { - VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - const void *pNext; - VkLayerFunction function; - union { - VkLayerDeviceLink *pLayerInfo; - PFN_vkSetDeviceLoaderData pfnSetDeviceLoaderData; - } u; -} VkLayerDeviceCreateInfo; - -#ifdef __cplusplus -extern "C" { -#endif - -VKAPI_ATTR VkResult VKAPI_CALL vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLayerInterface *pVersionStruct); - -typedef enum VkChainType { - VK_CHAIN_TYPE_UNKNOWN = 0, - VK_CHAIN_TYPE_ENUMERATE_INSTANCE_EXTENSION_PROPERTIES = 1, - VK_CHAIN_TYPE_ENUMERATE_INSTANCE_LAYER_PROPERTIES = 2, - VK_CHAIN_TYPE_ENUMERATE_INSTANCE_VERSION = 3, -} VkChainType; - -typedef struct VkChainHeader { - VkChainType type; - uint32_t version; - uint32_t size; -} VkChainHeader; - -typedef struct VkEnumerateInstanceExtensionPropertiesChain { - VkChainHeader header; - VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceExtensionPropertiesChain *, const char *, uint32_t *, - VkExtensionProperties *); - const struct VkEnumerateInstanceExtensionPropertiesChain *pNextLink; - -#if defined(__cplusplus) - inline VkResult CallDown(const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties) const { - return pfnNextLayer(pNextLink, pLayerName, pPropertyCount, pProperties); - } -#endif -} VkEnumerateInstanceExtensionPropertiesChain; - -typedef struct VkEnumerateInstanceLayerPropertiesChain { - VkChainHeader header; - VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceLayerPropertiesChain *, uint32_t *, VkLayerProperties *); - const struct VkEnumerateInstanceLayerPropertiesChain *pNextLink; - -#if defined(__cplusplus) - inline VkResult CallDown(uint32_t *pPropertyCount, VkLayerProperties *pProperties) const { - return pfnNextLayer(pNextLink, pPropertyCount, pProperties); - } -#endif -} VkEnumerateInstanceLayerPropertiesChain; - -typedef struct VkEnumerateInstanceVersionChain { - VkChainHeader header; - VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceVersionChain *, uint32_t *); - const struct VkEnumerateInstanceVersionChain *pNextLink; - -#if defined(__cplusplus) - inline VkResult CallDown(uint32_t *pApiVersion) const { - return pfnNextLayer(pNextLink, pApiVersion); - } -#endif -} VkEnumerateInstanceVersionChain; - -#ifdef __cplusplus -} -#endif +// +// File: vk_layer.h +// +/* + * Copyright (c) 2015-2017 The Khronos Group Inc. + * Copyright (c) 2015-2017 Valve Corporation + * Copyright (c) 2015-2017 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* Need to define dispatch table + * Core struct can then have ptr to dispatch table at the top + * Along with object ptrs for current and next OBJ + */ +#pragma once + +#include "vulkan.h" +#if defined(__GNUC__) && __GNUC__ >= 4 +#define VK_LAYER_EXPORT __attribute__((visibility("default"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define VK_LAYER_EXPORT __attribute__((visibility("default"))) +#else +#define VK_LAYER_EXPORT +#endif + +#define MAX_NUM_UNKNOWN_EXTS 250 + + // Loader-Layer version negotiation API. Versions add the following features: + // Versions 0/1 - Initial. Doesn't support vk_layerGetPhysicalDeviceProcAddr + // or vk_icdNegotiateLoaderLayerInterfaceVersion. + // Version 2 - Add support for vk_layerGetPhysicalDeviceProcAddr and + // vk_icdNegotiateLoaderLayerInterfaceVersion. +#define CURRENT_LOADER_LAYER_INTERFACE_VERSION 2 +#define MIN_SUPPORTED_LOADER_LAYER_INTERFACE_VERSION 1 + +#define VK_CURRENT_CHAIN_VERSION 1 + +// Typedef for use in the interfaces below +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName); + +// Version negotiation values +typedef enum VkNegotiateLayerStructType { + LAYER_NEGOTIATE_UNINTIALIZED = 0, + LAYER_NEGOTIATE_INTERFACE_STRUCT = 1, +} VkNegotiateLayerStructType; + +// Version negotiation structures +typedef struct VkNegotiateLayerInterface { + VkNegotiateLayerStructType sType; + void *pNext; + uint32_t loaderLayerInterfaceVersion; + PFN_vkGetInstanceProcAddr pfnGetInstanceProcAddr; + PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr; + PFN_GetPhysicalDeviceProcAddr pfnGetPhysicalDeviceProcAddr; +} VkNegotiateLayerInterface; + +// Version negotiation functions +typedef VkResult (VKAPI_PTR *PFN_vkNegotiateLoaderLayerInterfaceVersion)(VkNegotiateLayerInterface *pVersionStruct); + +// Function prototype for unknown physical device extension command +typedef VkResult(VKAPI_PTR *PFN_PhysDevExt)(VkPhysicalDevice phys_device); + +// ------------------------------------------------------------------------------------------------ +// CreateInstance and CreateDevice support structures + +/* Sub type of structure for instance and device loader ext of CreateInfo. + * When sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO + * or sType == VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO + * then VkLayerFunction indicates struct type pointed to by pNext + */ +typedef enum VkLayerFunction_ { + VK_LAYER_LINK_INFO = 0, + VK_LOADER_DATA_CALLBACK = 1, + VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK = 2, + VK_LOADER_FEATURES = 3, +} VkLayerFunction; + +typedef struct VkLayerInstanceLink_ { + struct VkLayerInstanceLink_ *pNext; + PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; + PFN_GetPhysicalDeviceProcAddr pfnNextGetPhysicalDeviceProcAddr; +} VkLayerInstanceLink; + +/* + * When creating the device chain the loader needs to pass + * down information about it's device structure needed at + * the end of the chain. Passing the data via the + * VkLayerDeviceInfo avoids issues with finding the + * exact instance being used. + */ +typedef struct VkLayerDeviceInfo_ { + void *device_info; + PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; +} VkLayerDeviceInfo; + +typedef VkResult (VKAPI_PTR *PFN_vkSetInstanceLoaderData)(VkInstance instance, + void *object); +typedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device, + void *object); +typedef VkResult (VKAPI_PTR *PFN_vkLayerCreateDevice)(VkInstance instance, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkDevice *pDevice, PFN_vkGetInstanceProcAddr layerGIPA, PFN_vkGetDeviceProcAddr *nextGDPA); +typedef void (VKAPI_PTR *PFN_vkLayerDestroyDevice)(VkDevice physicalDevice, const VkAllocationCallbacks *pAllocator, PFN_vkDestroyDevice destroyFunction); + +typedef enum VkLoaderFeastureFlagBits { + VK_LOADER_FEATURE_PHYSICAL_DEVICE_SORTING = 0x00000001, +} VkLoaderFlagBits; +typedef VkFlags VkLoaderFeatureFlags; + +typedef struct { + VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO + const void *pNext; + VkLayerFunction function; + union { + VkLayerInstanceLink *pLayerInfo; + PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData; + struct { + PFN_vkLayerCreateDevice pfnLayerCreateDevice; + PFN_vkLayerDestroyDevice pfnLayerDestroyDevice; + } layerDevice; + VkLoaderFeatureFlags loaderFeatures; + } u; +} VkLayerInstanceCreateInfo; + +typedef struct VkLayerDeviceLink_ { + struct VkLayerDeviceLink_ *pNext; + PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; + PFN_vkGetDeviceProcAddr pfnNextGetDeviceProcAddr; +} VkLayerDeviceLink; + +typedef struct { + VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO + const void *pNext; + VkLayerFunction function; + union { + VkLayerDeviceLink *pLayerInfo; + PFN_vkSetDeviceLoaderData pfnSetDeviceLoaderData; + } u; +} VkLayerDeviceCreateInfo; + +#ifdef __cplusplus +extern "C" { +#endif + +VKAPI_ATTR VkResult VKAPI_CALL vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLayerInterface *pVersionStruct); + +typedef enum VkChainType { + VK_CHAIN_TYPE_UNKNOWN = 0, + VK_CHAIN_TYPE_ENUMERATE_INSTANCE_EXTENSION_PROPERTIES = 1, + VK_CHAIN_TYPE_ENUMERATE_INSTANCE_LAYER_PROPERTIES = 2, + VK_CHAIN_TYPE_ENUMERATE_INSTANCE_VERSION = 3, +} VkChainType; + +typedef struct VkChainHeader { + VkChainType type; + uint32_t version; + uint32_t size; +} VkChainHeader; + +typedef struct VkEnumerateInstanceExtensionPropertiesChain { + VkChainHeader header; + VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceExtensionPropertiesChain *, const char *, uint32_t *, + VkExtensionProperties *); + const struct VkEnumerateInstanceExtensionPropertiesChain *pNextLink; + +#if defined(__cplusplus) + inline VkResult CallDown(const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties) const { + return pfnNextLayer(pNextLink, pLayerName, pPropertyCount, pProperties); + } +#endif +} VkEnumerateInstanceExtensionPropertiesChain; + +typedef struct VkEnumerateInstanceLayerPropertiesChain { + VkChainHeader header; + VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceLayerPropertiesChain *, uint32_t *, VkLayerProperties *); + const struct VkEnumerateInstanceLayerPropertiesChain *pNextLink; + +#if defined(__cplusplus) + inline VkResult CallDown(uint32_t *pPropertyCount, VkLayerProperties *pProperties) const { + return pfnNextLayer(pNextLink, pPropertyCount, pProperties); + } +#endif +} VkEnumerateInstanceLayerPropertiesChain; + +typedef struct VkEnumerateInstanceVersionChain { + VkChainHeader header; + VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceVersionChain *, uint32_t *); + const struct VkEnumerateInstanceVersionChain *pNextLink; + +#if defined(__cplusplus) + inline VkResult CallDown(uint32_t *pApiVersion) const { + return pfnNextLayer(pNextLink, pApiVersion); + } +#endif +} VkEnumerateInstanceVersionChain; + +#ifdef __cplusplus +} +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vk_platform.h b/engine/_archive/vkImgui/cimgui/vulkan/vk_platform.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vk_platform.h rename to engine/_archive/vkImgui/cimgui/vulkan/vk_platform.h index d7720de..3ff8c5d 100644 --- a/engine/vkImgui/cimgui/vulkan/vk_platform.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vk_platform.h @@ -1,84 +1,84 @@ -// -// File: vk_platform.h -// -/* -** Copyright 2014-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - - -#ifndef VK_PLATFORM_H_ -#define VK_PLATFORM_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif // __cplusplus - -/* -*************************************************************************************************** -* Platform-specific directives and type declarations -*************************************************************************************************** -*/ - -/* Platform-specific calling convention macros. - * - * Platforms should define these so that Vulkan clients call Vulkan commands - * with the same calling conventions that the Vulkan implementation expects. - * - * VKAPI_ATTR - Placed before the return type in function declarations. - * Useful for C++11 and GCC/Clang-style function attribute syntax. - * VKAPI_CALL - Placed after the return type in function declarations. - * Useful for MSVC-style calling convention syntax. - * VKAPI_PTR - Placed between the '(' and '*' in function pointer types. - * - * Function declaration: VKAPI_ATTR void VKAPI_CALL vkCommand(void); - * Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void); - */ -#if defined(_WIN32) - // On Windows, Vulkan commands use the stdcall convention - #define VKAPI_ATTR - #define VKAPI_CALL __stdcall - #define VKAPI_PTR VKAPI_CALL -#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7 - #error "Vulkan is not supported for the 'armeabi' NDK ABI" -#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE) - // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat" - // calling convention, i.e. float parameters are passed in registers. This - // is true even if the rest of the application passes floats on the stack, - // as it does by default when compiling for the armeabi-v7a NDK ABI. - #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp"))) - #define VKAPI_CALL - #define VKAPI_PTR VKAPI_ATTR -#else - // On other platforms, use the default calling convention - #define VKAPI_ATTR - #define VKAPI_CALL - #define VKAPI_PTR -#endif - -#if !defined(VK_NO_STDDEF_H) - #include -#endif // !defined(VK_NO_STDDEF_H) - -#if !defined(VK_NO_STDINT_H) - #if defined(_MSC_VER) && (_MSC_VER < 1600) - typedef signed __int8 int8_t; - typedef unsigned __int8 uint8_t; - typedef signed __int16 int16_t; - typedef unsigned __int16 uint16_t; - typedef signed __int32 int32_t; - typedef unsigned __int32 uint32_t; - typedef signed __int64 int64_t; - typedef unsigned __int64 uint64_t; - #else - #include - #endif -#endif // !defined(VK_NO_STDINT_H) - -#ifdef __cplusplus -} // extern "C" -#endif // __cplusplus - -#endif +// +// File: vk_platform.h +// +/* +** Copyright 2014-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + + +#ifndef VK_PLATFORM_H_ +#define VK_PLATFORM_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif // __cplusplus + +/* +*************************************************************************************************** +* Platform-specific directives and type declarations +*************************************************************************************************** +*/ + +/* Platform-specific calling convention macros. + * + * Platforms should define these so that Vulkan clients call Vulkan commands + * with the same calling conventions that the Vulkan implementation expects. + * + * VKAPI_ATTR - Placed before the return type in function declarations. + * Useful for C++11 and GCC/Clang-style function attribute syntax. + * VKAPI_CALL - Placed after the return type in function declarations. + * Useful for MSVC-style calling convention syntax. + * VKAPI_PTR - Placed between the '(' and '*' in function pointer types. + * + * Function declaration: VKAPI_ATTR void VKAPI_CALL vkCommand(void); + * Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void); + */ +#if defined(_WIN32) + // On Windows, Vulkan commands use the stdcall convention + #define VKAPI_ATTR + #define VKAPI_CALL __stdcall + #define VKAPI_PTR VKAPI_CALL +#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7 + #error "Vulkan is not supported for the 'armeabi' NDK ABI" +#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE) + // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat" + // calling convention, i.e. float parameters are passed in registers. This + // is true even if the rest of the application passes floats on the stack, + // as it does by default when compiling for the armeabi-v7a NDK ABI. + #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp"))) + #define VKAPI_CALL + #define VKAPI_PTR VKAPI_ATTR +#else + // On other platforms, use the default calling convention + #define VKAPI_ATTR + #define VKAPI_CALL + #define VKAPI_PTR +#endif + +#if !defined(VK_NO_STDDEF_H) + #include +#endif // !defined(VK_NO_STDDEF_H) + +#if !defined(VK_NO_STDINT_H) + #if defined(_MSC_VER) && (_MSC_VER < 1600) + typedef signed __int8 int8_t; + typedef unsigned __int8 uint8_t; + typedef signed __int16 int16_t; + typedef unsigned __int16 uint16_t; + typedef signed __int32 int32_t; + typedef unsigned __int32 uint32_t; + typedef signed __int64 int64_t; + typedef unsigned __int64 uint64_t; + #else + #include + #endif +#endif // !defined(VK_NO_STDINT_H) + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vk_sdk_platform.h b/engine/_archive/vkImgui/cimgui/vulkan/vk_sdk_platform.h similarity index 96% rename from engine/vkImgui/cimgui/vulkan/vk_sdk_platform.h rename to engine/_archive/vkImgui/cimgui/vulkan/vk_sdk_platform.h index 9fd0765..96d8676 100644 --- a/engine/vkImgui/cimgui/vulkan/vk_sdk_platform.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vk_sdk_platform.h @@ -1,69 +1,69 @@ -// -// File: vk_sdk_platform.h -// -/* - * Copyright (c) 2015-2016 The Khronos Group Inc. - * Copyright (c) 2015-2016 Valve Corporation - * Copyright (c) 2015-2016 LunarG, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef VK_SDK_PLATFORM_H -#define VK_SDK_PLATFORM_H - -#if defined(_WIN32) -#define NOMINMAX -#ifndef __cplusplus -#undef inline -#define inline __inline -#endif // __cplusplus - -#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) -// C99: -// Microsoft didn't implement C99 in Visual Studio; but started adding it with -// VS2013. However, VS2013 still didn't have snprintf(). The following is a -// work-around (Note: The _CRT_SECURE_NO_WARNINGS macro must be set in the -// "CMakeLists.txt" file). -// NOTE: This is fixed in Visual Studio 2015. -#define snprintf _snprintf -#endif - -#define strdup _strdup - -#endif // _WIN32 - -// Check for noexcept support using clang, with fallback to Windows or GCC version numbers -#ifndef NOEXCEPT -#if defined(__clang__) -#if __has_feature(cxx_noexcept) -#define HAS_NOEXCEPT -#endif -#else -#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 -#define HAS_NOEXCEPT -#else -#if defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026 && defined(_HAS_EXCEPTIONS) && _HAS_EXCEPTIONS -#define HAS_NOEXCEPT -#endif -#endif -#endif - -#ifdef HAS_NOEXCEPT -#define NOEXCEPT noexcept -#else -#define NOEXCEPT -#endif -#endif - -#endif // VK_SDK_PLATFORM_H +// +// File: vk_sdk_platform.h +// +/* + * Copyright (c) 2015-2016 The Khronos Group Inc. + * Copyright (c) 2015-2016 Valve Corporation + * Copyright (c) 2015-2016 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef VK_SDK_PLATFORM_H +#define VK_SDK_PLATFORM_H + +#if defined(_WIN32) +#define NOMINMAX +#ifndef __cplusplus +#undef inline +#define inline __inline +#endif // __cplusplus + +#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) +// C99: +// Microsoft didn't implement C99 in Visual Studio; but started adding it with +// VS2013. However, VS2013 still didn't have snprintf(). The following is a +// work-around (Note: The _CRT_SECURE_NO_WARNINGS macro must be set in the +// "CMakeLists.txt" file). +// NOTE: This is fixed in Visual Studio 2015. +#define snprintf _snprintf +#endif + +#define strdup _strdup + +#endif // _WIN32 + +// Check for noexcept support using clang, with fallback to Windows or GCC version numbers +#ifndef NOEXCEPT +#if defined(__clang__) +#if __has_feature(cxx_noexcept) +#define HAS_NOEXCEPT +#endif +#else +#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 +#define HAS_NOEXCEPT +#else +#if defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026 && defined(_HAS_EXCEPTIONS) && _HAS_EXCEPTIONS +#define HAS_NOEXCEPT +#endif +#endif +#endif + +#ifdef HAS_NOEXCEPT +#define NOEXCEPT noexcept +#else +#define NOEXCEPT +#endif +#endif + +#endif // VK_SDK_PLATFORM_H diff --git a/engine/vkImgui/cimgui/vulkan/vulkan.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan.h similarity index 94% rename from engine/vkImgui/cimgui/vulkan/vulkan.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan.h index 32ace9c..004fa70 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan.h @@ -1,92 +1,92 @@ -#ifndef VULKAN_H_ -#define VULKAN_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -#include "vk_platform.h" -#include "vulkan_core.h" - -#ifdef VK_USE_PLATFORM_ANDROID_KHR -#include "vulkan_android.h" -#endif - -#ifdef VK_USE_PLATFORM_FUCHSIA -#include -#include "vulkan_fuchsia.h" -#endif - -#ifdef VK_USE_PLATFORM_IOS_MVK -#include "vulkan_ios.h" -#endif - - -#ifdef VK_USE_PLATFORM_MACOS_MVK -#include "vulkan_macos.h" -#endif - -#ifdef VK_USE_PLATFORM_METAL_EXT -#include "vulkan_metal.h" -#endif - -#ifdef VK_USE_PLATFORM_VI_NN -#include "vulkan_vi.h" -#endif - - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR -#include -#include "vulkan_wayland.h" -#endif - - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#include -#include "vulkan_win32.h" -#endif - - -#ifdef VK_USE_PLATFORM_XCB_KHR -#include -#include "vulkan_xcb.h" -#endif - - -#ifdef VK_USE_PLATFORM_XLIB_KHR -#include -#include "vulkan_xlib.h" -#endif - - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT -#include -#include "vulkan_directfb.h" -#endif - - -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT -#include -#include -#include "vulkan_xlib_xrandr.h" -#endif - - -#ifdef VK_USE_PLATFORM_GGP -#include -#include "vulkan_ggp.h" -#endif - - -#ifdef VK_USE_PLATFORM_SCREEN_QNX -#include -#include "vulkan_screen.h" -#endif - -#ifdef VK_ENABLE_BETA_EXTENSIONS -#include "vulkan_beta.h" -#endif - -#endif // VULKAN_H_ +#ifndef VULKAN_H_ +#define VULKAN_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +#include "vk_platform.h" +#include "vulkan_core.h" + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +#include "vulkan_android.h" +#endif + +#ifdef VK_USE_PLATFORM_FUCHSIA +#include +#include "vulkan_fuchsia.h" +#endif + +#ifdef VK_USE_PLATFORM_IOS_MVK +#include "vulkan_ios.h" +#endif + + +#ifdef VK_USE_PLATFORM_MACOS_MVK +#include "vulkan_macos.h" +#endif + +#ifdef VK_USE_PLATFORM_METAL_EXT +#include "vulkan_metal.h" +#endif + +#ifdef VK_USE_PLATFORM_VI_NN +#include "vulkan_vi.h" +#endif + + +#ifdef VK_USE_PLATFORM_WAYLAND_KHR +#include +#include "vulkan_wayland.h" +#endif + + +#ifdef VK_USE_PLATFORM_WIN32_KHR +#include +#include "vulkan_win32.h" +#endif + + +#ifdef VK_USE_PLATFORM_XCB_KHR +#include +#include "vulkan_xcb.h" +#endif + + +#ifdef VK_USE_PLATFORM_XLIB_KHR +#include +#include "vulkan_xlib.h" +#endif + + +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +#include +#include "vulkan_directfb.h" +#endif + + +#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT +#include +#include +#include "vulkan_xlib_xrandr.h" +#endif + + +#ifdef VK_USE_PLATFORM_GGP +#include +#include "vulkan_ggp.h" +#endif + + +#ifdef VK_USE_PLATFORM_SCREEN_QNX +#include +#include "vulkan_screen.h" +#endif + +#ifdef VK_ENABLE_BETA_EXTENSIONS +#include "vulkan_beta.h" +#endif + +#endif // VULKAN_H_ diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_android.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_android.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_android.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_android.h index 2683657..11f5397 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_android.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_android.h @@ -1,125 +1,125 @@ -#ifndef VULKAN_ANDROID_H_ -#define VULKAN_ANDROID_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_KHR_android_surface 1 -struct ANativeWindow; -#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6 -#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface" -typedef VkFlags VkAndroidSurfaceCreateFlagsKHR; -typedef struct VkAndroidSurfaceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkAndroidSurfaceCreateFlagsKHR flags; - struct ANativeWindow* window; -} VkAndroidSurfaceCreateInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR( - VkInstance instance, - const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - - -#define VK_ANDROID_external_memory_android_hardware_buffer 1 -struct AHardwareBuffer; -#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5 -#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer" -typedef struct VkAndroidHardwareBufferUsageANDROID { - VkStructureType sType; - void* pNext; - uint64_t androidHardwareBufferUsage; -} VkAndroidHardwareBufferUsageANDROID; - -typedef struct VkAndroidHardwareBufferPropertiesANDROID { - VkStructureType sType; - void* pNext; - VkDeviceSize allocationSize; - uint32_t memoryTypeBits; -} VkAndroidHardwareBufferPropertiesANDROID; - -typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID { - VkStructureType sType; - void* pNext; - VkFormat format; - uint64_t externalFormat; - VkFormatFeatureFlags formatFeatures; - VkComponentMapping samplerYcbcrConversionComponents; - VkSamplerYcbcrModelConversion suggestedYcbcrModel; - VkSamplerYcbcrRange suggestedYcbcrRange; - VkChromaLocation suggestedXChromaOffset; - VkChromaLocation suggestedYChromaOffset; -} VkAndroidHardwareBufferFormatPropertiesANDROID; - -typedef struct VkImportAndroidHardwareBufferInfoANDROID { - VkStructureType sType; - const void* pNext; - struct AHardwareBuffer* buffer; -} VkImportAndroidHardwareBufferInfoANDROID; - -typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID { - VkStructureType sType; - const void* pNext; - VkDeviceMemory memory; -} VkMemoryGetAndroidHardwareBufferInfoANDROID; - -typedef struct VkExternalFormatANDROID { - VkStructureType sType; - void* pNext; - uint64_t externalFormat; -} VkExternalFormatANDROID; - -typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID { - VkStructureType sType; - void* pNext; - VkFormat format; - uint64_t externalFormat; - VkFormatFeatureFlags2 formatFeatures; - VkComponentMapping samplerYcbcrConversionComponents; - VkSamplerYcbcrModelConversion suggestedYcbcrModel; - VkSamplerYcbcrRange suggestedYcbcrRange; - VkChromaLocation suggestedXChromaOffset; - VkChromaLocation suggestedYChromaOffset; -} VkAndroidHardwareBufferFormatProperties2ANDROID; - -typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID( - VkDevice device, - const struct AHardwareBuffer* buffer, - VkAndroidHardwareBufferPropertiesANDROID* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID( - VkDevice device, - const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, - struct AHardwareBuffer** pBuffer); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_ANDROID_H_ +#define VULKAN_ANDROID_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_KHR_android_surface 1 +struct ANativeWindow; +#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6 +#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface" +typedef VkFlags VkAndroidSurfaceCreateFlagsKHR; +typedef struct VkAndroidSurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkAndroidSurfaceCreateFlagsKHR flags; + struct ANativeWindow* window; +} VkAndroidSurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR( + VkInstance instance, + const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + + +#define VK_ANDROID_external_memory_android_hardware_buffer 1 +struct AHardwareBuffer; +#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5 +#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer" +typedef struct VkAndroidHardwareBufferUsageANDROID { + VkStructureType sType; + void* pNext; + uint64_t androidHardwareBufferUsage; +} VkAndroidHardwareBufferUsageANDROID; + +typedef struct VkAndroidHardwareBufferPropertiesANDROID { + VkStructureType sType; + void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeBits; +} VkAndroidHardwareBufferPropertiesANDROID; + +typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID { + VkStructureType sType; + void* pNext; + VkFormat format; + uint64_t externalFormat; + VkFormatFeatureFlags formatFeatures; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkAndroidHardwareBufferFormatPropertiesANDROID; + +typedef struct VkImportAndroidHardwareBufferInfoANDROID { + VkStructureType sType; + const void* pNext; + struct AHardwareBuffer* buffer; +} VkImportAndroidHardwareBufferInfoANDROID; + +typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; +} VkMemoryGetAndroidHardwareBufferInfoANDROID; + +typedef struct VkExternalFormatANDROID { + VkStructureType sType; + void* pNext; + uint64_t externalFormat; +} VkExternalFormatANDROID; + +typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID { + VkStructureType sType; + void* pNext; + VkFormat format; + uint64_t externalFormat; + VkFormatFeatureFlags2 formatFeatures; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkAndroidHardwareBufferFormatProperties2ANDROID; + +typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID( + VkDevice device, + const struct AHardwareBuffer* buffer, + VkAndroidHardwareBufferPropertiesANDROID* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID( + VkDevice device, + const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, + struct AHardwareBuffer** pBuffer); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_beta.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_beta.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_beta.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_beta.h index 3422653..3753763 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_beta.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_beta.h @@ -1,990 +1,990 @@ -#ifndef VULKAN_BETA_H_ -#define VULKAN_BETA_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_KHR_video_queue 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR) -#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 3 -#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue" - -typedef enum VkQueryResultStatusKHR { - VK_QUERY_RESULT_STATUS_ERROR_KHR = -1, - VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0, - VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1, - VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkQueryResultStatusKHR; - -typedef enum VkVideoCodecOperationFlagBitsKHR { - VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002, -#endif - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoCodecOperationFlagBitsKHR; -typedef VkFlags VkVideoCodecOperationFlagsKHR; - -typedef enum VkVideoChromaSubsamplingFlagBitsKHR { - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0, - VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001, - VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002, - VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004, - VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008, - VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoChromaSubsamplingFlagBitsKHR; -typedef VkFlags VkVideoChromaSubsamplingFlagsKHR; - -typedef enum VkVideoComponentBitDepthFlagBitsKHR { - VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, - VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001, - VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004, - VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010, - VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoComponentBitDepthFlagBitsKHR; -typedef VkFlags VkVideoComponentBitDepthFlagsKHR; - -typedef enum VkVideoCapabilityFlagBitsKHR { - VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001, - VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002, - VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoCapabilityFlagBitsKHR; -typedef VkFlags VkVideoCapabilityFlagsKHR; - -typedef enum VkVideoSessionCreateFlagBitsKHR { - VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0, - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001, - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoSessionCreateFlagBitsKHR; -typedef VkFlags VkVideoSessionCreateFlagsKHR; -typedef VkFlags VkVideoBeginCodingFlagsKHR; -typedef VkFlags VkVideoEndCodingFlagsKHR; - -typedef enum VkVideoCodingControlFlagBitsKHR { - VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0, - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001, - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoCodingControlFlagBitsKHR; -typedef VkFlags VkVideoCodingControlFlagsKHR; - -typedef enum VkVideoCodingQualityPresetFlagBitsKHR { - VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001, - VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002, - VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004, - VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoCodingQualityPresetFlagBitsKHR; -typedef VkFlags VkVideoCodingQualityPresetFlagsKHR; -typedef struct VkQueueFamilyQueryResultStatusProperties2KHR { - VkStructureType sType; - void* pNext; - VkBool32 supported; -} VkQueueFamilyQueryResultStatusProperties2KHR; - -typedef struct VkVideoQueueFamilyProperties2KHR { - VkStructureType sType; - void* pNext; - VkVideoCodecOperationFlagsKHR videoCodecOperations; -} VkVideoQueueFamilyProperties2KHR; - -typedef struct VkVideoProfileKHR { - VkStructureType sType; - void* pNext; - VkVideoCodecOperationFlagBitsKHR videoCodecOperation; - VkVideoChromaSubsamplingFlagsKHR chromaSubsampling; - VkVideoComponentBitDepthFlagsKHR lumaBitDepth; - VkVideoComponentBitDepthFlagsKHR chromaBitDepth; -} VkVideoProfileKHR; - -typedef struct VkVideoProfilesKHR { - VkStructureType sType; - void* pNext; - uint32_t profileCount; - const VkVideoProfileKHR* pProfiles; -} VkVideoProfilesKHR; - -typedef struct VkVideoCapabilitiesKHR { - VkStructureType sType; - void* pNext; - VkVideoCapabilityFlagsKHR capabilityFlags; - VkDeviceSize minBitstreamBufferOffsetAlignment; - VkDeviceSize minBitstreamBufferSizeAlignment; - VkExtent2D videoPictureExtentGranularity; - VkExtent2D minExtent; - VkExtent2D maxExtent; - uint32_t maxReferencePicturesSlotsCount; - uint32_t maxReferencePicturesActiveCount; - VkExtensionProperties stdHeaderVersion; -} VkVideoCapabilitiesKHR; - -typedef struct VkPhysicalDeviceVideoFormatInfoKHR { - VkStructureType sType; - void* pNext; - VkImageUsageFlags imageUsage; - const VkVideoProfilesKHR* pVideoProfiles; -} VkPhysicalDeviceVideoFormatInfoKHR; - -typedef struct VkVideoFormatPropertiesKHR { - VkStructureType sType; - void* pNext; - VkFormat format; -} VkVideoFormatPropertiesKHR; - -typedef struct VkVideoPictureResourceKHR { - VkStructureType sType; - const void* pNext; - VkOffset2D codedOffset; - VkExtent2D codedExtent; - uint32_t baseArrayLayer; - VkImageView imageViewBinding; -} VkVideoPictureResourceKHR; - -typedef struct VkVideoReferenceSlotKHR { - VkStructureType sType; - const void* pNext; - int8_t slotIndex; - const VkVideoPictureResourceKHR* pPictureResource; -} VkVideoReferenceSlotKHR; - -typedef struct VkVideoGetMemoryPropertiesKHR { - VkStructureType sType; - const void* pNext; - uint32_t memoryBindIndex; - VkMemoryRequirements2* pMemoryRequirements; -} VkVideoGetMemoryPropertiesKHR; - -typedef struct VkVideoBindMemoryKHR { - VkStructureType sType; - const void* pNext; - uint32_t memoryBindIndex; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; - VkDeviceSize memorySize; -} VkVideoBindMemoryKHR; - -typedef struct VkVideoSessionCreateInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t queueFamilyIndex; - VkVideoSessionCreateFlagsKHR flags; - const VkVideoProfileKHR* pVideoProfile; - VkFormat pictureFormat; - VkExtent2D maxCodedExtent; - VkFormat referencePicturesFormat; - uint32_t maxReferencePicturesSlotsCount; - uint32_t maxReferencePicturesActiveCount; - const VkExtensionProperties* pStdHeaderVersion; -} VkVideoSessionCreateInfoKHR; - -typedef struct VkVideoSessionParametersCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkVideoSessionParametersKHR videoSessionParametersTemplate; - VkVideoSessionKHR videoSession; -} VkVideoSessionParametersCreateInfoKHR; - -typedef struct VkVideoSessionParametersUpdateInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t updateSequenceCount; -} VkVideoSessionParametersUpdateInfoKHR; - -typedef struct VkVideoBeginCodingInfoKHR { - VkStructureType sType; - const void* pNext; - VkVideoBeginCodingFlagsKHR flags; - VkVideoCodingQualityPresetFlagsKHR codecQualityPreset; - VkVideoSessionKHR videoSession; - VkVideoSessionParametersKHR videoSessionParameters; - uint32_t referenceSlotCount; - const VkVideoReferenceSlotKHR* pReferenceSlots; -} VkVideoBeginCodingInfoKHR; - -typedef struct VkVideoEndCodingInfoKHR { - VkStructureType sType; - const void* pNext; - VkVideoEndCodingFlagsKHR flags; -} VkVideoEndCodingInfoKHR; - -typedef struct VkVideoCodingControlInfoKHR { - VkStructureType sType; - const void* pNext; - VkVideoCodingControlFlagsKHR flags; -} VkVideoCodingControlInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); -typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); -typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); -typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories); -typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); -typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); -typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); -typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); -typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR( - VkPhysicalDevice physicalDevice, - const VkVideoProfileKHR* pVideoProfile, - VkVideoCapabilitiesKHR* pCapabilities); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, - uint32_t* pVideoFormatPropertyCount, - VkVideoFormatPropertiesKHR* pVideoFormatProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR( - VkDevice device, - const VkVideoSessionCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkVideoSessionKHR* pVideoSession); - -VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR( - VkDevice device, - VkVideoSessionKHR videoSession, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR( - VkDevice device, - VkVideoSessionKHR videoSession, - uint32_t* pVideoSessionMemoryRequirementsCount, - VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR( - VkDevice device, - VkVideoSessionKHR videoSession, - uint32_t videoSessionBindMemoryCount, - const VkVideoBindMemoryKHR* pVideoSessionBindMemories); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR( - VkDevice device, - const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkVideoSessionParametersKHR* pVideoSessionParameters); - -VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR( - VkDevice device, - VkVideoSessionParametersKHR videoSessionParameters, - const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); - -VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR( - VkDevice device, - VkVideoSessionParametersKHR videoSessionParameters, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR( - VkCommandBuffer commandBuffer, - const VkVideoBeginCodingInfoKHR* pBeginInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR( - VkCommandBuffer commandBuffer, - const VkVideoEndCodingInfoKHR* pEndCodingInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR( - VkCommandBuffer commandBuffer, - const VkVideoCodingControlInfoKHR* pCodingControlInfo); -#endif - - -#define VK_KHR_video_decode_queue 1 -#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 4 -#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue" - -typedef enum VkVideoDecodeCapabilityFlagBitsKHR { - VK_VIDEO_DECODE_CAPABILITY_DEFAULT_KHR = 0, - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001, - VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002, - VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoDecodeCapabilityFlagBitsKHR; -typedef VkFlags VkVideoDecodeCapabilityFlagsKHR; - -typedef enum VkVideoDecodeFlagBitsKHR { - VK_VIDEO_DECODE_DEFAULT_KHR = 0, - VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001, - VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoDecodeFlagBitsKHR; -typedef VkFlags VkVideoDecodeFlagsKHR; -typedef struct VkVideoDecodeCapabilitiesKHR { - VkStructureType sType; - void* pNext; - VkVideoDecodeCapabilityFlagsKHR flags; -} VkVideoDecodeCapabilitiesKHR; - -typedef struct VkVideoDecodeInfoKHR { - VkStructureType sType; - const void* pNext; - VkVideoDecodeFlagsKHR flags; - VkBuffer srcBuffer; - VkDeviceSize srcBufferOffset; - VkDeviceSize srcBufferRange; - VkVideoPictureResourceKHR dstPictureResource; - const VkVideoReferenceSlotKHR* pSetupReferenceSlot; - uint32_t referenceSlotCount; - const VkVideoReferenceSlotKHR* pReferenceSlots; -} VkVideoDecodeInfoKHR; - -typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR( - VkCommandBuffer commandBuffer, - const VkVideoDecodeInfoKHR* pFrameInfo); -#endif - - -#define VK_KHR_portability_subset 1 -#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 -#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" -typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 constantAlphaColorBlendFactors; - VkBool32 events; - VkBool32 imageViewFormatReinterpretation; - VkBool32 imageViewFormatSwizzle; - VkBool32 imageView2DOn3DImage; - VkBool32 multisampleArrayImage; - VkBool32 mutableComparisonSamplers; - VkBool32 pointPolygons; - VkBool32 samplerMipLodBias; - VkBool32 separateStencilMaskRef; - VkBool32 shaderSampleRateInterpolationFunctions; - VkBool32 tessellationIsolines; - VkBool32 tessellationPointMode; - VkBool32 triangleFans; - VkBool32 vertexAttributeAccessBeyondStride; -} VkPhysicalDevicePortabilitySubsetFeaturesKHR; - -typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { - VkStructureType sType; - void* pNext; - uint32_t minVertexInputBindingStrideAlignment; -} VkPhysicalDevicePortabilitySubsetPropertiesKHR; - - - -#define VK_KHR_video_encode_queue 1 -#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 5 -#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" - -typedef enum VkVideoEncodeFlagBitsKHR { - VK_VIDEO_ENCODE_DEFAULT_KHR = 0, - VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001, - VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoEncodeFlagBitsKHR; -typedef VkFlags VkVideoEncodeFlagsKHR; - -typedef enum VkVideoEncodeCapabilityFlagBitsKHR { - VK_VIDEO_ENCODE_CAPABILITY_DEFAULT_KHR = 0, - VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001, - VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoEncodeCapabilityFlagBitsKHR; -typedef VkFlags VkVideoEncodeCapabilityFlagsKHR; - -typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoEncodeRateControlModeFlagBitsKHR; -typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; - -typedef enum VkVideoEncodeRateControlFlagBitsKHR { - VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0, - VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR = 0x00000001, - VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkVideoEncodeRateControlFlagBitsKHR; -typedef VkFlags VkVideoEncodeRateControlFlagsKHR; -typedef struct VkVideoEncodeInfoKHR { - VkStructureType sType; - const void* pNext; - VkVideoEncodeFlagsKHR flags; - uint32_t qualityLevel; - VkBuffer dstBitstreamBuffer; - VkDeviceSize dstBitstreamBufferOffset; - VkDeviceSize dstBitstreamBufferMaxRange; - VkVideoPictureResourceKHR srcPictureResource; - const VkVideoReferenceSlotKHR* pSetupReferenceSlot; - uint32_t referenceSlotCount; - const VkVideoReferenceSlotKHR* pReferenceSlots; - uint32_t precedingExternallyEncodedBytes; -} VkVideoEncodeInfoKHR; - -typedef struct VkVideoEncodeCapabilitiesKHR { - VkStructureType sType; - void* pNext; - VkVideoEncodeCapabilityFlagsKHR flags; - VkVideoEncodeRateControlModeFlagsKHR rateControlModes; - uint8_t rateControlLayerCount; - uint8_t qualityLevelCount; - VkExtent2D inputImageDataFillAlignment; -} VkVideoEncodeCapabilitiesKHR; - -typedef struct VkVideoEncodeRateControlLayerInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t averageBitrate; - uint32_t maxBitrate; - uint32_t frameRateNumerator; - uint32_t frameRateDenominator; - uint32_t virtualBufferSizeInMs; - uint32_t initialVirtualBufferSizeInMs; -} VkVideoEncodeRateControlLayerInfoKHR; - -typedef struct VkVideoEncodeRateControlInfoKHR { - VkStructureType sType; - const void* pNext; - VkVideoEncodeRateControlFlagsKHR flags; - VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; - uint8_t layerCount; - const VkVideoEncodeRateControlLayerInfoKHR* pLayerConfigs; -} VkVideoEncodeRateControlInfoKHR; - -typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( - VkCommandBuffer commandBuffer, - const VkVideoEncodeInfoKHR* pEncodeInfo); -#endif - - -#define VK_EXT_video_encode_h264 1 -#include "vk_video/vulkan_video_codec_h264std.h" -#include "vk_video/vulkan_video_codec_h264std_encode.h" -#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 7 -#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" - -typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { - VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008, - VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010, - VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, - VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040, - VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080, - VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000, - VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000, - VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000, - VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000, - VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000, - VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000, - VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000, - VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000, - VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH264CapabilityFlagBitsEXT; -typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; - -typedef enum VkVideoEncodeH264InputModeFlagBitsEXT { - VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH264InputModeFlagBitsEXT; -typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT; - -typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT { - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH264OutputModeFlagBitsEXT; -typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT; - -typedef enum VkVideoEncodeH264RateControlStructureFlagBitsEXT { - VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, - VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH264RateControlStructureFlagBitsEXT; -typedef VkFlags VkVideoEncodeH264RateControlStructureFlagsEXT; -typedef struct VkVideoEncodeH264CapabilitiesEXT { - VkStructureType sType; - void* pNext; - VkVideoEncodeH264CapabilityFlagsEXT flags; - VkVideoEncodeH264InputModeFlagsEXT inputModeFlags; - VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags; - uint8_t maxPPictureL0ReferenceCount; - uint8_t maxBPictureL0ReferenceCount; - uint8_t maxL1ReferenceCount; - VkBool32 motionVectorsOverPicBoundariesFlag; - uint32_t maxBytesPerPicDenom; - uint32_t maxBitsPerMbDenom; - uint32_t log2MaxMvLengthHorizontal; - uint32_t log2MaxMvLengthVertical; -} VkVideoEncodeH264CapabilitiesEXT; - -typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t spsStdCount; - const StdVideoH264SequenceParameterSet* pSpsStd; - uint32_t ppsStdCount; - const StdVideoH264PictureParameterSet* pPpsStd; -} VkVideoEncodeH264SessionParametersAddInfoEXT; - -typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t maxSpsStdCount; - uint32_t maxPpsStdCount; - const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; -} VkVideoEncodeH264SessionParametersCreateInfoEXT; - -typedef struct VkVideoEncodeH264DpbSlotInfoEXT { - VkStructureType sType; - const void* pNext; - int8_t slotIndex; - const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo; -} VkVideoEncodeH264DpbSlotInfoEXT; - -typedef struct VkVideoEncodeH264ReferenceListsEXT { - VkStructureType sType; - const void* pNext; - uint8_t referenceList0EntryCount; - const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList0Entries; - uint8_t referenceList1EntryCount; - const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList1Entries; - const StdVideoEncodeH264RefMemMgmtCtrlOperations* pMemMgmtCtrlOperations; -} VkVideoEncodeH264ReferenceListsEXT; - -typedef struct VkVideoEncodeH264NaluSliceEXT { - VkStructureType sType; - const void* pNext; - uint32_t mbCount; - const VkVideoEncodeH264ReferenceListsEXT* pReferenceFinalLists; - const StdVideoEncodeH264SliceHeader* pSliceHeaderStd; -} VkVideoEncodeH264NaluSliceEXT; - -typedef struct VkVideoEncodeH264VclFrameInfoEXT { - VkStructureType sType; - const void* pNext; - const VkVideoEncodeH264ReferenceListsEXT* pReferenceFinalLists; - uint32_t naluSliceEntryCount; - const VkVideoEncodeH264NaluSliceEXT* pNaluSliceEntries; - const StdVideoEncodeH264PictureInfo* pCurrentPictureInfo; -} VkVideoEncodeH264VclFrameInfoEXT; - -typedef struct VkVideoEncodeH264EmitPictureParametersEXT { - VkStructureType sType; - const void* pNext; - uint8_t spsId; - VkBool32 emitSpsEnable; - uint32_t ppsIdEntryCount; - const uint8_t* ppsIdEntries; -} VkVideoEncodeH264EmitPictureParametersEXT; - -typedef struct VkVideoEncodeH264ProfileEXT { - VkStructureType sType; - const void* pNext; - StdVideoH264ProfileIdc stdProfileIdc; -} VkVideoEncodeH264ProfileEXT; - -typedef struct VkVideoEncodeH264RateControlInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t gopFrameCount; - uint32_t idrPeriod; - uint32_t consecutiveBFrameCount; - VkVideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure; - uint8_t temporalLayerCount; -} VkVideoEncodeH264RateControlInfoEXT; - -typedef struct VkVideoEncodeH264QpEXT { - int32_t qpI; - int32_t qpP; - int32_t qpB; -} VkVideoEncodeH264QpEXT; - -typedef struct VkVideoEncodeH264FrameSizeEXT { - uint32_t frameISize; - uint32_t framePSize; - uint32_t frameBSize; -} VkVideoEncodeH264FrameSizeEXT; - -typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { - VkStructureType sType; - const void* pNext; - uint8_t temporalLayerId; - VkBool32 useInitialRcQp; - VkVideoEncodeH264QpEXT initialRcQp; - VkBool32 useMinQp; - VkVideoEncodeH264QpEXT minQp; - VkBool32 useMaxQp; - VkVideoEncodeH264QpEXT maxQp; - VkBool32 useMaxFrameSize; - VkVideoEncodeH264FrameSizeEXT maxFrameSize; -} VkVideoEncodeH264RateControlLayerInfoEXT; - - - -#define VK_EXT_video_encode_h265 1 -#include "vk_video/vulkan_video_codec_h265std.h" -#include "vk_video/vulkan_video_codec_h265std_encode.h" -#define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 7 -#define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" - -typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT { - VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0x00000008, - VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0x00000010, - VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, - VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0x00000040, - VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000080, - VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0x00000100, - VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0x00000200, - VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0x00000400, - VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0x00000800, - VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00001000, - VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0x00002000, - VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00004000, - VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0x00008000, - VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0x00010000, - VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0x00020000, - VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0x00040000, - VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0x00080000, - VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0x00100000, - VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0x00200000, - VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00400000, - VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0x00800000, - VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x01000000, - VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x02000000, - VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH265CapabilityFlagBitsEXT; -typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; - -typedef enum VkVideoEncodeH265InputModeFlagBitsEXT { - VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH265InputModeFlagBitsEXT; -typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT; - -typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT { - VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH265OutputModeFlagBitsEXT; -typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT; - -typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { - VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH265CtbSizeFlagBitsEXT; -typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; - -typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT { - VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0x00000008, - VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH265TransformBlockSizeFlagBitsEXT; -typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT; - -typedef enum VkVideoEncodeH265RateControlStructureFlagBitsEXT { - VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, - VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH265RateControlStructureFlagBitsEXT; -typedef VkFlags VkVideoEncodeH265RateControlStructureFlagsEXT; -typedef struct VkVideoEncodeH265CapabilitiesEXT { - VkStructureType sType; - void* pNext; - VkVideoEncodeH265CapabilityFlagsEXT flags; - VkVideoEncodeH265InputModeFlagsEXT inputModeFlags; - VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags; - VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; - VkVideoEncodeH265TransformBlockSizeFlagsEXT transformBlockSizes; - uint8_t maxPPictureL0ReferenceCount; - uint8_t maxBPictureL0ReferenceCount; - uint8_t maxL1ReferenceCount; - uint8_t maxSubLayersCount; - uint8_t minLog2MinLumaCodingBlockSizeMinus3; - uint8_t maxLog2MinLumaCodingBlockSizeMinus3; - uint8_t minLog2MinLumaTransformBlockSizeMinus2; - uint8_t maxLog2MinLumaTransformBlockSizeMinus2; - uint8_t minMaxTransformHierarchyDepthInter; - uint8_t maxMaxTransformHierarchyDepthInter; - uint8_t minMaxTransformHierarchyDepthIntra; - uint8_t maxMaxTransformHierarchyDepthIntra; - uint8_t maxDiffCuQpDeltaDepth; - uint8_t minMaxNumMergeCand; - uint8_t maxMaxNumMergeCand; -} VkVideoEncodeH265CapabilitiesEXT; - -typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t vpsStdCount; - const StdVideoH265VideoParameterSet* pVpsStd; - uint32_t spsStdCount; - const StdVideoH265SequenceParameterSet* pSpsStd; - uint32_t ppsStdCount; - const StdVideoH265PictureParameterSet* pPpsStd; -} VkVideoEncodeH265SessionParametersAddInfoEXT; - -typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t maxVpsStdCount; - uint32_t maxSpsStdCount; - uint32_t maxPpsStdCount; - const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; -} VkVideoEncodeH265SessionParametersCreateInfoEXT; - -typedef struct VkVideoEncodeH265DpbSlotInfoEXT { - VkStructureType sType; - const void* pNext; - int8_t slotIndex; - const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; -} VkVideoEncodeH265DpbSlotInfoEXT; - -typedef struct VkVideoEncodeH265ReferenceListsEXT { - VkStructureType sType; - const void* pNext; - uint8_t referenceList0EntryCount; - const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries; - uint8_t referenceList1EntryCount; - const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries; - const StdVideoEncodeH265ReferenceModifications* pReferenceModifications; -} VkVideoEncodeH265ReferenceListsEXT; - -typedef struct VkVideoEncodeH265NaluSliceSegmentEXT { - VkStructureType sType; - const void* pNext; - uint32_t ctbCount; - const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; - const StdVideoEncodeH265SliceSegmentHeader* pSliceSegmentHeaderStd; -} VkVideoEncodeH265NaluSliceSegmentEXT; - -typedef struct VkVideoEncodeH265VclFrameInfoEXT { - VkStructureType sType; - const void* pNext; - const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; - uint32_t naluSliceSegmentEntryCount; - const VkVideoEncodeH265NaluSliceSegmentEXT* pNaluSliceSegmentEntries; - const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo; -} VkVideoEncodeH265VclFrameInfoEXT; - -typedef struct VkVideoEncodeH265EmitPictureParametersEXT { - VkStructureType sType; - const void* pNext; - uint8_t vpsId; - uint8_t spsId; - VkBool32 emitVpsEnable; - VkBool32 emitSpsEnable; - uint32_t ppsIdEntryCount; - const uint8_t* ppsIdEntries; -} VkVideoEncodeH265EmitPictureParametersEXT; - -typedef struct VkVideoEncodeH265ProfileEXT { - VkStructureType sType; - const void* pNext; - StdVideoH265ProfileIdc stdProfileIdc; -} VkVideoEncodeH265ProfileEXT; - -typedef struct VkVideoEncodeH265RateControlInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t gopFrameCount; - uint32_t idrPeriod; - uint32_t consecutiveBFrameCount; - VkVideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure; - uint8_t subLayerCount; -} VkVideoEncodeH265RateControlInfoEXT; - -typedef struct VkVideoEncodeH265QpEXT { - int32_t qpI; - int32_t qpP; - int32_t qpB; -} VkVideoEncodeH265QpEXT; - -typedef struct VkVideoEncodeH265FrameSizeEXT { - uint32_t frameISize; - uint32_t framePSize; - uint32_t frameBSize; -} VkVideoEncodeH265FrameSizeEXT; - -typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { - VkStructureType sType; - const void* pNext; - uint8_t temporalId; - VkBool32 useInitialRcQp; - VkVideoEncodeH265QpEXT initialRcQp; - VkBool32 useMinQp; - VkVideoEncodeH265QpEXT minQp; - VkBool32 useMaxQp; - VkVideoEncodeH265QpEXT maxQp; - VkBool32 useMaxFrameSize; - VkVideoEncodeH265FrameSizeEXT maxFrameSize; -} VkVideoEncodeH265RateControlLayerInfoEXT; - - - -#define VK_EXT_video_decode_h264 1 -#include "vk_video/vulkan_video_codec_h264std_decode.h" -#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 5 -#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264" - -typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT { - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0, - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001, - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002, - VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoDecodeH264PictureLayoutFlagBitsEXT; -typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT; -typedef struct VkVideoDecodeH264ProfileEXT { - VkStructureType sType; - const void* pNext; - StdVideoH264ProfileIdc stdProfileIdc; - VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout; -} VkVideoDecodeH264ProfileEXT; - -typedef struct VkVideoDecodeH264CapabilitiesEXT { - VkStructureType sType; - void* pNext; - StdVideoH264Level maxLevel; - VkOffset2D fieldOffsetGranularity; -} VkVideoDecodeH264CapabilitiesEXT; - -typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t spsStdCount; - const StdVideoH264SequenceParameterSet* pSpsStd; - uint32_t ppsStdCount; - const StdVideoH264PictureParameterSet* pPpsStd; -} VkVideoDecodeH264SessionParametersAddInfoEXT; - -typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t maxSpsStdCount; - uint32_t maxPpsStdCount; - const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo; -} VkVideoDecodeH264SessionParametersCreateInfoEXT; - -typedef struct VkVideoDecodeH264PictureInfoEXT { - VkStructureType sType; - const void* pNext; - const StdVideoDecodeH264PictureInfo* pStdPictureInfo; - uint32_t slicesCount; - const uint32_t* pSlicesDataOffsets; -} VkVideoDecodeH264PictureInfoEXT; - -typedef struct VkVideoDecodeH264MvcEXT { - VkStructureType sType; - const void* pNext; - const StdVideoDecodeH264Mvc* pStdMvc; -} VkVideoDecodeH264MvcEXT; - -typedef struct VkVideoDecodeH264DpbSlotInfoEXT { - VkStructureType sType; - const void* pNext; - const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo; -} VkVideoDecodeH264DpbSlotInfoEXT; - - - -#define VK_EXT_video_decode_h265 1 -#include "vk_video/vulkan_video_codec_h265std_decode.h" -#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 3 -#define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265" -typedef struct VkVideoDecodeH265ProfileEXT { - VkStructureType sType; - const void* pNext; - StdVideoH265ProfileIdc stdProfileIdc; -} VkVideoDecodeH265ProfileEXT; - -typedef struct VkVideoDecodeH265CapabilitiesEXT { - VkStructureType sType; - void* pNext; - StdVideoH265Level maxLevel; -} VkVideoDecodeH265CapabilitiesEXT; - -typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t vpsStdCount; - const StdVideoH265VideoParameterSet* pVpsStd; - uint32_t spsStdCount; - const StdVideoH265SequenceParameterSet* pSpsStd; - uint32_t ppsStdCount; - const StdVideoH265PictureParameterSet* pPpsStd; -} VkVideoDecodeH265SessionParametersAddInfoEXT; - -typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t maxVpsStdCount; - uint32_t maxSpsStdCount; - uint32_t maxPpsStdCount; - const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo; -} VkVideoDecodeH265SessionParametersCreateInfoEXT; - -typedef struct VkVideoDecodeH265PictureInfoEXT { - VkStructureType sType; - const void* pNext; - StdVideoDecodeH265PictureInfo* pStdPictureInfo; - uint32_t slicesCount; - const uint32_t* pSlicesDataOffsets; -} VkVideoDecodeH265PictureInfoEXT; - -typedef struct VkVideoDecodeH265DpbSlotInfoEXT { - VkStructureType sType; - const void* pNext; - const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo; -} VkVideoDecodeH265DpbSlotInfoEXT; - - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_BETA_H_ +#define VULKAN_BETA_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_KHR_video_queue 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR) +#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 3 +#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue" + +typedef enum VkQueryResultStatusKHR { + VK_QUERY_RESULT_STATUS_ERROR_KHR = -1, + VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0, + VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1, + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkQueryResultStatusKHR; + +typedef enum VkVideoCodecOperationFlagBitsKHR { + VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002, +#endif + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodecOperationFlagBitsKHR; +typedef VkFlags VkVideoCodecOperationFlagsKHR; + +typedef enum VkVideoChromaSubsamplingFlagBitsKHR { + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0, + VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001, + VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002, + VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004, + VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008, + VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoChromaSubsamplingFlagBitsKHR; +typedef VkFlags VkVideoChromaSubsamplingFlagsKHR; + +typedef enum VkVideoComponentBitDepthFlagBitsKHR { + VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, + VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001, + VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004, + VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010, + VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoComponentBitDepthFlagBitsKHR; +typedef VkFlags VkVideoComponentBitDepthFlagsKHR; + +typedef enum VkVideoCapabilityFlagBitsKHR { + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001, + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002, + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCapabilityFlagBitsKHR; +typedef VkFlags VkVideoCapabilityFlagsKHR; + +typedef enum VkVideoSessionCreateFlagBitsKHR { + VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0, + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001, + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoSessionCreateFlagBitsKHR; +typedef VkFlags VkVideoSessionCreateFlagsKHR; +typedef VkFlags VkVideoBeginCodingFlagsKHR; +typedef VkFlags VkVideoEndCodingFlagsKHR; + +typedef enum VkVideoCodingControlFlagBitsKHR { + VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0, + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001, + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodingControlFlagBitsKHR; +typedef VkFlags VkVideoCodingControlFlagsKHR; + +typedef enum VkVideoCodingQualityPresetFlagBitsKHR { + VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001, + VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002, + VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004, + VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodingQualityPresetFlagBitsKHR; +typedef VkFlags VkVideoCodingQualityPresetFlagsKHR; +typedef struct VkQueueFamilyQueryResultStatusProperties2KHR { + VkStructureType sType; + void* pNext; + VkBool32 supported; +} VkQueueFamilyQueryResultStatusProperties2KHR; + +typedef struct VkVideoQueueFamilyProperties2KHR { + VkStructureType sType; + void* pNext; + VkVideoCodecOperationFlagsKHR videoCodecOperations; +} VkVideoQueueFamilyProperties2KHR; + +typedef struct VkVideoProfileKHR { + VkStructureType sType; + void* pNext; + VkVideoCodecOperationFlagBitsKHR videoCodecOperation; + VkVideoChromaSubsamplingFlagsKHR chromaSubsampling; + VkVideoComponentBitDepthFlagsKHR lumaBitDepth; + VkVideoComponentBitDepthFlagsKHR chromaBitDepth; +} VkVideoProfileKHR; + +typedef struct VkVideoProfilesKHR { + VkStructureType sType; + void* pNext; + uint32_t profileCount; + const VkVideoProfileKHR* pProfiles; +} VkVideoProfilesKHR; + +typedef struct VkVideoCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoCapabilityFlagsKHR capabilityFlags; + VkDeviceSize minBitstreamBufferOffsetAlignment; + VkDeviceSize minBitstreamBufferSizeAlignment; + VkExtent2D videoPictureExtentGranularity; + VkExtent2D minExtent; + VkExtent2D maxExtent; + uint32_t maxReferencePicturesSlotsCount; + uint32_t maxReferencePicturesActiveCount; + VkExtensionProperties stdHeaderVersion; +} VkVideoCapabilitiesKHR; + +typedef struct VkPhysicalDeviceVideoFormatInfoKHR { + VkStructureType sType; + void* pNext; + VkImageUsageFlags imageUsage; + const VkVideoProfilesKHR* pVideoProfiles; +} VkPhysicalDeviceVideoFormatInfoKHR; + +typedef struct VkVideoFormatPropertiesKHR { + VkStructureType sType; + void* pNext; + VkFormat format; +} VkVideoFormatPropertiesKHR; + +typedef struct VkVideoPictureResourceKHR { + VkStructureType sType; + const void* pNext; + VkOffset2D codedOffset; + VkExtent2D codedExtent; + uint32_t baseArrayLayer; + VkImageView imageViewBinding; +} VkVideoPictureResourceKHR; + +typedef struct VkVideoReferenceSlotKHR { + VkStructureType sType; + const void* pNext; + int8_t slotIndex; + const VkVideoPictureResourceKHR* pPictureResource; +} VkVideoReferenceSlotKHR; + +typedef struct VkVideoGetMemoryPropertiesKHR { + VkStructureType sType; + const void* pNext; + uint32_t memoryBindIndex; + VkMemoryRequirements2* pMemoryRequirements; +} VkVideoGetMemoryPropertiesKHR; + +typedef struct VkVideoBindMemoryKHR { + VkStructureType sType; + const void* pNext; + uint32_t memoryBindIndex; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkDeviceSize memorySize; +} VkVideoBindMemoryKHR; + +typedef struct VkVideoSessionCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t queueFamilyIndex; + VkVideoSessionCreateFlagsKHR flags; + const VkVideoProfileKHR* pVideoProfile; + VkFormat pictureFormat; + VkExtent2D maxCodedExtent; + VkFormat referencePicturesFormat; + uint32_t maxReferencePicturesSlotsCount; + uint32_t maxReferencePicturesActiveCount; + const VkExtensionProperties* pStdHeaderVersion; +} VkVideoSessionCreateInfoKHR; + +typedef struct VkVideoSessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoSessionParametersKHR videoSessionParametersTemplate; + VkVideoSessionKHR videoSession; +} VkVideoSessionParametersCreateInfoKHR; + +typedef struct VkVideoSessionParametersUpdateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t updateSequenceCount; +} VkVideoSessionParametersUpdateInfoKHR; + +typedef struct VkVideoBeginCodingInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoBeginCodingFlagsKHR flags; + VkVideoCodingQualityPresetFlagsKHR codecQualityPreset; + VkVideoSessionKHR videoSession; + VkVideoSessionParametersKHR videoSessionParameters; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotKHR* pReferenceSlots; +} VkVideoBeginCodingInfoKHR; + +typedef struct VkVideoEndCodingInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEndCodingFlagsKHR flags; +} VkVideoEndCodingInfoKHR; + +typedef struct VkVideoCodingControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoCodingControlFlagsKHR flags; +} VkVideoCodingControlInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); +typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories); +typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); +typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); +typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + const VkVideoProfileKHR* pVideoProfile, + VkVideoCapabilitiesKHR* pCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, + uint32_t* pVideoFormatPropertyCount, + VkVideoFormatPropertiesKHR* pVideoFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR( + VkDevice device, + const VkVideoSessionCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkVideoSessionKHR* pVideoSession); + +VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t* pVideoSessionMemoryRequirementsCount, + VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t videoSessionBindMemoryCount, + const VkVideoBindMemoryKHR* pVideoSessionBindMemories); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR( + VkDevice device, + const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkVideoSessionParametersKHR* pVideoSessionParameters); + +VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR( + VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); + +VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR( + VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoBeginCodingInfoKHR* pBeginInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoEndCodingInfoKHR* pEndCodingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoCodingControlInfoKHR* pCodingControlInfo); +#endif + + +#define VK_KHR_video_decode_queue 1 +#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 4 +#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue" + +typedef enum VkVideoDecodeCapabilityFlagBitsKHR { + VK_VIDEO_DECODE_CAPABILITY_DEFAULT_KHR = 0, + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001, + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002, + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoDecodeCapabilityFlagBitsKHR; +typedef VkFlags VkVideoDecodeCapabilityFlagsKHR; + +typedef enum VkVideoDecodeFlagBitsKHR { + VK_VIDEO_DECODE_DEFAULT_KHR = 0, + VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001, + VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoDecodeFlagBitsKHR; +typedef VkFlags VkVideoDecodeFlagsKHR; +typedef struct VkVideoDecodeCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoDecodeCapabilityFlagsKHR flags; +} VkVideoDecodeCapabilitiesKHR; + +typedef struct VkVideoDecodeInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoDecodeFlagsKHR flags; + VkBuffer srcBuffer; + VkDeviceSize srcBufferOffset; + VkDeviceSize srcBufferRange; + VkVideoPictureResourceKHR dstPictureResource; + const VkVideoReferenceSlotKHR* pSetupReferenceSlot; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotKHR* pReferenceSlots; +} VkVideoDecodeInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR( + VkCommandBuffer commandBuffer, + const VkVideoDecodeInfoKHR* pFrameInfo); +#endif + + +#define VK_KHR_portability_subset 1 +#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 +#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" +typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 constantAlphaColorBlendFactors; + VkBool32 events; + VkBool32 imageViewFormatReinterpretation; + VkBool32 imageViewFormatSwizzle; + VkBool32 imageView2DOn3DImage; + VkBool32 multisampleArrayImage; + VkBool32 mutableComparisonSamplers; + VkBool32 pointPolygons; + VkBool32 samplerMipLodBias; + VkBool32 separateStencilMaskRef; + VkBool32 shaderSampleRateInterpolationFunctions; + VkBool32 tessellationIsolines; + VkBool32 tessellationPointMode; + VkBool32 triangleFans; + VkBool32 vertexAttributeAccessBeyondStride; +} VkPhysicalDevicePortabilitySubsetFeaturesKHR; + +typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t minVertexInputBindingStrideAlignment; +} VkPhysicalDevicePortabilitySubsetPropertiesKHR; + + + +#define VK_KHR_video_encode_queue 1 +#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 5 +#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" + +typedef enum VkVideoEncodeFlagBitsKHR { + VK_VIDEO_ENCODE_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeFlagBitsKHR; +typedef VkFlags VkVideoEncodeFlagsKHR; + +typedef enum VkVideoEncodeCapabilityFlagBitsKHR { + VK_VIDEO_ENCODE_CAPABILITY_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeCapabilityFlagBitsKHR; +typedef VkFlags VkVideoEncodeCapabilityFlagsKHR; + +typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeRateControlModeFlagBitsKHR; +typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; + +typedef enum VkVideoEncodeRateControlFlagBitsKHR { + VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeRateControlFlagBitsKHR; +typedef VkFlags VkVideoEncodeRateControlFlagsKHR; +typedef struct VkVideoEncodeInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeFlagsKHR flags; + uint32_t qualityLevel; + VkBuffer dstBitstreamBuffer; + VkDeviceSize dstBitstreamBufferOffset; + VkDeviceSize dstBitstreamBufferMaxRange; + VkVideoPictureResourceKHR srcPictureResource; + const VkVideoReferenceSlotKHR* pSetupReferenceSlot; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotKHR* pReferenceSlots; + uint32_t precedingExternallyEncodedBytes; +} VkVideoEncodeInfoKHR; + +typedef struct VkVideoEncodeCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeCapabilityFlagsKHR flags; + VkVideoEncodeRateControlModeFlagsKHR rateControlModes; + uint8_t rateControlLayerCount; + uint8_t qualityLevelCount; + VkExtent2D inputImageDataFillAlignment; +} VkVideoEncodeCapabilitiesKHR; + +typedef struct VkVideoEncodeRateControlLayerInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t averageBitrate; + uint32_t maxBitrate; + uint32_t frameRateNumerator; + uint32_t frameRateDenominator; + uint32_t virtualBufferSizeInMs; + uint32_t initialVirtualBufferSizeInMs; +} VkVideoEncodeRateControlLayerInfoKHR; + +typedef struct VkVideoEncodeRateControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeRateControlFlagsKHR flags; + VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; + uint8_t layerCount; + const VkVideoEncodeRateControlLayerInfoKHR* pLayerConfigs; +} VkVideoEncodeRateControlInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( + VkCommandBuffer commandBuffer, + const VkVideoEncodeInfoKHR* pEncodeInfo); +#endif + + +#define VK_EXT_video_encode_h264 1 +#include "vk_video/vulkan_video_codec_h264std.h" +#include "vk_video/vulkan_video_codec_h264std_encode.h" +#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 7 +#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" + +typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { + VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, + VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040, + VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080, + VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100, + VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200, + VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400, + VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800, + VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000, + VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000, + VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000, + VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000, + VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000, + VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000, + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000, + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000, + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264CapabilityFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; + +typedef enum VkVideoEncodeH264InputModeFlagBitsEXT { + VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264InputModeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT; + +typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT { + VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264OutputModeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT; + +typedef enum VkVideoEncodeH264RateControlStructureFlagBitsEXT { + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264RateControlStructureFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264RateControlStructureFlagsEXT; +typedef struct VkVideoEncodeH264CapabilitiesEXT { + VkStructureType sType; + void* pNext; + VkVideoEncodeH264CapabilityFlagsEXT flags; + VkVideoEncodeH264InputModeFlagsEXT inputModeFlags; + VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags; + uint8_t maxPPictureL0ReferenceCount; + uint8_t maxBPictureL0ReferenceCount; + uint8_t maxL1ReferenceCount; + VkBool32 motionVectorsOverPicBoundariesFlag; + uint32_t maxBytesPerPicDenom; + uint32_t maxBitsPerMbDenom; + uint32_t log2MaxMvLengthHorizontal; + uint32_t log2MaxMvLengthVertical; +} VkVideoEncodeH264CapabilitiesEXT; + +typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t spsStdCount; + const StdVideoH264SequenceParameterSet* pSpsStd; + uint32_t ppsStdCount; + const StdVideoH264PictureParameterSet* pPpsStd; +} VkVideoEncodeH264SessionParametersAddInfoEXT; + +typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxSpsStdCount; + uint32_t maxPpsStdCount; + const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoEncodeH264SessionParametersCreateInfoEXT; + +typedef struct VkVideoEncodeH264DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + int8_t slotIndex; + const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo; +} VkVideoEncodeH264DpbSlotInfoEXT; + +typedef struct VkVideoEncodeH264ReferenceListsEXT { + VkStructureType sType; + const void* pNext; + uint8_t referenceList0EntryCount; + const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList0Entries; + uint8_t referenceList1EntryCount; + const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList1Entries; + const StdVideoEncodeH264RefMemMgmtCtrlOperations* pMemMgmtCtrlOperations; +} VkVideoEncodeH264ReferenceListsEXT; + +typedef struct VkVideoEncodeH264NaluSliceEXT { + VkStructureType sType; + const void* pNext; + uint32_t mbCount; + const VkVideoEncodeH264ReferenceListsEXT* pReferenceFinalLists; + const StdVideoEncodeH264SliceHeader* pSliceHeaderStd; +} VkVideoEncodeH264NaluSliceEXT; + +typedef struct VkVideoEncodeH264VclFrameInfoEXT { + VkStructureType sType; + const void* pNext; + const VkVideoEncodeH264ReferenceListsEXT* pReferenceFinalLists; + uint32_t naluSliceEntryCount; + const VkVideoEncodeH264NaluSliceEXT* pNaluSliceEntries; + const StdVideoEncodeH264PictureInfo* pCurrentPictureInfo; +} VkVideoEncodeH264VclFrameInfoEXT; + +typedef struct VkVideoEncodeH264EmitPictureParametersEXT { + VkStructureType sType; + const void* pNext; + uint8_t spsId; + VkBool32 emitSpsEnable; + uint32_t ppsIdEntryCount; + const uint8_t* ppsIdEntries; +} VkVideoEncodeH264EmitPictureParametersEXT; + +typedef struct VkVideoEncodeH264ProfileEXT { + VkStructureType sType; + const void* pNext; + StdVideoH264ProfileIdc stdProfileIdc; +} VkVideoEncodeH264ProfileEXT; + +typedef struct VkVideoEncodeH264RateControlInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + VkVideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure; + uint8_t temporalLayerCount; +} VkVideoEncodeH264RateControlInfoEXT; + +typedef struct VkVideoEncodeH264QpEXT { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH264QpEXT; + +typedef struct VkVideoEncodeH264FrameSizeEXT { + uint32_t frameISize; + uint32_t framePSize; + uint32_t frameBSize; +} VkVideoEncodeH264FrameSizeEXT; + +typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { + VkStructureType sType; + const void* pNext; + uint8_t temporalLayerId; + VkBool32 useInitialRcQp; + VkVideoEncodeH264QpEXT initialRcQp; + VkBool32 useMinQp; + VkVideoEncodeH264QpEXT minQp; + VkBool32 useMaxQp; + VkVideoEncodeH264QpEXT maxQp; + VkBool32 useMaxFrameSize; + VkVideoEncodeH264FrameSizeEXT maxFrameSize; +} VkVideoEncodeH264RateControlLayerInfoEXT; + + + +#define VK_EXT_video_encode_h265 1 +#include "vk_video/vulkan_video_codec_h265std.h" +#include "vk_video/vulkan_video_codec_h265std_encode.h" +#define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 7 +#define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" + +typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT { + VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, + VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0x00000040, + VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000080, + VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0x00000100, + VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0x00000200, + VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0x00000400, + VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0x00000800, + VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00001000, + VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0x00002000, + VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00004000, + VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0x00008000, + VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0x00010000, + VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0x00020000, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0x00040000, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0x00080000, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0x00100000, + VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0x00200000, + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00400000, + VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0x00800000, + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x01000000, + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x02000000, + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265CapabilityFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; + +typedef enum VkVideoEncodeH265InputModeFlagBitsEXT { + VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265InputModeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT; + +typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT { + VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265OutputModeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT; + +typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265CtbSizeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; + +typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT { + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265TransformBlockSizeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT; + +typedef enum VkVideoEncodeH265RateControlStructureFlagBitsEXT { + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265RateControlStructureFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265RateControlStructureFlagsEXT; +typedef struct VkVideoEncodeH265CapabilitiesEXT { + VkStructureType sType; + void* pNext; + VkVideoEncodeH265CapabilityFlagsEXT flags; + VkVideoEncodeH265InputModeFlagsEXT inputModeFlags; + VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags; + VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; + VkVideoEncodeH265TransformBlockSizeFlagsEXT transformBlockSizes; + uint8_t maxPPictureL0ReferenceCount; + uint8_t maxBPictureL0ReferenceCount; + uint8_t maxL1ReferenceCount; + uint8_t maxSubLayersCount; + uint8_t minLog2MinLumaCodingBlockSizeMinus3; + uint8_t maxLog2MinLumaCodingBlockSizeMinus3; + uint8_t minLog2MinLumaTransformBlockSizeMinus2; + uint8_t maxLog2MinLumaTransformBlockSizeMinus2; + uint8_t minMaxTransformHierarchyDepthInter; + uint8_t maxMaxTransformHierarchyDepthInter; + uint8_t minMaxTransformHierarchyDepthIntra; + uint8_t maxMaxTransformHierarchyDepthIntra; + uint8_t maxDiffCuQpDeltaDepth; + uint8_t minMaxNumMergeCand; + uint8_t maxMaxNumMergeCand; +} VkVideoEncodeH265CapabilitiesEXT; + +typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t vpsStdCount; + const StdVideoH265VideoParameterSet* pVpsStd; + uint32_t spsStdCount; + const StdVideoH265SequenceParameterSet* pSpsStd; + uint32_t ppsStdCount; + const StdVideoH265PictureParameterSet* pPpsStd; +} VkVideoEncodeH265SessionParametersAddInfoEXT; + +typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxVpsStdCount; + uint32_t maxSpsStdCount; + uint32_t maxPpsStdCount; + const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoEncodeH265SessionParametersCreateInfoEXT; + +typedef struct VkVideoEncodeH265DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + int8_t slotIndex; + const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; +} VkVideoEncodeH265DpbSlotInfoEXT; + +typedef struct VkVideoEncodeH265ReferenceListsEXT { + VkStructureType sType; + const void* pNext; + uint8_t referenceList0EntryCount; + const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries; + uint8_t referenceList1EntryCount; + const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries; + const StdVideoEncodeH265ReferenceModifications* pReferenceModifications; +} VkVideoEncodeH265ReferenceListsEXT; + +typedef struct VkVideoEncodeH265NaluSliceSegmentEXT { + VkStructureType sType; + const void* pNext; + uint32_t ctbCount; + const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; + const StdVideoEncodeH265SliceSegmentHeader* pSliceSegmentHeaderStd; +} VkVideoEncodeH265NaluSliceSegmentEXT; + +typedef struct VkVideoEncodeH265VclFrameInfoEXT { + VkStructureType sType; + const void* pNext; + const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; + uint32_t naluSliceSegmentEntryCount; + const VkVideoEncodeH265NaluSliceSegmentEXT* pNaluSliceSegmentEntries; + const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo; +} VkVideoEncodeH265VclFrameInfoEXT; + +typedef struct VkVideoEncodeH265EmitPictureParametersEXT { + VkStructureType sType; + const void* pNext; + uint8_t vpsId; + uint8_t spsId; + VkBool32 emitVpsEnable; + VkBool32 emitSpsEnable; + uint32_t ppsIdEntryCount; + const uint8_t* ppsIdEntries; +} VkVideoEncodeH265EmitPictureParametersEXT; + +typedef struct VkVideoEncodeH265ProfileEXT { + VkStructureType sType; + const void* pNext; + StdVideoH265ProfileIdc stdProfileIdc; +} VkVideoEncodeH265ProfileEXT; + +typedef struct VkVideoEncodeH265RateControlInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + VkVideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure; + uint8_t subLayerCount; +} VkVideoEncodeH265RateControlInfoEXT; + +typedef struct VkVideoEncodeH265QpEXT { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH265QpEXT; + +typedef struct VkVideoEncodeH265FrameSizeEXT { + uint32_t frameISize; + uint32_t framePSize; + uint32_t frameBSize; +} VkVideoEncodeH265FrameSizeEXT; + +typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { + VkStructureType sType; + const void* pNext; + uint8_t temporalId; + VkBool32 useInitialRcQp; + VkVideoEncodeH265QpEXT initialRcQp; + VkBool32 useMinQp; + VkVideoEncodeH265QpEXT minQp; + VkBool32 useMaxQp; + VkVideoEncodeH265QpEXT maxQp; + VkBool32 useMaxFrameSize; + VkVideoEncodeH265FrameSizeEXT maxFrameSize; +} VkVideoEncodeH265RateControlLayerInfoEXT; + + + +#define VK_EXT_video_decode_h264 1 +#include "vk_video/vulkan_video_codec_h264std_decode.h" +#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 5 +#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264" + +typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT { + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoDecodeH264PictureLayoutFlagBitsEXT; +typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT; +typedef struct VkVideoDecodeH264ProfileEXT { + VkStructureType sType; + const void* pNext; + StdVideoH264ProfileIdc stdProfileIdc; + VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout; +} VkVideoDecodeH264ProfileEXT; + +typedef struct VkVideoDecodeH264CapabilitiesEXT { + VkStructureType sType; + void* pNext; + StdVideoH264Level maxLevel; + VkOffset2D fieldOffsetGranularity; +} VkVideoDecodeH264CapabilitiesEXT; + +typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t spsStdCount; + const StdVideoH264SequenceParameterSet* pSpsStd; + uint32_t ppsStdCount; + const StdVideoH264PictureParameterSet* pPpsStd; +} VkVideoDecodeH264SessionParametersAddInfoEXT; + +typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxSpsStdCount; + uint32_t maxPpsStdCount; + const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoDecodeH264SessionParametersCreateInfoEXT; + +typedef struct VkVideoDecodeH264PictureInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264PictureInfo* pStdPictureInfo; + uint32_t slicesCount; + const uint32_t* pSlicesDataOffsets; +} VkVideoDecodeH264PictureInfoEXT; + +typedef struct VkVideoDecodeH264MvcEXT { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264Mvc* pStdMvc; +} VkVideoDecodeH264MvcEXT; + +typedef struct VkVideoDecodeH264DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo; +} VkVideoDecodeH264DpbSlotInfoEXT; + + + +#define VK_EXT_video_decode_h265 1 +#include "vk_video/vulkan_video_codec_h265std_decode.h" +#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 3 +#define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265" +typedef struct VkVideoDecodeH265ProfileEXT { + VkStructureType sType; + const void* pNext; + StdVideoH265ProfileIdc stdProfileIdc; +} VkVideoDecodeH265ProfileEXT; + +typedef struct VkVideoDecodeH265CapabilitiesEXT { + VkStructureType sType; + void* pNext; + StdVideoH265Level maxLevel; +} VkVideoDecodeH265CapabilitiesEXT; + +typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t vpsStdCount; + const StdVideoH265VideoParameterSet* pVpsStd; + uint32_t spsStdCount; + const StdVideoH265SequenceParameterSet* pSpsStd; + uint32_t ppsStdCount; + const StdVideoH265PictureParameterSet* pPpsStd; +} VkVideoDecodeH265SessionParametersAddInfoEXT; + +typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxVpsStdCount; + uint32_t maxSpsStdCount; + uint32_t maxPpsStdCount; + const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoDecodeH265SessionParametersCreateInfoEXT; + +typedef struct VkVideoDecodeH265PictureInfoEXT { + VkStructureType sType; + const void* pNext; + StdVideoDecodeH265PictureInfo* pStdPictureInfo; + uint32_t slicesCount; + const uint32_t* pSlicesDataOffsets; +} VkVideoDecodeH265PictureInfoEXT; + +typedef struct VkVideoDecodeH265DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo; +} VkVideoDecodeH265DpbSlotInfoEXT; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_core.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_core.h similarity index 98% rename from engine/vkImgui/cimgui/vulkan/vulkan_core.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_core.h index a40ac22..745ef23 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_core.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_core.h @@ -1,14695 +1,14695 @@ -#ifndef VULKAN_CORE_H_ -#define VULKAN_CORE_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_VERSION_1_0 1 -#include "vk_platform.h" - -#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; - - -#ifndef VK_USE_64_BIT_PTR_DEFINES - #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) - #define VK_USE_64_BIT_PTR_DEFINES 1 - #else - #define VK_USE_64_BIT_PTR_DEFINES 0 - #endif -#endif - - -#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE - #if (VK_USE_64_BIT_PTR_DEFINES==1) - #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L)) - #define VK_NULL_HANDLE nullptr - #else - #define VK_NULL_HANDLE ((void*)0) - #endif - #else - #define VK_NULL_HANDLE 0ULL - #endif -#endif -#ifndef VK_NULL_HANDLE - #define VK_NULL_HANDLE 0 -#endif - - -#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE - #if (VK_USE_64_BIT_PTR_DEFINES==1) - #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; - #else - #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; - #endif -#endif - -// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead. -#define VK_MAKE_VERSION(major, minor, patch) \ - ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) - -// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. -//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 - -#define VK_MAKE_API_VERSION(variant, major, minor, patch) \ - ((((uint32_t)(variant)) << 29) | (((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) - -// Vulkan 1.0 version number -#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0 - -// Version of this file -#define VK_HEADER_VERSION 216 - -// Complete version of this file -#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) - -// DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead. -#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) - -// DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead. -#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) - -// DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead. -#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) - -#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29) -#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22) & 0x7FU) -#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) -#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) -typedef uint32_t VkBool32; -typedef uint64_t VkDeviceAddress; -typedef uint64_t VkDeviceSize; -typedef uint32_t VkFlags; -typedef uint32_t VkSampleMask; -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) -VK_DEFINE_HANDLE(VkInstance) -VK_DEFINE_HANDLE(VkPhysicalDevice) -VK_DEFINE_HANDLE(VkDevice) -VK_DEFINE_HANDLE(VkQueue) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) -VK_DEFINE_HANDLE(VkCommandBuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) -#define VK_ATTACHMENT_UNUSED (~0U) -#define VK_FALSE 0U -#define VK_LOD_CLAMP_NONE 1000.0F -#define VK_QUEUE_FAMILY_IGNORED (~0U) -#define VK_REMAINING_ARRAY_LAYERS (~0U) -#define VK_REMAINING_MIP_LEVELS (~0U) -#define VK_SUBPASS_EXTERNAL (~0U) -#define VK_TRUE 1U -#define VK_WHOLE_SIZE (~0ULL) -#define VK_MAX_MEMORY_TYPES 32U -#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256U -#define VK_UUID_SIZE 16U -#define VK_MAX_EXTENSION_NAME_SIZE 256U -#define VK_MAX_DESCRIPTION_SIZE 256U -#define VK_MAX_MEMORY_HEAPS 16U - -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, - VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000, - VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, - VK_ERROR_FRAGMENTATION = -1000161000, - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, - VK_PIPELINE_COMPILE_REQUIRED = 1000297000, - VK_ERROR_SURFACE_LOST_KHR = -1000000000, - VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, - VK_SUBOPTIMAL_KHR = 1000001003, - VK_ERROR_OUT_OF_DATE_KHR = -1000001004, - VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, - VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, - VK_ERROR_INVALID_SHADER_NV = -1000012000, - VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, - VK_ERROR_NOT_PERMITTED_KHR = -1000174001, - VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000, - VK_THREAD_IDLE_KHR = 1000268000, - VK_THREAD_DONE_KHR = 1000268001, - VK_OPERATION_DEFERRED_KHR = 1000268002, - VK_OPERATION_NOT_DEFERRED_KHR = 1000268003, - VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000, - VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY, - VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE, - VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION, - VK_ERROR_NOT_PERMITTED_EXT = VK_ERROR_NOT_PERMITTED_KHR, - VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, - VK_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, - VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, - VK_RESULT_MAX_ENUM = 0x7FFFFFFF -} VkResult; - -typedef enum VkStructureType { - VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, - VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2, - VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3, - VK_STRUCTURE_TYPE_SUBMIT_INFO = 4, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5, - VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6, - VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7, - VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8, - VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9, - VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10, - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11, - VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12, - VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13, - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14, - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15, - VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16, - VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18, - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28, - VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29, - VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30, - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35, - VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36, - VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, - VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, - VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, - VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, - VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, - VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, - VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005, - VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001, - VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002, - VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001, - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, - VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, - VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001, - VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002, - VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005, - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000, - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002, - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000, - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001, - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000, - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002, - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004, - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005, - VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002, - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004, - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001, - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54, - VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000, - VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001, - VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000, - VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002, - VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003, - VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004, - VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000, - VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000, - VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001, - VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002, - VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003, - VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004, - VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005, - VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006, - VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007, - VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008, - VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009, - VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000, - VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000, - VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001, - VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001, - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001, - VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002, - VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003, - VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, - VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, - VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009, - VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010, - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012, - VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, - VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001, - VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000, - VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, - VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, - VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, - VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, - VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, - VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, - VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, - VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, - VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR = 1000023000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR = 1000023002, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR = 1000023003, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR = 1000023004, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR = 1000023011, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000023012, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR = 1000023013, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR = 1000023016, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR = 1000024001, -#endif - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, - VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000, - VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001, - VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002, - VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000, - VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038001, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038002, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038003, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038004, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT = 1000038005, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT = 1000038006, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT = 1000038007, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT = 1000038008, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT = 1000038009, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT = 1000038010, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT = 1000039000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000039001, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000039002, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT = 1000039003, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT = 1000039004, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXT = 1000039005, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT = 1000039006, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT = 1000039007, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT = 1000039008, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT = 1000039009, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT = 1000039010, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040001, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT = 1000040002, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT = 1000040003, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040004, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040005, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040006, -#endif - VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006, - VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007, - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008, - VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009, - VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000, - VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000, - VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000, - VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001, - VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002, - VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000, - VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001, - VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000, - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001, - VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002, - VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003, - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000, - VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001, - VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002, - VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000, - VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000, - VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001, - VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002, - VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003, - VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000, - VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001, - VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000, - VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000, - VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000, - VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001, - VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002, - VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000, - VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001, - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002, - VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003, - VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004, - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005, - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001, - VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, - VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001, - VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004, - VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000, - VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000, - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001, - VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002, - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003, - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002, - VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, - VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, - VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006, - VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000, - VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001, - VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003, - VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009, - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010, - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011, - VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015, - VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001, - VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005, - VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006, - VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, - VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, -#endif - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001, - VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003, - VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004, - VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005, - VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009, - VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000, - VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000, - VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000, - VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000, - VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000, - VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187001, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187002, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT = 1000187003, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187004, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187005, -#endif - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000, - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, - VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002, - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000, - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000, - VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001, - VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002, - VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003, - VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004, - VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000, - VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000, - VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001, - VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000, - VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001, - VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002, - VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000, - VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000, - VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001, - VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, - VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, - VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002, - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002, - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001, - VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000, - VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, - VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004, - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005, - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, - VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000, - VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, - VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002, - VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, - VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003, -#endif - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, - VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001, - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = 1000321000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = 1000203000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = 1000322000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001, - VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001, - VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000, - VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001, - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002, - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003, - VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000, - VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000, - VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000, - VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001, - VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000, - VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001, - VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002, - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000, - VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001, - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001, - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002, - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003, - VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004, - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005, - VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007, - VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008, - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009, - VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000, - VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001, - VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000, - VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000, - VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000, - VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001, - VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000458002, - VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, - VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, - VK_STRUCTURE_TYPE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_INFO, - VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, - VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO, - VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD, - VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, - VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, - VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, - VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, - VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, - VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, - VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, - VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, - VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, - VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, - VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO, - VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, - VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, - VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, - VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2, - VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, - VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2, - VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2, - VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2, - VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2, - VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2, - VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2, - VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2, - VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2, - VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2, - VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, - VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, - VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, - VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS, - VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS, - VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkStructureType; - -typedef enum VkPipelineCacheHeaderVersion { - VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, - VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF -} VkPipelineCacheHeaderVersion; - -typedef enum VkImageLayout { - VK_IMAGE_LAYOUT_UNDEFINED = 0, - VK_IMAGE_LAYOUT_GENERAL = 1, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, - VK_IMAGE_LAYOUT_PREINITIALIZED = 8, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001, - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002, - VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003, - VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000, - VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001, - VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002, -#endif - VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, - VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, - VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002, -#endif - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, - VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, - VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, - VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL, - VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, - VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF -} VkImageLayout; - -typedef enum VkObjectType { - VK_OBJECT_TYPE_UNKNOWN = 0, - VK_OBJECT_TYPE_INSTANCE = 1, - VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2, - VK_OBJECT_TYPE_DEVICE = 3, - VK_OBJECT_TYPE_QUEUE = 4, - VK_OBJECT_TYPE_SEMAPHORE = 5, - VK_OBJECT_TYPE_COMMAND_BUFFER = 6, - VK_OBJECT_TYPE_FENCE = 7, - VK_OBJECT_TYPE_DEVICE_MEMORY = 8, - VK_OBJECT_TYPE_BUFFER = 9, - VK_OBJECT_TYPE_IMAGE = 10, - VK_OBJECT_TYPE_EVENT = 11, - VK_OBJECT_TYPE_QUERY_POOL = 12, - VK_OBJECT_TYPE_BUFFER_VIEW = 13, - VK_OBJECT_TYPE_IMAGE_VIEW = 14, - VK_OBJECT_TYPE_SHADER_MODULE = 15, - VK_OBJECT_TYPE_PIPELINE_CACHE = 16, - VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17, - VK_OBJECT_TYPE_RENDER_PASS = 18, - VK_OBJECT_TYPE_PIPELINE = 19, - VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20, - VK_OBJECT_TYPE_SAMPLER = 21, - VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22, - VK_OBJECT_TYPE_DESCRIPTOR_SET = 23, - VK_OBJECT_TYPE_FRAMEBUFFER = 24, - VK_OBJECT_TYPE_COMMAND_POOL = 25, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, - VK_OBJECT_TYPE_PRIVATE_DATA_SLOT = 1000295000, - VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, - VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, - VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000, - VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001, - VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001, -#endif - VK_OBJECT_TYPE_CU_MODULE_NVX = 1000029000, - VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001, - VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, - VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000, - VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000, - VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, - VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, - VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT, - VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkObjectType; - -typedef enum VkVendorId { - VK_VENDOR_ID_VIV = 0x10001, - VK_VENDOR_ID_VSI = 0x10002, - VK_VENDOR_ID_KAZAN = 0x10003, - VK_VENDOR_ID_CODEPLAY = 0x10004, - VK_VENDOR_ID_MESA = 0x10005, - VK_VENDOR_ID_POCL = 0x10006, - VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF -} VkVendorId; - -typedef enum VkSystemAllocationScope { - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0, - VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1, - VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2, - VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3, - VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4, - VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF -} VkSystemAllocationScope; - -typedef enum VkInternalAllocationType { - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0, - VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkInternalAllocationType; - -typedef enum VkFormat { - VK_FORMAT_UNDEFINED = 0, - VK_FORMAT_R4G4_UNORM_PACK8 = 1, - VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2, - VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3, - VK_FORMAT_R5G6B5_UNORM_PACK16 = 4, - VK_FORMAT_B5G6R5_UNORM_PACK16 = 5, - VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6, - VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7, - VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8, - VK_FORMAT_R8_UNORM = 9, - VK_FORMAT_R8_SNORM = 10, - VK_FORMAT_R8_USCALED = 11, - VK_FORMAT_R8_SSCALED = 12, - VK_FORMAT_R8_UINT = 13, - VK_FORMAT_R8_SINT = 14, - VK_FORMAT_R8_SRGB = 15, - VK_FORMAT_R8G8_UNORM = 16, - VK_FORMAT_R8G8_SNORM = 17, - VK_FORMAT_R8G8_USCALED = 18, - VK_FORMAT_R8G8_SSCALED = 19, - VK_FORMAT_R8G8_UINT = 20, - VK_FORMAT_R8G8_SINT = 21, - VK_FORMAT_R8G8_SRGB = 22, - VK_FORMAT_R8G8B8_UNORM = 23, - VK_FORMAT_R8G8B8_SNORM = 24, - VK_FORMAT_R8G8B8_USCALED = 25, - VK_FORMAT_R8G8B8_SSCALED = 26, - VK_FORMAT_R8G8B8_UINT = 27, - VK_FORMAT_R8G8B8_SINT = 28, - VK_FORMAT_R8G8B8_SRGB = 29, - VK_FORMAT_B8G8R8_UNORM = 30, - VK_FORMAT_B8G8R8_SNORM = 31, - VK_FORMAT_B8G8R8_USCALED = 32, - VK_FORMAT_B8G8R8_SSCALED = 33, - VK_FORMAT_B8G8R8_UINT = 34, - VK_FORMAT_B8G8R8_SINT = 35, - VK_FORMAT_B8G8R8_SRGB = 36, - VK_FORMAT_R8G8B8A8_UNORM = 37, - VK_FORMAT_R8G8B8A8_SNORM = 38, - VK_FORMAT_R8G8B8A8_USCALED = 39, - VK_FORMAT_R8G8B8A8_SSCALED = 40, - VK_FORMAT_R8G8B8A8_UINT = 41, - VK_FORMAT_R8G8B8A8_SINT = 42, - VK_FORMAT_R8G8B8A8_SRGB = 43, - VK_FORMAT_B8G8R8A8_UNORM = 44, - VK_FORMAT_B8G8R8A8_SNORM = 45, - VK_FORMAT_B8G8R8A8_USCALED = 46, - VK_FORMAT_B8G8R8A8_SSCALED = 47, - VK_FORMAT_B8G8R8A8_UINT = 48, - VK_FORMAT_B8G8R8A8_SINT = 49, - VK_FORMAT_B8G8R8A8_SRGB = 50, - VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51, - VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52, - VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53, - VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54, - VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55, - VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56, - VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57, - VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58, - VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59, - VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60, - VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61, - VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62, - VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63, - VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64, - VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65, - VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66, - VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67, - VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68, - VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69, - VK_FORMAT_R16_UNORM = 70, - VK_FORMAT_R16_SNORM = 71, - VK_FORMAT_R16_USCALED = 72, - VK_FORMAT_R16_SSCALED = 73, - VK_FORMAT_R16_UINT = 74, - VK_FORMAT_R16_SINT = 75, - VK_FORMAT_R16_SFLOAT = 76, - VK_FORMAT_R16G16_UNORM = 77, - VK_FORMAT_R16G16_SNORM = 78, - VK_FORMAT_R16G16_USCALED = 79, - VK_FORMAT_R16G16_SSCALED = 80, - VK_FORMAT_R16G16_UINT = 81, - VK_FORMAT_R16G16_SINT = 82, - VK_FORMAT_R16G16_SFLOAT = 83, - VK_FORMAT_R16G16B16_UNORM = 84, - VK_FORMAT_R16G16B16_SNORM = 85, - VK_FORMAT_R16G16B16_USCALED = 86, - VK_FORMAT_R16G16B16_SSCALED = 87, - VK_FORMAT_R16G16B16_UINT = 88, - VK_FORMAT_R16G16B16_SINT = 89, - VK_FORMAT_R16G16B16_SFLOAT = 90, - VK_FORMAT_R16G16B16A16_UNORM = 91, - VK_FORMAT_R16G16B16A16_SNORM = 92, - VK_FORMAT_R16G16B16A16_USCALED = 93, - VK_FORMAT_R16G16B16A16_SSCALED = 94, - VK_FORMAT_R16G16B16A16_UINT = 95, - VK_FORMAT_R16G16B16A16_SINT = 96, - VK_FORMAT_R16G16B16A16_SFLOAT = 97, - VK_FORMAT_R32_UINT = 98, - VK_FORMAT_R32_SINT = 99, - VK_FORMAT_R32_SFLOAT = 100, - VK_FORMAT_R32G32_UINT = 101, - VK_FORMAT_R32G32_SINT = 102, - VK_FORMAT_R32G32_SFLOAT = 103, - VK_FORMAT_R32G32B32_UINT = 104, - VK_FORMAT_R32G32B32_SINT = 105, - VK_FORMAT_R32G32B32_SFLOAT = 106, - VK_FORMAT_R32G32B32A32_UINT = 107, - VK_FORMAT_R32G32B32A32_SINT = 108, - VK_FORMAT_R32G32B32A32_SFLOAT = 109, - VK_FORMAT_R64_UINT = 110, - VK_FORMAT_R64_SINT = 111, - VK_FORMAT_R64_SFLOAT = 112, - VK_FORMAT_R64G64_UINT = 113, - VK_FORMAT_R64G64_SINT = 114, - VK_FORMAT_R64G64_SFLOAT = 115, - VK_FORMAT_R64G64B64_UINT = 116, - VK_FORMAT_R64G64B64_SINT = 117, - VK_FORMAT_R64G64B64_SFLOAT = 118, - VK_FORMAT_R64G64B64A64_UINT = 119, - VK_FORMAT_R64G64B64A64_SINT = 120, - VK_FORMAT_R64G64B64A64_SFLOAT = 121, - VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122, - VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123, - VK_FORMAT_D16_UNORM = 124, - VK_FORMAT_X8_D24_UNORM_PACK32 = 125, - VK_FORMAT_D32_SFLOAT = 126, - VK_FORMAT_S8_UINT = 127, - VK_FORMAT_D16_UNORM_S8_UINT = 128, - VK_FORMAT_D24_UNORM_S8_UINT = 129, - VK_FORMAT_D32_SFLOAT_S8_UINT = 130, - VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131, - VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132, - VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133, - VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134, - VK_FORMAT_BC2_UNORM_BLOCK = 135, - VK_FORMAT_BC2_SRGB_BLOCK = 136, - VK_FORMAT_BC3_UNORM_BLOCK = 137, - VK_FORMAT_BC3_SRGB_BLOCK = 138, - VK_FORMAT_BC4_UNORM_BLOCK = 139, - VK_FORMAT_BC4_SNORM_BLOCK = 140, - VK_FORMAT_BC5_UNORM_BLOCK = 141, - VK_FORMAT_BC5_SNORM_BLOCK = 142, - VK_FORMAT_BC6H_UFLOAT_BLOCK = 143, - VK_FORMAT_BC6H_SFLOAT_BLOCK = 144, - VK_FORMAT_BC7_UNORM_BLOCK = 145, - VK_FORMAT_BC7_SRGB_BLOCK = 146, - VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147, - VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148, - VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149, - VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150, - VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151, - VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152, - VK_FORMAT_EAC_R11_UNORM_BLOCK = 153, - VK_FORMAT_EAC_R11_SNORM_BLOCK = 154, - VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155, - VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156, - VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157, - VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158, - VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159, - VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160, - VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161, - VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162, - VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163, - VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164, - VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165, - VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166, - VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167, - VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168, - VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169, - VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170, - VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171, - VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172, - VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173, - VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174, - VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175, - VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176, - VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177, - VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178, - VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179, - VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180, - VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181, - VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182, - VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183, - VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184, - VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000, - VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001, - VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002, - VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003, - VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004, - VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005, - VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006, - VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007, - VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008, - VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009, - VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010, - VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016, - VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017, - VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018, - VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019, - VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020, - VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026, - VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027, - VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028, - VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029, - VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030, - VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031, - VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032, - VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033, - VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002, - VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003, - VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000, - VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001, - VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000, - VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001, - VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002, - VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003, - VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004, - VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005, - VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006, - VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007, - VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008, - VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009, - VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010, - VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011, - VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012, - VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013, - VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, - VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, - VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, - VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003, - VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004, - VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005, - VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, - VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, - VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, - VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK, - VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK, - VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK, - VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK, - VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK, - VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK, - VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK, - VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK, - VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK, - VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK, - VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK, - VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK, - VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, - VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM, - VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM, - VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, - VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, - VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, - VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, - VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, - VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16, - VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16, - VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, - VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, - VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, - VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16, - VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16, - VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, - VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, - VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, - VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM, - VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM, - VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, - VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, - VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, - VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, - VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, - VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, - VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, - VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16, - VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16, - VK_FORMAT_MAX_ENUM = 0x7FFFFFFF -} VkFormat; - -typedef enum VkImageTiling { - VK_IMAGE_TILING_OPTIMAL = 0, - VK_IMAGE_TILING_LINEAR = 1, - VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000, - VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF -} VkImageTiling; - -typedef enum VkImageType { - VK_IMAGE_TYPE_1D = 0, - VK_IMAGE_TYPE_2D = 1, - VK_IMAGE_TYPE_3D = 2, - VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkImageType; - -typedef enum VkPhysicalDeviceType { - VK_PHYSICAL_DEVICE_TYPE_OTHER = 0, - VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1, - VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2, - VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3, - VK_PHYSICAL_DEVICE_TYPE_CPU = 4, - VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkPhysicalDeviceType; - -typedef enum VkQueryType { - VK_QUERY_TYPE_OCCLUSION = 0, - VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, - VK_QUERY_TYPE_TIMESTAMP = 2, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000, -#endif - VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, - VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, - VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000, -#endif - VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001, - VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkQueryType; - -typedef enum VkSharingMode { - VK_SHARING_MODE_EXCLUSIVE = 0, - VK_SHARING_MODE_CONCURRENT = 1, - VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF -} VkSharingMode; - -typedef enum VkComponentSwizzle { - VK_COMPONENT_SWIZZLE_IDENTITY = 0, - VK_COMPONENT_SWIZZLE_ZERO = 1, - VK_COMPONENT_SWIZZLE_ONE = 2, - VK_COMPONENT_SWIZZLE_R = 3, - VK_COMPONENT_SWIZZLE_G = 4, - VK_COMPONENT_SWIZZLE_B = 5, - VK_COMPONENT_SWIZZLE_A = 6, - VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF -} VkComponentSwizzle; - -typedef enum VkImageViewType { - VK_IMAGE_VIEW_TYPE_1D = 0, - VK_IMAGE_VIEW_TYPE_2D = 1, - VK_IMAGE_VIEW_TYPE_3D = 2, - VK_IMAGE_VIEW_TYPE_CUBE = 3, - VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, - VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, - VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, - VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkImageViewType; - -typedef enum VkBlendFactor { - VK_BLEND_FACTOR_ZERO = 0, - VK_BLEND_FACTOR_ONE = 1, - VK_BLEND_FACTOR_SRC_COLOR = 2, - VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3, - VK_BLEND_FACTOR_DST_COLOR = 4, - VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5, - VK_BLEND_FACTOR_SRC_ALPHA = 6, - VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7, - VK_BLEND_FACTOR_DST_ALPHA = 8, - VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9, - VK_BLEND_FACTOR_CONSTANT_COLOR = 10, - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11, - VK_BLEND_FACTOR_CONSTANT_ALPHA = 12, - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13, - VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14, - VK_BLEND_FACTOR_SRC1_COLOR = 15, - VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16, - VK_BLEND_FACTOR_SRC1_ALPHA = 17, - VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18, - VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF -} VkBlendFactor; - -typedef enum VkBlendOp { - VK_BLEND_OP_ADD = 0, - VK_BLEND_OP_SUBTRACT = 1, - VK_BLEND_OP_REVERSE_SUBTRACT = 2, - VK_BLEND_OP_MIN = 3, - VK_BLEND_OP_MAX = 4, - VK_BLEND_OP_ZERO_EXT = 1000148000, - VK_BLEND_OP_SRC_EXT = 1000148001, - VK_BLEND_OP_DST_EXT = 1000148002, - VK_BLEND_OP_SRC_OVER_EXT = 1000148003, - VK_BLEND_OP_DST_OVER_EXT = 1000148004, - VK_BLEND_OP_SRC_IN_EXT = 1000148005, - VK_BLEND_OP_DST_IN_EXT = 1000148006, - VK_BLEND_OP_SRC_OUT_EXT = 1000148007, - VK_BLEND_OP_DST_OUT_EXT = 1000148008, - VK_BLEND_OP_SRC_ATOP_EXT = 1000148009, - VK_BLEND_OP_DST_ATOP_EXT = 1000148010, - VK_BLEND_OP_XOR_EXT = 1000148011, - VK_BLEND_OP_MULTIPLY_EXT = 1000148012, - VK_BLEND_OP_SCREEN_EXT = 1000148013, - VK_BLEND_OP_OVERLAY_EXT = 1000148014, - VK_BLEND_OP_DARKEN_EXT = 1000148015, - VK_BLEND_OP_LIGHTEN_EXT = 1000148016, - VK_BLEND_OP_COLORDODGE_EXT = 1000148017, - VK_BLEND_OP_COLORBURN_EXT = 1000148018, - VK_BLEND_OP_HARDLIGHT_EXT = 1000148019, - VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020, - VK_BLEND_OP_DIFFERENCE_EXT = 1000148021, - VK_BLEND_OP_EXCLUSION_EXT = 1000148022, - VK_BLEND_OP_INVERT_EXT = 1000148023, - VK_BLEND_OP_INVERT_RGB_EXT = 1000148024, - VK_BLEND_OP_LINEARDODGE_EXT = 1000148025, - VK_BLEND_OP_LINEARBURN_EXT = 1000148026, - VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027, - VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028, - VK_BLEND_OP_PINLIGHT_EXT = 1000148029, - VK_BLEND_OP_HARDMIX_EXT = 1000148030, - VK_BLEND_OP_HSL_HUE_EXT = 1000148031, - VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032, - VK_BLEND_OP_HSL_COLOR_EXT = 1000148033, - VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034, - VK_BLEND_OP_PLUS_EXT = 1000148035, - VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036, - VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037, - VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038, - VK_BLEND_OP_MINUS_EXT = 1000148039, - VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040, - VK_BLEND_OP_CONTRAST_EXT = 1000148041, - VK_BLEND_OP_INVERT_OVG_EXT = 1000148042, - VK_BLEND_OP_RED_EXT = 1000148043, - VK_BLEND_OP_GREEN_EXT = 1000148044, - VK_BLEND_OP_BLUE_EXT = 1000148045, - VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF -} VkBlendOp; - -typedef enum VkCompareOp { - VK_COMPARE_OP_NEVER = 0, - VK_COMPARE_OP_LESS = 1, - VK_COMPARE_OP_EQUAL = 2, - VK_COMPARE_OP_LESS_OR_EQUAL = 3, - VK_COMPARE_OP_GREATER = 4, - VK_COMPARE_OP_NOT_EQUAL = 5, - VK_COMPARE_OP_GREATER_OR_EQUAL = 6, - VK_COMPARE_OP_ALWAYS = 7, - VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF -} VkCompareOp; - -typedef enum VkDynamicState { - VK_DYNAMIC_STATE_VIEWPORT = 0, - VK_DYNAMIC_STATE_SCISSOR = 1, - VK_DYNAMIC_STATE_LINE_WIDTH = 2, - VK_DYNAMIC_STATE_DEPTH_BIAS = 3, - VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4, - VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5, - VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6, - VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7, - VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8, - VK_DYNAMIC_STATE_CULL_MODE = 1000267000, - VK_DYNAMIC_STATE_FRONT_FACE = 1000267001, - VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002, - VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003, - VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004, - VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005, - VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006, - VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007, - VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008, - VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009, - VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010, - VK_DYNAMIC_STATE_STENCIL_OP = 1000267011, - VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001, - VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002, - VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004, - VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000, - VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000, - VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000, - VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000, - VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004, - VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006, - VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001, - VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000, - VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000, - VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000, - VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000, - VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003, - VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000, - VK_DYNAMIC_STATE_CULL_MODE_EXT = VK_DYNAMIC_STATE_CULL_MODE, - VK_DYNAMIC_STATE_FRONT_FACE_EXT = VK_DYNAMIC_STATE_FRONT_FACE, - VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY, - VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, - VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT, - VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE, - VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, - VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, - VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, - VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, - VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, - VK_DYNAMIC_STATE_STENCIL_OP_EXT = VK_DYNAMIC_STATE_STENCIL_OP, - VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE, - VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE, - VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, - VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF -} VkDynamicState; - -typedef enum VkFrontFace { - VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, - VK_FRONT_FACE_CLOCKWISE = 1, - VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF -} VkFrontFace; - -typedef enum VkVertexInputRate { - VK_VERTEX_INPUT_RATE_VERTEX = 0, - VK_VERTEX_INPUT_RATE_INSTANCE = 1, - VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF -} VkVertexInputRate; - -typedef enum VkPrimitiveTopology { - VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, - VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, - VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF -} VkPrimitiveTopology; - -typedef enum VkPolygonMode { - VK_POLYGON_MODE_FILL = 0, - VK_POLYGON_MODE_LINE = 1, - VK_POLYGON_MODE_POINT = 2, - VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000, - VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF -} VkPolygonMode; - -typedef enum VkStencilOp { - VK_STENCIL_OP_KEEP = 0, - VK_STENCIL_OP_ZERO = 1, - VK_STENCIL_OP_REPLACE = 2, - VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, - VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, - VK_STENCIL_OP_INVERT = 5, - VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, - VK_STENCIL_OP_DECREMENT_AND_WRAP = 7, - VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF -} VkStencilOp; - -typedef enum VkLogicOp { - VK_LOGIC_OP_CLEAR = 0, - VK_LOGIC_OP_AND = 1, - VK_LOGIC_OP_AND_REVERSE = 2, - VK_LOGIC_OP_COPY = 3, - VK_LOGIC_OP_AND_INVERTED = 4, - VK_LOGIC_OP_NO_OP = 5, - VK_LOGIC_OP_XOR = 6, - VK_LOGIC_OP_OR = 7, - VK_LOGIC_OP_NOR = 8, - VK_LOGIC_OP_EQUIVALENT = 9, - VK_LOGIC_OP_INVERT = 10, - VK_LOGIC_OP_OR_REVERSE = 11, - VK_LOGIC_OP_COPY_INVERTED = 12, - VK_LOGIC_OP_OR_INVERTED = 13, - VK_LOGIC_OP_NAND = 14, - VK_LOGIC_OP_SET = 15, - VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF -} VkLogicOp; - -typedef enum VkBorderColor { - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0, - VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1, - VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2, - VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3, - VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4, - VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5, - VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003, - VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004, - VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF -} VkBorderColor; - -typedef enum VkFilter { - VK_FILTER_NEAREST = 0, - VK_FILTER_LINEAR = 1, - VK_FILTER_CUBIC_IMG = 1000015000, - VK_FILTER_CUBIC_EXT = VK_FILTER_CUBIC_IMG, - VK_FILTER_MAX_ENUM = 0x7FFFFFFF -} VkFilter; - -typedef enum VkSamplerAddressMode { - VK_SAMPLER_ADDRESS_MODE_REPEAT = 0, - VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1, - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2, - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3, - VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4, - VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, - VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF -} VkSamplerAddressMode; - -typedef enum VkSamplerMipmapMode { - VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, - VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, - VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF -} VkSamplerMipmapMode; - -typedef enum VkDescriptorType { - VK_DESCRIPTOR_TYPE_SAMPLER = 0, - VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1, - VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2, - VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3, - VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4, - VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9, - VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10, - VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK = 1000138000, - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000, - VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, - VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorType; - -typedef enum VkAttachmentLoadOp { - VK_ATTACHMENT_LOAD_OP_LOAD = 0, - VK_ATTACHMENT_LOAD_OP_CLEAR = 1, - VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2, - VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000, - VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF -} VkAttachmentLoadOp; - -typedef enum VkAttachmentStoreOp { - VK_ATTACHMENT_STORE_OP_STORE = 0, - VK_ATTACHMENT_STORE_OP_DONT_CARE = 1, - VK_ATTACHMENT_STORE_OP_NONE = 1000301000, - VK_ATTACHMENT_STORE_OP_NONE_KHR = VK_ATTACHMENT_STORE_OP_NONE, - VK_ATTACHMENT_STORE_OP_NONE_QCOM = VK_ATTACHMENT_STORE_OP_NONE, - VK_ATTACHMENT_STORE_OP_NONE_EXT = VK_ATTACHMENT_STORE_OP_NONE, - VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF -} VkAttachmentStoreOp; - -typedef enum VkPipelineBindPoint { - VK_PIPELINE_BIND_POINT_GRAPHICS = 0, - VK_PIPELINE_BIND_POINT_COMPUTE = 1, - VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000, - VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003, - VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, - VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF -} VkPipelineBindPoint; - -typedef enum VkCommandBufferLevel { - VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0, - VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1, - VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF -} VkCommandBufferLevel; - -typedef enum VkIndexType { - VK_INDEX_TYPE_UINT16 = 0, - VK_INDEX_TYPE_UINT32 = 1, - VK_INDEX_TYPE_NONE_KHR = 1000165000, - VK_INDEX_TYPE_UINT8_EXT = 1000265000, - VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR, - VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkIndexType; - -typedef enum VkSubpassContents { - VK_SUBPASS_CONTENTS_INLINE = 0, - VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1, - VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF -} VkSubpassContents; - -typedef enum VkAccessFlagBits { - VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, - VK_ACCESS_INDEX_READ_BIT = 0x00000002, - VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, - VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, - VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, - VK_ACCESS_SHADER_READ_BIT = 0x00000020, - VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, - VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, - VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, - VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, - VK_ACCESS_HOST_READ_BIT = 0x00002000, - VK_ACCESS_HOST_WRITE_BIT = 0x00004000, - VK_ACCESS_MEMORY_READ_BIT = 0x00008000, - VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, - VK_ACCESS_NONE = 0, - VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000, - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000, - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000, - VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, - VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000, - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000, - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000, - VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000, - VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000, - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000, - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000, - VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR, - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, - VK_ACCESS_NONE_KHR = VK_ACCESS_NONE, - VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkAccessFlagBits; -typedef VkFlags VkAccessFlags; - -typedef enum VkImageAspectFlagBits { - VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, - VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, - VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, - VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, - VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010, - VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020, - VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040, - VK_IMAGE_ASPECT_NONE = 0, - VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080, - VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100, - VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200, - VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400, - VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT, - VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT, - VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT, - VK_IMAGE_ASPECT_NONE_KHR = VK_IMAGE_ASPECT_NONE, - VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageAspectFlagBits; -typedef VkFlags VkImageAspectFlags; - -typedef enum VkFormatFeatureFlagBits { - VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, - VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, - VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, - VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, - VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, - VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, - VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, - VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000, - VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000, - VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000, - VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000, - VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000, - VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000, -#endif - VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000, - VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000, - VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000, -#endif - VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, - VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT, - VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, - VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT, - VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG, - VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkFormatFeatureFlagBits; -typedef VkFlags VkFormatFeatureFlags; - -typedef enum VkImageCreateFlagBits { - VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, - VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, - VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004, - VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, - VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, - VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400, - VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040, - VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020, - VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080, - VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100, - VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800, - VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200, - VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000, - VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000, - VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000, - VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 0x00020000, - VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 0x00008000, - VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, - VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, - VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, - VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT, - VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT, - VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT, - VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageCreateFlagBits; -typedef VkFlags VkImageCreateFlags; - -typedef enum VkSampleCountFlagBits { - VK_SAMPLE_COUNT_1_BIT = 0x00000001, - VK_SAMPLE_COUNT_2_BIT = 0x00000002, - VK_SAMPLE_COUNT_4_BIT = 0x00000004, - VK_SAMPLE_COUNT_8_BIT = 0x00000008, - VK_SAMPLE_COUNT_16_BIT = 0x00000010, - VK_SAMPLE_COUNT_32_BIT = 0x00000020, - VK_SAMPLE_COUNT_64_BIT = 0x00000040, - VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSampleCountFlagBits; -typedef VkFlags VkSampleCountFlags; - -typedef enum VkImageUsageFlagBits { - VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, - VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, - VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, - VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, - VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000, -#endif - VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200, - VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00004000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0x00008000, -#endif - VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0x00040000, - VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, - VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageUsageFlagBits; -typedef VkFlags VkImageUsageFlags; - -typedef enum VkInstanceCreateFlagBits { - VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 0x00000001, - VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkInstanceCreateFlagBits; -typedef VkFlags VkInstanceCreateFlags; - -typedef enum VkMemoryHeapFlagBits { - VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002, - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, - VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkMemoryHeapFlagBits; -typedef VkFlags VkMemoryHeapFlags; - -typedef enum VkMemoryPropertyFlagBits { - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002, - VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004, - VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008, - VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010, - VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020, - VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040, - VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080, - VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100, - VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkMemoryPropertyFlagBits; -typedef VkFlags VkMemoryPropertyFlags; - -typedef enum VkQueueFlagBits { - VK_QUEUE_GRAPHICS_BIT = 0x00000001, - VK_QUEUE_COMPUTE_BIT = 0x00000002, - VK_QUEUE_TRANSFER_BIT = 0x00000004, - VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, - VK_QUEUE_PROTECTED_BIT = 0x00000010, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040, -#endif - VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkQueueFlagBits; -typedef VkFlags VkQueueFlags; -typedef VkFlags VkDeviceCreateFlags; - -typedef enum VkDeviceQueueCreateFlagBits { - VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001, - VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkDeviceQueueCreateFlagBits; -typedef VkFlags VkDeviceQueueCreateFlags; - -typedef enum VkPipelineStageFlagBits { - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, - VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, - VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, - VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, - VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, - VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, - VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, - VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, - VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, - VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, - VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, - VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, - VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, - VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000, - VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, - VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, - VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, - VK_PIPELINE_STAGE_NONE = 0, - VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000, - VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000, - VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000, - VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000, - VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000, - VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000, - VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000, - VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000, - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000, - VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, - VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, - VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, - VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE, - VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineStageFlagBits; -typedef VkFlags VkPipelineStageFlags; -typedef VkFlags VkMemoryMapFlags; - -typedef enum VkSparseMemoryBindFlagBits { - VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, - VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSparseMemoryBindFlagBits; -typedef VkFlags VkSparseMemoryBindFlags; - -typedef enum VkSparseImageFormatFlagBits { - VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, - VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002, - VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, - VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSparseImageFormatFlagBits; -typedef VkFlags VkSparseImageFormatFlags; - -typedef enum VkFenceCreateFlagBits { - VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, - VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkFenceCreateFlagBits; -typedef VkFlags VkFenceCreateFlags; -typedef VkFlags VkSemaphoreCreateFlags; - -typedef enum VkEventCreateFlagBits { - VK_EVENT_CREATE_DEVICE_ONLY_BIT = 0x00000001, - VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT, - VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkEventCreateFlagBits; -typedef VkFlags VkEventCreateFlags; - -typedef enum VkQueryPipelineStatisticFlagBits { - VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, - VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, - VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, - VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, - VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, - VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, - VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, - VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, - VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, - VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, - VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, - VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkQueryPipelineStatisticFlagBits; -typedef VkFlags VkQueryPipelineStatisticFlags; -typedef VkFlags VkQueryPoolCreateFlags; - -typedef enum VkQueryResultFlagBits { - VK_QUERY_RESULT_64_BIT = 0x00000001, - VK_QUERY_RESULT_WAIT_BIT = 0x00000002, - VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, - VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010, -#endif - VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkQueryResultFlagBits; -typedef VkFlags VkQueryResultFlags; - -typedef enum VkBufferCreateFlagBits { - VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, - VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, - VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, - VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, - VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkBufferCreateFlagBits; -typedef VkFlags VkBufferCreateFlags; - -typedef enum VkBufferUsageFlagBits { - VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, - VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, - VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, - VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, - VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, - VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, - VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, - VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000, -#endif - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800, - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000, - VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, - VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000, - VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000, - VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400, -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000, -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000, -#endif - VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, - VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkBufferUsageFlagBits; -typedef VkFlags VkBufferUsageFlags; -typedef VkFlags VkBufferViewCreateFlags; - -typedef enum VkImageViewCreateFlagBits { - VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001, - VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0x00000002, - VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageViewCreateFlagBits; -typedef VkFlags VkImageViewCreateFlags; -typedef VkFlags VkShaderModuleCreateFlags; - -typedef enum VkPipelineCacheCreateFlagBits { - VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001, - VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, - VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineCacheCreateFlagBits; -typedef VkFlags VkPipelineCacheCreateFlags; - -typedef enum VkColorComponentFlagBits { - VK_COLOR_COMPONENT_R_BIT = 0x00000001, - VK_COLOR_COMPONENT_G_BIT = 0x00000002, - VK_COLOR_COMPONENT_B_BIT = 0x00000004, - VK_COLOR_COMPONENT_A_BIT = 0x00000008, - VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkColorComponentFlagBits; -typedef VkFlags VkColorComponentFlags; - -typedef enum VkPipelineCreateFlagBits { - VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, - VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, - VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004, - VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008, - VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010, - VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0x00000100, - VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 0x00000200, - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000, - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000, - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000, - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000, - VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000, - VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020, - VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040, - VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080, - VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00040000, - VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0x00000800, - VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000, - VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400, - VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000, - VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, - VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, - VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, - VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE, - VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT, - VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT, - VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineCreateFlagBits; -typedef VkFlags VkPipelineCreateFlags; - -typedef enum VkPipelineShaderStageCreateFlagBits { - VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 0x00000001, - VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 0x00000002, - VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT, - VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, - VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineShaderStageCreateFlagBits; -typedef VkFlags VkPipelineShaderStageCreateFlags; - -typedef enum VkShaderStageFlagBits { - VK_SHADER_STAGE_VERTEX_BIT = 0x00000001, - VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002, - VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004, - VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008, - VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010, - VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020, - VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, - VK_SHADER_STAGE_ALL = 0x7FFFFFFF, - VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0x00000100, - VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200, - VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400, - VK_SHADER_STAGE_MISS_BIT_KHR = 0x00000800, - VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000, - VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000, - VK_SHADER_STAGE_TASK_BIT_NV = 0x00000040, - VK_SHADER_STAGE_MESH_BIT_NV = 0x00000080, - VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000, - VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR, - VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR, - VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, - VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR, - VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR, - VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR, - VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkShaderStageFlagBits; - -typedef enum VkCullModeFlagBits { - VK_CULL_MODE_NONE = 0, - VK_CULL_MODE_FRONT_BIT = 0x00000001, - VK_CULL_MODE_BACK_BIT = 0x00000002, - VK_CULL_MODE_FRONT_AND_BACK = 0x00000003, - VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkCullModeFlagBits; -typedef VkFlags VkCullModeFlags; -typedef VkFlags VkPipelineVertexInputStateCreateFlags; -typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; -typedef VkFlags VkPipelineTessellationStateCreateFlags; -typedef VkFlags VkPipelineViewportStateCreateFlags; -typedef VkFlags VkPipelineRasterizationStateCreateFlags; -typedef VkFlags VkPipelineMultisampleStateCreateFlags; - -typedef enum VkPipelineDepthStencilStateCreateFlagBits { - VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = 0x00000001, - VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = 0x00000002, - VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineDepthStencilStateCreateFlagBits; -typedef VkFlags VkPipelineDepthStencilStateCreateFlags; - -typedef enum VkPipelineColorBlendStateCreateFlagBits { - VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM = 0x00000001, - VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineColorBlendStateCreateFlagBits; -typedef VkFlags VkPipelineColorBlendStateCreateFlags; -typedef VkFlags VkPipelineDynamicStateCreateFlags; - -typedef enum VkPipelineLayoutCreateFlagBits { - VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = 0x00000002, - VK_PIPELINE_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineLayoutCreateFlagBits; -typedef VkFlags VkPipelineLayoutCreateFlags; -typedef VkFlags VkShaderStageFlags; - -typedef enum VkSamplerCreateFlagBits { - VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0x00000001, - VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002, - VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSamplerCreateFlagBits; -typedef VkFlags VkSamplerCreateFlags; - -typedef enum VkDescriptorPoolCreateFlagBits { - VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001, - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002, - VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 0x00000004, - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, - VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorPoolCreateFlagBits; -typedef VkFlags VkDescriptorPoolCreateFlags; -typedef VkFlags VkDescriptorPoolResetFlags; - -typedef enum VkDescriptorSetLayoutCreateFlagBits { - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = 0x00000004, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorSetLayoutCreateFlagBits; -typedef VkFlags VkDescriptorSetLayoutCreateFlags; - -typedef enum VkAttachmentDescriptionFlagBits { - VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, - VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkAttachmentDescriptionFlagBits; -typedef VkFlags VkAttachmentDescriptionFlags; - -typedef enum VkDependencyFlagBits { - VK_DEPENDENCY_BY_REGION_BIT = 0x00000001, - VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004, - VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002, - VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT, - VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT, - VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkDependencyFlagBits; -typedef VkFlags VkDependencyFlags; - -typedef enum VkFramebufferCreateFlagBits { - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001, - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, - VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkFramebufferCreateFlagBits; -typedef VkFlags VkFramebufferCreateFlags; - -typedef enum VkRenderPassCreateFlagBits { - VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0x00000002, - VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkRenderPassCreateFlagBits; -typedef VkFlags VkRenderPassCreateFlags; - -typedef enum VkSubpassDescriptionFlagBits { - VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001, - VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002, - VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 0x00000004, - VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0x00000008, - VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM = 0x00000010, - VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = 0x00000020, - VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = 0x00000040, - VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSubpassDescriptionFlagBits; -typedef VkFlags VkSubpassDescriptionFlags; - -typedef enum VkCommandPoolCreateFlagBits { - VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, - VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, - VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004, - VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkCommandPoolCreateFlagBits; -typedef VkFlags VkCommandPoolCreateFlags; - -typedef enum VkCommandPoolResetFlagBits { - VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, - VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkCommandPoolResetFlagBits; -typedef VkFlags VkCommandPoolResetFlags; - -typedef enum VkCommandBufferUsageFlagBits { - VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001, - VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002, - VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004, - VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkCommandBufferUsageFlagBits; -typedef VkFlags VkCommandBufferUsageFlags; - -typedef enum VkQueryControlFlagBits { - VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001, - VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkQueryControlFlagBits; -typedef VkFlags VkQueryControlFlags; - -typedef enum VkCommandBufferResetFlagBits { - VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, - VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkCommandBufferResetFlagBits; -typedef VkFlags VkCommandBufferResetFlags; - -typedef enum VkStencilFaceFlagBits { - VK_STENCIL_FACE_FRONT_BIT = 0x00000001, - VK_STENCIL_FACE_BACK_BIT = 0x00000002, - VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003, - VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK, - VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkStencilFaceFlagBits; -typedef VkFlags VkStencilFaceFlags; -typedef struct VkExtent2D { - uint32_t width; - uint32_t height; -} VkExtent2D; - -typedef struct VkExtent3D { - uint32_t width; - uint32_t height; - uint32_t depth; -} VkExtent3D; - -typedef struct VkOffset2D { - int32_t x; - int32_t y; -} VkOffset2D; - -typedef struct VkOffset3D { - int32_t x; - int32_t y; - int32_t z; -} VkOffset3D; - -typedef struct VkRect2D { - VkOffset2D offset; - VkExtent2D extent; -} VkRect2D; - -typedef struct VkBaseInStructure { - VkStructureType sType; - const struct VkBaseInStructure* pNext; -} VkBaseInStructure; - -typedef struct VkBaseOutStructure { - VkStructureType sType; - struct VkBaseOutStructure* pNext; -} VkBaseOutStructure; - -typedef struct VkBufferMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize size; -} VkBufferMemoryBarrier; - -typedef struct VkDispatchIndirectCommand { - uint32_t x; - uint32_t y; - uint32_t z; -} VkDispatchIndirectCommand; - -typedef struct VkDrawIndexedIndirectCommand { - uint32_t indexCount; - uint32_t instanceCount; - uint32_t firstIndex; - int32_t vertexOffset; - uint32_t firstInstance; -} VkDrawIndexedIndirectCommand; - -typedef struct VkDrawIndirectCommand { - uint32_t vertexCount; - uint32_t instanceCount; - uint32_t firstVertex; - uint32_t firstInstance; -} VkDrawIndirectCommand; - -typedef struct VkImageSubresourceRange { - VkImageAspectFlags aspectMask; - uint32_t baseMipLevel; - uint32_t levelCount; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkImageSubresourceRange; - -typedef struct VkImageMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkImageLayout oldLayout; - VkImageLayout newLayout; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkImage image; - VkImageSubresourceRange subresourceRange; -} VkImageMemoryBarrier; - -typedef struct VkMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; -} VkMemoryBarrier; - -typedef struct VkPipelineCacheHeaderVersionOne { - uint32_t headerSize; - VkPipelineCacheHeaderVersion headerVersion; - uint32_t vendorID; - uint32_t deviceID; - uint8_t pipelineCacheUUID[VK_UUID_SIZE]; -} VkPipelineCacheHeaderVersionOne; - -typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( - void* pUserData, - size_t size, - size_t alignment, - VkSystemAllocationScope allocationScope); - -typedef void (VKAPI_PTR *PFN_vkFreeFunction)( - void* pUserData, - void* pMemory); - -typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( - void* pUserData, - size_t size, - VkInternalAllocationType allocationType, - VkSystemAllocationScope allocationScope); - -typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)( - void* pUserData, - size_t size, - VkInternalAllocationType allocationType, - VkSystemAllocationScope allocationScope); - -typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( - void* pUserData, - void* pOriginal, - size_t size, - size_t alignment, - VkSystemAllocationScope allocationScope); - -typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); -typedef struct VkAllocationCallbacks { - void* pUserData; - PFN_vkAllocationFunction pfnAllocation; - PFN_vkReallocationFunction pfnReallocation; - PFN_vkFreeFunction pfnFree; - PFN_vkInternalAllocationNotification pfnInternalAllocation; - PFN_vkInternalFreeNotification pfnInternalFree; -} VkAllocationCallbacks; - -typedef struct VkApplicationInfo { - VkStructureType sType; - const void* pNext; - const char* pApplicationName; - uint32_t applicationVersion; - const char* pEngineName; - uint32_t engineVersion; - uint32_t apiVersion; -} VkApplicationInfo; - -typedef struct VkFormatProperties { - VkFormatFeatureFlags linearTilingFeatures; - VkFormatFeatureFlags optimalTilingFeatures; - VkFormatFeatureFlags bufferFeatures; -} VkFormatProperties; - -typedef struct VkImageFormatProperties { - VkExtent3D maxExtent; - uint32_t maxMipLevels; - uint32_t maxArrayLayers; - VkSampleCountFlags sampleCounts; - VkDeviceSize maxResourceSize; -} VkImageFormatProperties; - -typedef struct VkInstanceCreateInfo { - VkStructureType sType; - const void* pNext; - VkInstanceCreateFlags flags; - const VkApplicationInfo* pApplicationInfo; - uint32_t enabledLayerCount; - const char* const* ppEnabledLayerNames; - uint32_t enabledExtensionCount; - const char* const* ppEnabledExtensionNames; -} VkInstanceCreateInfo; - -typedef struct VkMemoryHeap { - VkDeviceSize size; - VkMemoryHeapFlags flags; -} VkMemoryHeap; - -typedef struct VkMemoryType { - VkMemoryPropertyFlags propertyFlags; - uint32_t heapIndex; -} VkMemoryType; - -typedef struct VkPhysicalDeviceFeatures { - VkBool32 robustBufferAccess; - VkBool32 fullDrawIndexUint32; - VkBool32 imageCubeArray; - VkBool32 independentBlend; - VkBool32 geometryShader; - VkBool32 tessellationShader; - VkBool32 sampleRateShading; - VkBool32 dualSrcBlend; - VkBool32 logicOp; - VkBool32 multiDrawIndirect; - VkBool32 drawIndirectFirstInstance; - VkBool32 depthClamp; - VkBool32 depthBiasClamp; - VkBool32 fillModeNonSolid; - VkBool32 depthBounds; - VkBool32 wideLines; - VkBool32 largePoints; - VkBool32 alphaToOne; - VkBool32 multiViewport; - VkBool32 samplerAnisotropy; - VkBool32 textureCompressionETC2; - VkBool32 textureCompressionASTC_LDR; - VkBool32 textureCompressionBC; - VkBool32 occlusionQueryPrecise; - VkBool32 pipelineStatisticsQuery; - VkBool32 vertexPipelineStoresAndAtomics; - VkBool32 fragmentStoresAndAtomics; - VkBool32 shaderTessellationAndGeometryPointSize; - VkBool32 shaderImageGatherExtended; - VkBool32 shaderStorageImageExtendedFormats; - VkBool32 shaderStorageImageMultisample; - VkBool32 shaderStorageImageReadWithoutFormat; - VkBool32 shaderStorageImageWriteWithoutFormat; - VkBool32 shaderUniformBufferArrayDynamicIndexing; - VkBool32 shaderSampledImageArrayDynamicIndexing; - VkBool32 shaderStorageBufferArrayDynamicIndexing; - VkBool32 shaderStorageImageArrayDynamicIndexing; - VkBool32 shaderClipDistance; - VkBool32 shaderCullDistance; - VkBool32 shaderFloat64; - VkBool32 shaderInt64; - VkBool32 shaderInt16; - VkBool32 shaderResourceResidency; - VkBool32 shaderResourceMinLod; - VkBool32 sparseBinding; - VkBool32 sparseResidencyBuffer; - VkBool32 sparseResidencyImage2D; - VkBool32 sparseResidencyImage3D; - VkBool32 sparseResidency2Samples; - VkBool32 sparseResidency4Samples; - VkBool32 sparseResidency8Samples; - VkBool32 sparseResidency16Samples; - VkBool32 sparseResidencyAliased; - VkBool32 variableMultisampleRate; - VkBool32 inheritedQueries; -} VkPhysicalDeviceFeatures; - -typedef struct VkPhysicalDeviceLimits { - uint32_t maxImageDimension1D; - uint32_t maxImageDimension2D; - uint32_t maxImageDimension3D; - uint32_t maxImageDimensionCube; - uint32_t maxImageArrayLayers; - uint32_t maxTexelBufferElements; - uint32_t maxUniformBufferRange; - uint32_t maxStorageBufferRange; - uint32_t maxPushConstantsSize; - uint32_t maxMemoryAllocationCount; - uint32_t maxSamplerAllocationCount; - VkDeviceSize bufferImageGranularity; - VkDeviceSize sparseAddressSpaceSize; - uint32_t maxBoundDescriptorSets; - uint32_t maxPerStageDescriptorSamplers; - uint32_t maxPerStageDescriptorUniformBuffers; - uint32_t maxPerStageDescriptorStorageBuffers; - uint32_t maxPerStageDescriptorSampledImages; - uint32_t maxPerStageDescriptorStorageImages; - uint32_t maxPerStageDescriptorInputAttachments; - uint32_t maxPerStageResources; - uint32_t maxDescriptorSetSamplers; - uint32_t maxDescriptorSetUniformBuffers; - uint32_t maxDescriptorSetUniformBuffersDynamic; - uint32_t maxDescriptorSetStorageBuffers; - uint32_t maxDescriptorSetStorageBuffersDynamic; - uint32_t maxDescriptorSetSampledImages; - uint32_t maxDescriptorSetStorageImages; - uint32_t maxDescriptorSetInputAttachments; - uint32_t maxVertexInputAttributes; - uint32_t maxVertexInputBindings; - uint32_t maxVertexInputAttributeOffset; - uint32_t maxVertexInputBindingStride; - uint32_t maxVertexOutputComponents; - uint32_t maxTessellationGenerationLevel; - uint32_t maxTessellationPatchSize; - uint32_t maxTessellationControlPerVertexInputComponents; - uint32_t maxTessellationControlPerVertexOutputComponents; - uint32_t maxTessellationControlPerPatchOutputComponents; - uint32_t maxTessellationControlTotalOutputComponents; - uint32_t maxTessellationEvaluationInputComponents; - uint32_t maxTessellationEvaluationOutputComponents; - uint32_t maxGeometryShaderInvocations; - uint32_t maxGeometryInputComponents; - uint32_t maxGeometryOutputComponents; - uint32_t maxGeometryOutputVertices; - uint32_t maxGeometryTotalOutputComponents; - uint32_t maxFragmentInputComponents; - uint32_t maxFragmentOutputAttachments; - uint32_t maxFragmentDualSrcAttachments; - uint32_t maxFragmentCombinedOutputResources; - uint32_t maxComputeSharedMemorySize; - uint32_t maxComputeWorkGroupCount[3]; - uint32_t maxComputeWorkGroupInvocations; - uint32_t maxComputeWorkGroupSize[3]; - uint32_t subPixelPrecisionBits; - uint32_t subTexelPrecisionBits; - uint32_t mipmapPrecisionBits; - uint32_t maxDrawIndexedIndexValue; - uint32_t maxDrawIndirectCount; - float maxSamplerLodBias; - float maxSamplerAnisotropy; - uint32_t maxViewports; - uint32_t maxViewportDimensions[2]; - float viewportBoundsRange[2]; - uint32_t viewportSubPixelBits; - size_t minMemoryMapAlignment; - VkDeviceSize minTexelBufferOffsetAlignment; - VkDeviceSize minUniformBufferOffsetAlignment; - VkDeviceSize minStorageBufferOffsetAlignment; - int32_t minTexelOffset; - uint32_t maxTexelOffset; - int32_t minTexelGatherOffset; - uint32_t maxTexelGatherOffset; - float minInterpolationOffset; - float maxInterpolationOffset; - uint32_t subPixelInterpolationOffsetBits; - uint32_t maxFramebufferWidth; - uint32_t maxFramebufferHeight; - uint32_t maxFramebufferLayers; - VkSampleCountFlags framebufferColorSampleCounts; - VkSampleCountFlags framebufferDepthSampleCounts; - VkSampleCountFlags framebufferStencilSampleCounts; - VkSampleCountFlags framebufferNoAttachmentsSampleCounts; - uint32_t maxColorAttachments; - VkSampleCountFlags sampledImageColorSampleCounts; - VkSampleCountFlags sampledImageIntegerSampleCounts; - VkSampleCountFlags sampledImageDepthSampleCounts; - VkSampleCountFlags sampledImageStencilSampleCounts; - VkSampleCountFlags storageImageSampleCounts; - uint32_t maxSampleMaskWords; - VkBool32 timestampComputeAndGraphics; - float timestampPeriod; - uint32_t maxClipDistances; - uint32_t maxCullDistances; - uint32_t maxCombinedClipAndCullDistances; - uint32_t discreteQueuePriorities; - float pointSizeRange[2]; - float lineWidthRange[2]; - float pointSizeGranularity; - float lineWidthGranularity; - VkBool32 strictLines; - VkBool32 standardSampleLocations; - VkDeviceSize optimalBufferCopyOffsetAlignment; - VkDeviceSize optimalBufferCopyRowPitchAlignment; - VkDeviceSize nonCoherentAtomSize; -} VkPhysicalDeviceLimits; - -typedef struct VkPhysicalDeviceMemoryProperties { - uint32_t memoryTypeCount; - VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]; - uint32_t memoryHeapCount; - VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS]; -} VkPhysicalDeviceMemoryProperties; - -typedef struct VkPhysicalDeviceSparseProperties { - VkBool32 residencyStandard2DBlockShape; - VkBool32 residencyStandard2DMultisampleBlockShape; - VkBool32 residencyStandard3DBlockShape; - VkBool32 residencyAlignedMipSize; - VkBool32 residencyNonResidentStrict; -} VkPhysicalDeviceSparseProperties; - -typedef struct VkPhysicalDeviceProperties { - uint32_t apiVersion; - uint32_t driverVersion; - uint32_t vendorID; - uint32_t deviceID; - VkPhysicalDeviceType deviceType; - char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]; - uint8_t pipelineCacheUUID[VK_UUID_SIZE]; - VkPhysicalDeviceLimits limits; - VkPhysicalDeviceSparseProperties sparseProperties; -} VkPhysicalDeviceProperties; - -typedef struct VkQueueFamilyProperties { - VkQueueFlags queueFlags; - uint32_t queueCount; - uint32_t timestampValidBits; - VkExtent3D minImageTransferGranularity; -} VkQueueFamilyProperties; - -typedef struct VkDeviceQueueCreateInfo { - VkStructureType sType; - const void* pNext; - VkDeviceQueueCreateFlags flags; - uint32_t queueFamilyIndex; - uint32_t queueCount; - const float* pQueuePriorities; -} VkDeviceQueueCreateInfo; - -typedef struct VkDeviceCreateInfo { - VkStructureType sType; - const void* pNext; - VkDeviceCreateFlags flags; - uint32_t queueCreateInfoCount; - const VkDeviceQueueCreateInfo* pQueueCreateInfos; - uint32_t enabledLayerCount; - const char* const* ppEnabledLayerNames; - uint32_t enabledExtensionCount; - const char* const* ppEnabledExtensionNames; - const VkPhysicalDeviceFeatures* pEnabledFeatures; -} VkDeviceCreateInfo; - -typedef struct VkExtensionProperties { - char extensionName[VK_MAX_EXTENSION_NAME_SIZE]; - uint32_t specVersion; -} VkExtensionProperties; - -typedef struct VkLayerProperties { - char layerName[VK_MAX_EXTENSION_NAME_SIZE]; - uint32_t specVersion; - uint32_t implementationVersion; - char description[VK_MAX_DESCRIPTION_SIZE]; -} VkLayerProperties; - -typedef struct VkSubmitInfo { - VkStructureType sType; - const void* pNext; - uint32_t waitSemaphoreCount; - const VkSemaphore* pWaitSemaphores; - const VkPipelineStageFlags* pWaitDstStageMask; - uint32_t commandBufferCount; - const VkCommandBuffer* pCommandBuffers; - uint32_t signalSemaphoreCount; - const VkSemaphore* pSignalSemaphores; -} VkSubmitInfo; - -typedef struct VkMappedMemoryRange { - VkStructureType sType; - const void* pNext; - VkDeviceMemory memory; - VkDeviceSize offset; - VkDeviceSize size; -} VkMappedMemoryRange; - -typedef struct VkMemoryAllocateInfo { - VkStructureType sType; - const void* pNext; - VkDeviceSize allocationSize; - uint32_t memoryTypeIndex; -} VkMemoryAllocateInfo; - -typedef struct VkMemoryRequirements { - VkDeviceSize size; - VkDeviceSize alignment; - uint32_t memoryTypeBits; -} VkMemoryRequirements; - -typedef struct VkSparseMemoryBind { - VkDeviceSize resourceOffset; - VkDeviceSize size; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; - VkSparseMemoryBindFlags flags; -} VkSparseMemoryBind; - -typedef struct VkSparseBufferMemoryBindInfo { - VkBuffer buffer; - uint32_t bindCount; - const VkSparseMemoryBind* pBinds; -} VkSparseBufferMemoryBindInfo; - -typedef struct VkSparseImageOpaqueMemoryBindInfo { - VkImage image; - uint32_t bindCount; - const VkSparseMemoryBind* pBinds; -} VkSparseImageOpaqueMemoryBindInfo; - -typedef struct VkImageSubresource { - VkImageAspectFlags aspectMask; - uint32_t mipLevel; - uint32_t arrayLayer; -} VkImageSubresource; - -typedef struct VkSparseImageMemoryBind { - VkImageSubresource subresource; - VkOffset3D offset; - VkExtent3D extent; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; - VkSparseMemoryBindFlags flags; -} VkSparseImageMemoryBind; - -typedef struct VkSparseImageMemoryBindInfo { - VkImage image; - uint32_t bindCount; - const VkSparseImageMemoryBind* pBinds; -} VkSparseImageMemoryBindInfo; - -typedef struct VkBindSparseInfo { - VkStructureType sType; - const void* pNext; - uint32_t waitSemaphoreCount; - const VkSemaphore* pWaitSemaphores; - uint32_t bufferBindCount; - const VkSparseBufferMemoryBindInfo* pBufferBinds; - uint32_t imageOpaqueBindCount; - const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds; - uint32_t imageBindCount; - const VkSparseImageMemoryBindInfo* pImageBinds; - uint32_t signalSemaphoreCount; - const VkSemaphore* pSignalSemaphores; -} VkBindSparseInfo; - -typedef struct VkSparseImageFormatProperties { - VkImageAspectFlags aspectMask; - VkExtent3D imageGranularity; - VkSparseImageFormatFlags flags; -} VkSparseImageFormatProperties; - -typedef struct VkSparseImageMemoryRequirements { - VkSparseImageFormatProperties formatProperties; - uint32_t imageMipTailFirstLod; - VkDeviceSize imageMipTailSize; - VkDeviceSize imageMipTailOffset; - VkDeviceSize imageMipTailStride; -} VkSparseImageMemoryRequirements; - -typedef struct VkFenceCreateInfo { - VkStructureType sType; - const void* pNext; - VkFenceCreateFlags flags; -} VkFenceCreateInfo; - -typedef struct VkSemaphoreCreateInfo { - VkStructureType sType; - const void* pNext; - VkSemaphoreCreateFlags flags; -} VkSemaphoreCreateInfo; - -typedef struct VkEventCreateInfo { - VkStructureType sType; - const void* pNext; - VkEventCreateFlags flags; -} VkEventCreateInfo; - -typedef struct VkQueryPoolCreateInfo { - VkStructureType sType; - const void* pNext; - VkQueryPoolCreateFlags flags; - VkQueryType queryType; - uint32_t queryCount; - VkQueryPipelineStatisticFlags pipelineStatistics; -} VkQueryPoolCreateInfo; - -typedef struct VkBufferCreateInfo { - VkStructureType sType; - const void* pNext; - VkBufferCreateFlags flags; - VkDeviceSize size; - VkBufferUsageFlags usage; - VkSharingMode sharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; -} VkBufferCreateInfo; - -typedef struct VkBufferViewCreateInfo { - VkStructureType sType; - const void* pNext; - VkBufferViewCreateFlags flags; - VkBuffer buffer; - VkFormat format; - VkDeviceSize offset; - VkDeviceSize range; -} VkBufferViewCreateInfo; - -typedef struct VkImageCreateInfo { - VkStructureType sType; - const void* pNext; - VkImageCreateFlags flags; - VkImageType imageType; - VkFormat format; - VkExtent3D extent; - uint32_t mipLevels; - uint32_t arrayLayers; - VkSampleCountFlagBits samples; - VkImageTiling tiling; - VkImageUsageFlags usage; - VkSharingMode sharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; - VkImageLayout initialLayout; -} VkImageCreateInfo; - -typedef struct VkSubresourceLayout { - VkDeviceSize offset; - VkDeviceSize size; - VkDeviceSize rowPitch; - VkDeviceSize arrayPitch; - VkDeviceSize depthPitch; -} VkSubresourceLayout; - -typedef struct VkComponentMapping { - VkComponentSwizzle r; - VkComponentSwizzle g; - VkComponentSwizzle b; - VkComponentSwizzle a; -} VkComponentMapping; - -typedef struct VkImageViewCreateInfo { - VkStructureType sType; - const void* pNext; - VkImageViewCreateFlags flags; - VkImage image; - VkImageViewType viewType; - VkFormat format; - VkComponentMapping components; - VkImageSubresourceRange subresourceRange; -} VkImageViewCreateInfo; - -typedef struct VkShaderModuleCreateInfo { - VkStructureType sType; - const void* pNext; - VkShaderModuleCreateFlags flags; - size_t codeSize; - const uint32_t* pCode; -} VkShaderModuleCreateInfo; - -typedef struct VkPipelineCacheCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineCacheCreateFlags flags; - size_t initialDataSize; - const void* pInitialData; -} VkPipelineCacheCreateInfo; - -typedef struct VkSpecializationMapEntry { - uint32_t constantID; - uint32_t offset; - size_t size; -} VkSpecializationMapEntry; - -typedef struct VkSpecializationInfo { - uint32_t mapEntryCount; - const VkSpecializationMapEntry* pMapEntries; - size_t dataSize; - const void* pData; -} VkSpecializationInfo; - -typedef struct VkPipelineShaderStageCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineShaderStageCreateFlags flags; - VkShaderStageFlagBits stage; - VkShaderModule module; - const char* pName; - const VkSpecializationInfo* pSpecializationInfo; -} VkPipelineShaderStageCreateInfo; - -typedef struct VkComputePipelineCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineCreateFlags flags; - VkPipelineShaderStageCreateInfo stage; - VkPipelineLayout layout; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkComputePipelineCreateInfo; - -typedef struct VkVertexInputBindingDescription { - uint32_t binding; - uint32_t stride; - VkVertexInputRate inputRate; -} VkVertexInputBindingDescription; - -typedef struct VkVertexInputAttributeDescription { - uint32_t location; - uint32_t binding; - VkFormat format; - uint32_t offset; -} VkVertexInputAttributeDescription; - -typedef struct VkPipelineVertexInputStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineVertexInputStateCreateFlags flags; - uint32_t vertexBindingDescriptionCount; - const VkVertexInputBindingDescription* pVertexBindingDescriptions; - uint32_t vertexAttributeDescriptionCount; - const VkVertexInputAttributeDescription* pVertexAttributeDescriptions; -} VkPipelineVertexInputStateCreateInfo; - -typedef struct VkPipelineInputAssemblyStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineInputAssemblyStateCreateFlags flags; - VkPrimitiveTopology topology; - VkBool32 primitiveRestartEnable; -} VkPipelineInputAssemblyStateCreateInfo; - -typedef struct VkPipelineTessellationStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineTessellationStateCreateFlags flags; - uint32_t patchControlPoints; -} VkPipelineTessellationStateCreateInfo; - -typedef struct VkViewport { - float x; - float y; - float width; - float height; - float minDepth; - float maxDepth; -} VkViewport; - -typedef struct VkPipelineViewportStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineViewportStateCreateFlags flags; - uint32_t viewportCount; - const VkViewport* pViewports; - uint32_t scissorCount; - const VkRect2D* pScissors; -} VkPipelineViewportStateCreateInfo; - -typedef struct VkPipelineRasterizationStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineRasterizationStateCreateFlags flags; - VkBool32 depthClampEnable; - VkBool32 rasterizerDiscardEnable; - VkPolygonMode polygonMode; - VkCullModeFlags cullMode; - VkFrontFace frontFace; - VkBool32 depthBiasEnable; - float depthBiasConstantFactor; - float depthBiasClamp; - float depthBiasSlopeFactor; - float lineWidth; -} VkPipelineRasterizationStateCreateInfo; - -typedef struct VkPipelineMultisampleStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineMultisampleStateCreateFlags flags; - VkSampleCountFlagBits rasterizationSamples; - VkBool32 sampleShadingEnable; - float minSampleShading; - const VkSampleMask* pSampleMask; - VkBool32 alphaToCoverageEnable; - VkBool32 alphaToOneEnable; -} VkPipelineMultisampleStateCreateInfo; - -typedef struct VkStencilOpState { - VkStencilOp failOp; - VkStencilOp passOp; - VkStencilOp depthFailOp; - VkCompareOp compareOp; - uint32_t compareMask; - uint32_t writeMask; - uint32_t reference; -} VkStencilOpState; - -typedef struct VkPipelineDepthStencilStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineDepthStencilStateCreateFlags flags; - VkBool32 depthTestEnable; - VkBool32 depthWriteEnable; - VkCompareOp depthCompareOp; - VkBool32 depthBoundsTestEnable; - VkBool32 stencilTestEnable; - VkStencilOpState front; - VkStencilOpState back; - float minDepthBounds; - float maxDepthBounds; -} VkPipelineDepthStencilStateCreateInfo; - -typedef struct VkPipelineColorBlendAttachmentState { - VkBool32 blendEnable; - VkBlendFactor srcColorBlendFactor; - VkBlendFactor dstColorBlendFactor; - VkBlendOp colorBlendOp; - VkBlendFactor srcAlphaBlendFactor; - VkBlendFactor dstAlphaBlendFactor; - VkBlendOp alphaBlendOp; - VkColorComponentFlags colorWriteMask; -} VkPipelineColorBlendAttachmentState; - -typedef struct VkPipelineColorBlendStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineColorBlendStateCreateFlags flags; - VkBool32 logicOpEnable; - VkLogicOp logicOp; - uint32_t attachmentCount; - const VkPipelineColorBlendAttachmentState* pAttachments; - float blendConstants[4]; -} VkPipelineColorBlendStateCreateInfo; - -typedef struct VkPipelineDynamicStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineDynamicStateCreateFlags flags; - uint32_t dynamicStateCount; - const VkDynamicState* pDynamicStates; -} VkPipelineDynamicStateCreateInfo; - -typedef struct VkGraphicsPipelineCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineCreateFlags flags; - uint32_t stageCount; - const VkPipelineShaderStageCreateInfo* pStages; - const VkPipelineVertexInputStateCreateInfo* pVertexInputState; - const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState; - const VkPipelineTessellationStateCreateInfo* pTessellationState; - const VkPipelineViewportStateCreateInfo* pViewportState; - const VkPipelineRasterizationStateCreateInfo* pRasterizationState; - const VkPipelineMultisampleStateCreateInfo* pMultisampleState; - const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState; - const VkPipelineColorBlendStateCreateInfo* pColorBlendState; - const VkPipelineDynamicStateCreateInfo* pDynamicState; - VkPipelineLayout layout; - VkRenderPass renderPass; - uint32_t subpass; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkGraphicsPipelineCreateInfo; - -typedef struct VkPushConstantRange { - VkShaderStageFlags stageFlags; - uint32_t offset; - uint32_t size; -} VkPushConstantRange; - -typedef struct VkPipelineLayoutCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineLayoutCreateFlags flags; - uint32_t setLayoutCount; - const VkDescriptorSetLayout* pSetLayouts; - uint32_t pushConstantRangeCount; - const VkPushConstantRange* pPushConstantRanges; -} VkPipelineLayoutCreateInfo; - -typedef struct VkSamplerCreateInfo { - VkStructureType sType; - const void* pNext; - VkSamplerCreateFlags flags; - VkFilter magFilter; - VkFilter minFilter; - VkSamplerMipmapMode mipmapMode; - VkSamplerAddressMode addressModeU; - VkSamplerAddressMode addressModeV; - VkSamplerAddressMode addressModeW; - float mipLodBias; - VkBool32 anisotropyEnable; - float maxAnisotropy; - VkBool32 compareEnable; - VkCompareOp compareOp; - float minLod; - float maxLod; - VkBorderColor borderColor; - VkBool32 unnormalizedCoordinates; -} VkSamplerCreateInfo; - -typedef struct VkCopyDescriptorSet { - VkStructureType sType; - const void* pNext; - VkDescriptorSet srcSet; - uint32_t srcBinding; - uint32_t srcArrayElement; - VkDescriptorSet dstSet; - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; -} VkCopyDescriptorSet; - -typedef struct VkDescriptorBufferInfo { - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize range; -} VkDescriptorBufferInfo; - -typedef struct VkDescriptorImageInfo { - VkSampler sampler; - VkImageView imageView; - VkImageLayout imageLayout; -} VkDescriptorImageInfo; - -typedef struct VkDescriptorPoolSize { - VkDescriptorType type; - uint32_t descriptorCount; -} VkDescriptorPoolSize; - -typedef struct VkDescriptorPoolCreateInfo { - VkStructureType sType; - const void* pNext; - VkDescriptorPoolCreateFlags flags; - uint32_t maxSets; - uint32_t poolSizeCount; - const VkDescriptorPoolSize* pPoolSizes; -} VkDescriptorPoolCreateInfo; - -typedef struct VkDescriptorSetAllocateInfo { - VkStructureType sType; - const void* pNext; - VkDescriptorPool descriptorPool; - uint32_t descriptorSetCount; - const VkDescriptorSetLayout* pSetLayouts; -} VkDescriptorSetAllocateInfo; - -typedef struct VkDescriptorSetLayoutBinding { - uint32_t binding; - VkDescriptorType descriptorType; - uint32_t descriptorCount; - VkShaderStageFlags stageFlags; - const VkSampler* pImmutableSamplers; -} VkDescriptorSetLayoutBinding; - -typedef struct VkDescriptorSetLayoutCreateInfo { - VkStructureType sType; - const void* pNext; - VkDescriptorSetLayoutCreateFlags flags; - uint32_t bindingCount; - const VkDescriptorSetLayoutBinding* pBindings; -} VkDescriptorSetLayoutCreateInfo; - -typedef struct VkWriteDescriptorSet { - VkStructureType sType; - const void* pNext; - VkDescriptorSet dstSet; - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; - VkDescriptorType descriptorType; - const VkDescriptorImageInfo* pImageInfo; - const VkDescriptorBufferInfo* pBufferInfo; - const VkBufferView* pTexelBufferView; -} VkWriteDescriptorSet; - -typedef struct VkAttachmentDescription { - VkAttachmentDescriptionFlags flags; - VkFormat format; - VkSampleCountFlagBits samples; - VkAttachmentLoadOp loadOp; - VkAttachmentStoreOp storeOp; - VkAttachmentLoadOp stencilLoadOp; - VkAttachmentStoreOp stencilStoreOp; - VkImageLayout initialLayout; - VkImageLayout finalLayout; -} VkAttachmentDescription; - -typedef struct VkAttachmentReference { - uint32_t attachment; - VkImageLayout layout; -} VkAttachmentReference; - -typedef struct VkFramebufferCreateInfo { - VkStructureType sType; - const void* pNext; - VkFramebufferCreateFlags flags; - VkRenderPass renderPass; - uint32_t attachmentCount; - const VkImageView* pAttachments; - uint32_t width; - uint32_t height; - uint32_t layers; -} VkFramebufferCreateInfo; - -typedef struct VkSubpassDescription { - VkSubpassDescriptionFlags flags; - VkPipelineBindPoint pipelineBindPoint; - uint32_t inputAttachmentCount; - const VkAttachmentReference* pInputAttachments; - uint32_t colorAttachmentCount; - const VkAttachmentReference* pColorAttachments; - const VkAttachmentReference* pResolveAttachments; - const VkAttachmentReference* pDepthStencilAttachment; - uint32_t preserveAttachmentCount; - const uint32_t* pPreserveAttachments; -} VkSubpassDescription; - -typedef struct VkSubpassDependency { - uint32_t srcSubpass; - uint32_t dstSubpass; - VkPipelineStageFlags srcStageMask; - VkPipelineStageFlags dstStageMask; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkDependencyFlags dependencyFlags; -} VkSubpassDependency; - -typedef struct VkRenderPassCreateInfo { - VkStructureType sType; - const void* pNext; - VkRenderPassCreateFlags flags; - uint32_t attachmentCount; - const VkAttachmentDescription* pAttachments; - uint32_t subpassCount; - const VkSubpassDescription* pSubpasses; - uint32_t dependencyCount; - const VkSubpassDependency* pDependencies; -} VkRenderPassCreateInfo; - -typedef struct VkCommandPoolCreateInfo { - VkStructureType sType; - const void* pNext; - VkCommandPoolCreateFlags flags; - uint32_t queueFamilyIndex; -} VkCommandPoolCreateInfo; - -typedef struct VkCommandBufferAllocateInfo { - VkStructureType sType; - const void* pNext; - VkCommandPool commandPool; - VkCommandBufferLevel level; - uint32_t commandBufferCount; -} VkCommandBufferAllocateInfo; - -typedef struct VkCommandBufferInheritanceInfo { - VkStructureType sType; - const void* pNext; - VkRenderPass renderPass; - uint32_t subpass; - VkFramebuffer framebuffer; - VkBool32 occlusionQueryEnable; - VkQueryControlFlags queryFlags; - VkQueryPipelineStatisticFlags pipelineStatistics; -} VkCommandBufferInheritanceInfo; - -typedef struct VkCommandBufferBeginInfo { - VkStructureType sType; - const void* pNext; - VkCommandBufferUsageFlags flags; - const VkCommandBufferInheritanceInfo* pInheritanceInfo; -} VkCommandBufferBeginInfo; - -typedef struct VkBufferCopy { - VkDeviceSize srcOffset; - VkDeviceSize dstOffset; - VkDeviceSize size; -} VkBufferCopy; - -typedef struct VkImageSubresourceLayers { - VkImageAspectFlags aspectMask; - uint32_t mipLevel; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkImageSubresourceLayers; - -typedef struct VkBufferImageCopy { - VkDeviceSize bufferOffset; - uint32_t bufferRowLength; - uint32_t bufferImageHeight; - VkImageSubresourceLayers imageSubresource; - VkOffset3D imageOffset; - VkExtent3D imageExtent; -} VkBufferImageCopy; - -typedef union VkClearColorValue { - float float32[4]; - int32_t int32[4]; - uint32_t uint32[4]; -} VkClearColorValue; - -typedef struct VkClearDepthStencilValue { - float depth; - uint32_t stencil; -} VkClearDepthStencilValue; - -typedef union VkClearValue { - VkClearColorValue color; - VkClearDepthStencilValue depthStencil; -} VkClearValue; - -typedef struct VkClearAttachment { - VkImageAspectFlags aspectMask; - uint32_t colorAttachment; - VkClearValue clearValue; -} VkClearAttachment; - -typedef struct VkClearRect { - VkRect2D rect; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkClearRect; - -typedef struct VkImageBlit { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffsets[2]; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffsets[2]; -} VkImageBlit; - -typedef struct VkImageCopy { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageCopy; - -typedef struct VkImageResolve { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageResolve; - -typedef struct VkRenderPassBeginInfo { - VkStructureType sType; - const void* pNext; - VkRenderPass renderPass; - VkFramebuffer framebuffer; - VkRect2D renderArea; - uint32_t clearValueCount; - const VkClearValue* pClearValues; -} VkRenderPassBeginInfo; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance); -typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties); -typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName); -typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice); -typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties); -typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue); -typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence); -typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue); -typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device); -typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory); -typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData); -typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory); -typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges); -typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges); -typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes); -typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset); -typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset); -typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence); -typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); -typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences); -typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence); -typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout); -typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore); -typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent); -typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event); -typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event); -typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event); -typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool); -typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags); -typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer); -typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView); -typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage); -typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout); -typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView); -typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule); -typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache); -typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData); -typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches); -typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); -typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); -typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout); -typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler); -typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout); -typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool); -typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags); -typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets); -typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets); -typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies); -typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer); -typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); -typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity); -typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool); -typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags); -typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers); -typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); -typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo); -typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer); -typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags); -typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); -typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports); -typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors); -typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor); -typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds); -typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask); -typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask); -typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference); -typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets); -typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); -typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); -typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); -typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset); -typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions); -typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions); -typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter); -typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions); -typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions); -typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData); -typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); -typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); -typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); -typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects); -typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions); -typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); -typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); -typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); -typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); -typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags); -typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query); -typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); -typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query); -typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); -typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues); -typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents); -typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents); -typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer); -typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( - const VkInstanceCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkInstance* pInstance); - -VKAPI_ATTR void VKAPI_CALL vkDestroyInstance( - VkInstance instance, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices( - VkInstance instance, - uint32_t* pPhysicalDeviceCount, - VkPhysicalDevice* pPhysicalDevices); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceFeatures* pFeatures); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkFormatProperties* pFormatProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkImageType type, - VkImageTiling tiling, - VkImageUsageFlags usage, - VkImageCreateFlags flags, - VkImageFormatProperties* pImageFormatProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceProperties* pProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties( - VkPhysicalDevice physicalDevice, - uint32_t* pQueueFamilyPropertyCount, - VkQueueFamilyProperties* pQueueFamilyProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceMemoryProperties* pMemoryProperties); - -VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr( - VkInstance instance, - const char* pName); - -VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr( - VkDevice device, - const char* pName); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice( - VkPhysicalDevice physicalDevice, - const VkDeviceCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDevice* pDevice); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDevice( - VkDevice device, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties( - const char* pLayerName, - uint32_t* pPropertyCount, - VkExtensionProperties* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties( - VkPhysicalDevice physicalDevice, - const char* pLayerName, - uint32_t* pPropertyCount, - VkExtensionProperties* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties( - uint32_t* pPropertyCount, - VkLayerProperties* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkLayerProperties* pProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue( - VkDevice device, - uint32_t queueFamilyIndex, - uint32_t queueIndex, - VkQueue* pQueue); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit( - VkQueue queue, - uint32_t submitCount, - const VkSubmitInfo* pSubmits, - VkFence fence); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle( - VkQueue queue); - -VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle( - VkDevice device); - -VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory( - VkDevice device, - const VkMemoryAllocateInfo* pAllocateInfo, - const VkAllocationCallbacks* pAllocator, - VkDeviceMemory* pMemory); - -VKAPI_ATTR void VKAPI_CALL vkFreeMemory( - VkDevice device, - VkDeviceMemory memory, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory( - VkDevice device, - VkDeviceMemory memory, - VkDeviceSize offset, - VkDeviceSize size, - VkMemoryMapFlags flags, - void** ppData); - -VKAPI_ATTR void VKAPI_CALL vkUnmapMemory( - VkDevice device, - VkDeviceMemory memory); - -VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges( - VkDevice device, - uint32_t memoryRangeCount, - const VkMappedMemoryRange* pMemoryRanges); - -VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges( - VkDevice device, - uint32_t memoryRangeCount, - const VkMappedMemoryRange* pMemoryRanges); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment( - VkDevice device, - VkDeviceMemory memory, - VkDeviceSize* pCommittedMemoryInBytes); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory( - VkDevice device, - VkBuffer buffer, - VkDeviceMemory memory, - VkDeviceSize memoryOffset); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory( - VkDevice device, - VkImage image, - VkDeviceMemory memory, - VkDeviceSize memoryOffset); - -VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements( - VkDevice device, - VkBuffer buffer, - VkMemoryRequirements* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements( - VkDevice device, - VkImage image, - VkMemoryRequirements* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements( - VkDevice device, - VkImage image, - uint32_t* pSparseMemoryRequirementCount, - VkSparseImageMemoryRequirements* pSparseMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkImageType type, - VkSampleCountFlagBits samples, - VkImageUsageFlags usage, - VkImageTiling tiling, - uint32_t* pPropertyCount, - VkSparseImageFormatProperties* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse( - VkQueue queue, - uint32_t bindInfoCount, - const VkBindSparseInfo* pBindInfo, - VkFence fence); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence( - VkDevice device, - const VkFenceCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkFence* pFence); - -VKAPI_ATTR void VKAPI_CALL vkDestroyFence( - VkDevice device, - VkFence fence, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkResetFences( - VkDevice device, - uint32_t fenceCount, - const VkFence* pFences); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus( - VkDevice device, - VkFence fence); - -VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences( - VkDevice device, - uint32_t fenceCount, - const VkFence* pFences, - VkBool32 waitAll, - uint64_t timeout); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore( - VkDevice device, - const VkSemaphoreCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSemaphore* pSemaphore); - -VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore( - VkDevice device, - VkSemaphore semaphore, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent( - VkDevice device, - const VkEventCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkEvent* pEvent); - -VKAPI_ATTR void VKAPI_CALL vkDestroyEvent( - VkDevice device, - VkEvent event, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus( - VkDevice device, - VkEvent event); - -VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent( - VkDevice device, - VkEvent event); - -VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent( - VkDevice device, - VkEvent event); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool( - VkDevice device, - const VkQueryPoolCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkQueryPool* pQueryPool); - -VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool( - VkDevice device, - VkQueryPool queryPool, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults( - VkDevice device, - VkQueryPool queryPool, - uint32_t firstQuery, - uint32_t queryCount, - size_t dataSize, - void* pData, - VkDeviceSize stride, - VkQueryResultFlags flags); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer( - VkDevice device, - const VkBufferCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkBuffer* pBuffer); - -VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer( - VkDevice device, - VkBuffer buffer, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView( - VkDevice device, - const VkBufferViewCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkBufferView* pView); - -VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView( - VkDevice device, - VkBufferView bufferView, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage( - VkDevice device, - const VkImageCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkImage* pImage); - -VKAPI_ATTR void VKAPI_CALL vkDestroyImage( - VkDevice device, - VkImage image, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout( - VkDevice device, - VkImage image, - const VkImageSubresource* pSubresource, - VkSubresourceLayout* pLayout); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView( - VkDevice device, - const VkImageViewCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkImageView* pView); - -VKAPI_ATTR void VKAPI_CALL vkDestroyImageView( - VkDevice device, - VkImageView imageView, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule( - VkDevice device, - const VkShaderModuleCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkShaderModule* pShaderModule); - -VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule( - VkDevice device, - VkShaderModule shaderModule, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache( - VkDevice device, - const VkPipelineCacheCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkPipelineCache* pPipelineCache); - -VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache( - VkDevice device, - VkPipelineCache pipelineCache, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData( - VkDevice device, - VkPipelineCache pipelineCache, - size_t* pDataSize, - void* pData); - -VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches( - VkDevice device, - VkPipelineCache dstCache, - uint32_t srcCacheCount, - const VkPipelineCache* pSrcCaches); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines( - VkDevice device, - VkPipelineCache pipelineCache, - uint32_t createInfoCount, - const VkGraphicsPipelineCreateInfo* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkPipeline* pPipelines); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines( - VkDevice device, - VkPipelineCache pipelineCache, - uint32_t createInfoCount, - const VkComputePipelineCreateInfo* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkPipeline* pPipelines); - -VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline( - VkDevice device, - VkPipeline pipeline, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout( - VkDevice device, - const VkPipelineLayoutCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkPipelineLayout* pPipelineLayout); - -VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout( - VkDevice device, - VkPipelineLayout pipelineLayout, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler( - VkDevice device, - const VkSamplerCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSampler* pSampler); - -VKAPI_ATTR void VKAPI_CALL vkDestroySampler( - VkDevice device, - VkSampler sampler, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout( - VkDevice device, - const VkDescriptorSetLayoutCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDescriptorSetLayout* pSetLayout); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout( - VkDevice device, - VkDescriptorSetLayout descriptorSetLayout, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool( - VkDevice device, - const VkDescriptorPoolCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDescriptorPool* pDescriptorPool); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool( - VkDevice device, - VkDescriptorPool descriptorPool, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool( - VkDevice device, - VkDescriptorPool descriptorPool, - VkDescriptorPoolResetFlags flags); - -VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets( - VkDevice device, - const VkDescriptorSetAllocateInfo* pAllocateInfo, - VkDescriptorSet* pDescriptorSets); - -VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets( - VkDevice device, - VkDescriptorPool descriptorPool, - uint32_t descriptorSetCount, - const VkDescriptorSet* pDescriptorSets); - -VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets( - VkDevice device, - uint32_t descriptorWriteCount, - const VkWriteDescriptorSet* pDescriptorWrites, - uint32_t descriptorCopyCount, - const VkCopyDescriptorSet* pDescriptorCopies); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer( - VkDevice device, - const VkFramebufferCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkFramebuffer* pFramebuffer); - -VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer( - VkDevice device, - VkFramebuffer framebuffer, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass( - VkDevice device, - const VkRenderPassCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkRenderPass* pRenderPass); - -VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass( - VkDevice device, - VkRenderPass renderPass, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity( - VkDevice device, - VkRenderPass renderPass, - VkExtent2D* pGranularity); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool( - VkDevice device, - const VkCommandPoolCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkCommandPool* pCommandPool); - -VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool( - VkDevice device, - VkCommandPool commandPool, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool( - VkDevice device, - VkCommandPool commandPool, - VkCommandPoolResetFlags flags); - -VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers( - VkDevice device, - const VkCommandBufferAllocateInfo* pAllocateInfo, - VkCommandBuffer* pCommandBuffers); - -VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers( - VkDevice device, - VkCommandPool commandPool, - uint32_t commandBufferCount, - const VkCommandBuffer* pCommandBuffers); - -VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer( - VkCommandBuffer commandBuffer, - const VkCommandBufferBeginInfo* pBeginInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer( - VkCommandBuffer commandBuffer); - -VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer( - VkCommandBuffer commandBuffer, - VkCommandBufferResetFlags flags); - -VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline( - VkCommandBuffer commandBuffer, - VkPipelineBindPoint pipelineBindPoint, - VkPipeline pipeline); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport( - VkCommandBuffer commandBuffer, - uint32_t firstViewport, - uint32_t viewportCount, - const VkViewport* pViewports); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor( - VkCommandBuffer commandBuffer, - uint32_t firstScissor, - uint32_t scissorCount, - const VkRect2D* pScissors); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth( - VkCommandBuffer commandBuffer, - float lineWidth); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias( - VkCommandBuffer commandBuffer, - float depthBiasConstantFactor, - float depthBiasClamp, - float depthBiasSlopeFactor); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants( - VkCommandBuffer commandBuffer, - const float blendConstants[4]); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds( - VkCommandBuffer commandBuffer, - float minDepthBounds, - float maxDepthBounds); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask( - VkCommandBuffer commandBuffer, - VkStencilFaceFlags faceMask, - uint32_t compareMask); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask( - VkCommandBuffer commandBuffer, - VkStencilFaceFlags faceMask, - uint32_t writeMask); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference( - VkCommandBuffer commandBuffer, - VkStencilFaceFlags faceMask, - uint32_t reference); - -VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets( - VkCommandBuffer commandBuffer, - VkPipelineBindPoint pipelineBindPoint, - VkPipelineLayout layout, - uint32_t firstSet, - uint32_t descriptorSetCount, - const VkDescriptorSet* pDescriptorSets, - uint32_t dynamicOffsetCount, - const uint32_t* pDynamicOffsets); - -VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkIndexType indexType); - -VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers( - VkCommandBuffer commandBuffer, - uint32_t firstBinding, - uint32_t bindingCount, - const VkBuffer* pBuffers, - const VkDeviceSize* pOffsets); - -VKAPI_ATTR void VKAPI_CALL vkCmdDraw( - VkCommandBuffer commandBuffer, - uint32_t vertexCount, - uint32_t instanceCount, - uint32_t firstVertex, - uint32_t firstInstance); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed( - VkCommandBuffer commandBuffer, - uint32_t indexCount, - uint32_t instanceCount, - uint32_t firstIndex, - int32_t vertexOffset, - uint32_t firstInstance); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - uint32_t drawCount, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - uint32_t drawCount, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDispatch( - VkCommandBuffer commandBuffer, - uint32_t groupCountX, - uint32_t groupCountY, - uint32_t groupCountZ); - -VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer( - VkCommandBuffer commandBuffer, - VkBuffer srcBuffer, - VkBuffer dstBuffer, - uint32_t regionCount, - const VkBufferCopy* pRegions); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage( - VkCommandBuffer commandBuffer, - VkImage srcImage, - VkImageLayout srcImageLayout, - VkImage dstImage, - VkImageLayout dstImageLayout, - uint32_t regionCount, - const VkImageCopy* pRegions); - -VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage( - VkCommandBuffer commandBuffer, - VkImage srcImage, - VkImageLayout srcImageLayout, - VkImage dstImage, - VkImageLayout dstImageLayout, - uint32_t regionCount, - const VkImageBlit* pRegions, - VkFilter filter); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage( - VkCommandBuffer commandBuffer, - VkBuffer srcBuffer, - VkImage dstImage, - VkImageLayout dstImageLayout, - uint32_t regionCount, - const VkBufferImageCopy* pRegions); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer( - VkCommandBuffer commandBuffer, - VkImage srcImage, - VkImageLayout srcImageLayout, - VkBuffer dstBuffer, - uint32_t regionCount, - const VkBufferImageCopy* pRegions); - -VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer( - VkCommandBuffer commandBuffer, - VkBuffer dstBuffer, - VkDeviceSize dstOffset, - VkDeviceSize dataSize, - const void* pData); - -VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer( - VkCommandBuffer commandBuffer, - VkBuffer dstBuffer, - VkDeviceSize dstOffset, - VkDeviceSize size, - uint32_t data); - -VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage( - VkCommandBuffer commandBuffer, - VkImage image, - VkImageLayout imageLayout, - const VkClearColorValue* pColor, - uint32_t rangeCount, - const VkImageSubresourceRange* pRanges); - -VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage( - VkCommandBuffer commandBuffer, - VkImage image, - VkImageLayout imageLayout, - const VkClearDepthStencilValue* pDepthStencil, - uint32_t rangeCount, - const VkImageSubresourceRange* pRanges); - -VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments( - VkCommandBuffer commandBuffer, - uint32_t attachmentCount, - const VkClearAttachment* pAttachments, - uint32_t rectCount, - const VkClearRect* pRects); - -VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage( - VkCommandBuffer commandBuffer, - VkImage srcImage, - VkImageLayout srcImageLayout, - VkImage dstImage, - VkImageLayout dstImageLayout, - uint32_t regionCount, - const VkImageResolve* pRegions); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent( - VkCommandBuffer commandBuffer, - VkEvent event, - VkPipelineStageFlags stageMask); - -VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent( - VkCommandBuffer commandBuffer, - VkEvent event, - VkPipelineStageFlags stageMask); - -VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents( - VkCommandBuffer commandBuffer, - uint32_t eventCount, - const VkEvent* pEvents, - VkPipelineStageFlags srcStageMask, - VkPipelineStageFlags dstStageMask, - uint32_t memoryBarrierCount, - const VkMemoryBarrier* pMemoryBarriers, - uint32_t bufferMemoryBarrierCount, - const VkBufferMemoryBarrier* pBufferMemoryBarriers, - uint32_t imageMemoryBarrierCount, - const VkImageMemoryBarrier* pImageMemoryBarriers); - -VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( - VkCommandBuffer commandBuffer, - VkPipelineStageFlags srcStageMask, - VkPipelineStageFlags dstStageMask, - VkDependencyFlags dependencyFlags, - uint32_t memoryBarrierCount, - const VkMemoryBarrier* pMemoryBarriers, - uint32_t bufferMemoryBarrierCount, - const VkBufferMemoryBarrier* pBufferMemoryBarriers, - uint32_t imageMemoryBarrierCount, - const VkImageMemoryBarrier* pImageMemoryBarriers); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t query, - VkQueryControlFlags flags); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t query); - -VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t firstQuery, - uint32_t queryCount); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp( - VkCommandBuffer commandBuffer, - VkPipelineStageFlagBits pipelineStage, - VkQueryPool queryPool, - uint32_t query); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t firstQuery, - uint32_t queryCount, - VkBuffer dstBuffer, - VkDeviceSize dstOffset, - VkDeviceSize stride, - VkQueryResultFlags flags); - -VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants( - VkCommandBuffer commandBuffer, - VkPipelineLayout layout, - VkShaderStageFlags stageFlags, - uint32_t offset, - uint32_t size, - const void* pValues); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass( - VkCommandBuffer commandBuffer, - const VkRenderPassBeginInfo* pRenderPassBegin, - VkSubpassContents contents); - -VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass( - VkCommandBuffer commandBuffer, - VkSubpassContents contents); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass( - VkCommandBuffer commandBuffer); - -VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands( - VkCommandBuffer commandBuffer, - uint32_t commandBufferCount, - const VkCommandBuffer* pCommandBuffers); -#endif - - -#define VK_VERSION_1_1 1 -// Vulkan 1.1 version number -#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0 - -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) -#define VK_MAX_DEVICE_GROUP_SIZE 32U -#define VK_LUID_SIZE 8U -#define VK_QUEUE_FAMILY_EXTERNAL (~1U) - -typedef enum VkPointClippingBehavior { - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0, - VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1, - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, - VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, - VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF -} VkPointClippingBehavior; - -typedef enum VkTessellationDomainOrigin { - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0, - VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1, - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, - VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, - VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF -} VkTessellationDomainOrigin; - -typedef enum VkSamplerYcbcrModelConversion { - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF -} VkSamplerYcbcrModelConversion; - -typedef enum VkSamplerYcbcrRange { - VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0, - VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1, - VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, - VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, - VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF -} VkSamplerYcbcrRange; - -typedef enum VkChromaLocation { - VK_CHROMA_LOCATION_COSITED_EVEN = 0, - VK_CHROMA_LOCATION_MIDPOINT = 1, - VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN, - VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT, - VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF -} VkChromaLocation; - -typedef enum VkDescriptorUpdateTemplateType { - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorUpdateTemplateType; - -typedef enum VkSubgroupFeatureFlagBits { - VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001, - VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002, - VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004, - VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008, - VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010, - VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020, - VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040, - VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080, - VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100, - VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSubgroupFeatureFlagBits; -typedef VkFlags VkSubgroupFeatureFlags; - -typedef enum VkPeerMemoryFeatureFlagBits { - VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001, - VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002, - VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004, - VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008, - VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT, - VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT, - VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT, - VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT, - VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPeerMemoryFeatureFlagBits; -typedef VkFlags VkPeerMemoryFeatureFlags; - -typedef enum VkMemoryAllocateFlagBits { - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004, - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, - VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkMemoryAllocateFlagBits; -typedef VkFlags VkMemoryAllocateFlags; -typedef VkFlags VkCommandPoolTrimFlags; -typedef VkFlags VkDescriptorUpdateTemplateCreateFlags; - -typedef enum VkExternalMemoryHandleTypeFlagBits { - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkExternalMemoryHandleTypeFlagBits; -typedef VkFlags VkExternalMemoryHandleTypeFlags; - -typedef enum VkExternalMemoryFeatureFlagBits { - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001, - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002, - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004, - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT, - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT, - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT, - VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkExternalMemoryFeatureFlagBits; -typedef VkFlags VkExternalMemoryFeatureFlags; - -typedef enum VkExternalFenceHandleTypeFlagBits { - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, - VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, - VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT, - VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkExternalFenceHandleTypeFlagBits; -typedef VkFlags VkExternalFenceHandleTypeFlags; - -typedef enum VkExternalFenceFeatureFlagBits { - VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001, - VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002, - VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT, - VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT, - VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkExternalFenceFeatureFlagBits; -typedef VkFlags VkExternalFenceFeatureFlags; - -typedef enum VkFenceImportFlagBits { - VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001, - VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT, - VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkFenceImportFlagBits; -typedef VkFlags VkFenceImportFlags; - -typedef enum VkSemaphoreImportFlagBits { - VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001, - VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT, - VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSemaphoreImportFlagBits; -typedef VkFlags VkSemaphoreImportFlags; - -typedef enum VkExternalSemaphoreHandleTypeFlagBits { - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkExternalSemaphoreHandleTypeFlagBits; -typedef VkFlags VkExternalSemaphoreHandleTypeFlags; - -typedef enum VkExternalSemaphoreFeatureFlagBits { - VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001, - VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002, - VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT, - VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT, - VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkExternalSemaphoreFeatureFlagBits; -typedef VkFlags VkExternalSemaphoreFeatureFlags; -typedef struct VkPhysicalDeviceSubgroupProperties { - VkStructureType sType; - void* pNext; - uint32_t subgroupSize; - VkShaderStageFlags supportedStages; - VkSubgroupFeatureFlags supportedOperations; - VkBool32 quadOperationsInAllStages; -} VkPhysicalDeviceSubgroupProperties; - -typedef struct VkBindBufferMemoryInfo { - VkStructureType sType; - const void* pNext; - VkBuffer buffer; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; -} VkBindBufferMemoryInfo; - -typedef struct VkBindImageMemoryInfo { - VkStructureType sType; - const void* pNext; - VkImage image; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; -} VkBindImageMemoryInfo; - -typedef struct VkPhysicalDevice16BitStorageFeatures { - VkStructureType sType; - void* pNext; - VkBool32 storageBuffer16BitAccess; - VkBool32 uniformAndStorageBuffer16BitAccess; - VkBool32 storagePushConstant16; - VkBool32 storageInputOutput16; -} VkPhysicalDevice16BitStorageFeatures; - -typedef struct VkMemoryDedicatedRequirements { - VkStructureType sType; - void* pNext; - VkBool32 prefersDedicatedAllocation; - VkBool32 requiresDedicatedAllocation; -} VkMemoryDedicatedRequirements; - -typedef struct VkMemoryDedicatedAllocateInfo { - VkStructureType sType; - const void* pNext; - VkImage image; - VkBuffer buffer; -} VkMemoryDedicatedAllocateInfo; - -typedef struct VkMemoryAllocateFlagsInfo { - VkStructureType sType; - const void* pNext; - VkMemoryAllocateFlags flags; - uint32_t deviceMask; -} VkMemoryAllocateFlagsInfo; - -typedef struct VkDeviceGroupRenderPassBeginInfo { - VkStructureType sType; - const void* pNext; - uint32_t deviceMask; - uint32_t deviceRenderAreaCount; - const VkRect2D* pDeviceRenderAreas; -} VkDeviceGroupRenderPassBeginInfo; - -typedef struct VkDeviceGroupCommandBufferBeginInfo { - VkStructureType sType; - const void* pNext; - uint32_t deviceMask; -} VkDeviceGroupCommandBufferBeginInfo; - -typedef struct VkDeviceGroupSubmitInfo { - VkStructureType sType; - const void* pNext; - uint32_t waitSemaphoreCount; - const uint32_t* pWaitSemaphoreDeviceIndices; - uint32_t commandBufferCount; - const uint32_t* pCommandBufferDeviceMasks; - uint32_t signalSemaphoreCount; - const uint32_t* pSignalSemaphoreDeviceIndices; -} VkDeviceGroupSubmitInfo; - -typedef struct VkDeviceGroupBindSparseInfo { - VkStructureType sType; - const void* pNext; - uint32_t resourceDeviceIndex; - uint32_t memoryDeviceIndex; -} VkDeviceGroupBindSparseInfo; - -typedef struct VkBindBufferMemoryDeviceGroupInfo { - VkStructureType sType; - const void* pNext; - uint32_t deviceIndexCount; - const uint32_t* pDeviceIndices; -} VkBindBufferMemoryDeviceGroupInfo; - -typedef struct VkBindImageMemoryDeviceGroupInfo { - VkStructureType sType; - const void* pNext; - uint32_t deviceIndexCount; - const uint32_t* pDeviceIndices; - uint32_t splitInstanceBindRegionCount; - const VkRect2D* pSplitInstanceBindRegions; -} VkBindImageMemoryDeviceGroupInfo; - -typedef struct VkPhysicalDeviceGroupProperties { - VkStructureType sType; - void* pNext; - uint32_t physicalDeviceCount; - VkPhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE]; - VkBool32 subsetAllocation; -} VkPhysicalDeviceGroupProperties; - -typedef struct VkDeviceGroupDeviceCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t physicalDeviceCount; - const VkPhysicalDevice* pPhysicalDevices; -} VkDeviceGroupDeviceCreateInfo; - -typedef struct VkBufferMemoryRequirementsInfo2 { - VkStructureType sType; - const void* pNext; - VkBuffer buffer; -} VkBufferMemoryRequirementsInfo2; - -typedef struct VkImageMemoryRequirementsInfo2 { - VkStructureType sType; - const void* pNext; - VkImage image; -} VkImageMemoryRequirementsInfo2; - -typedef struct VkImageSparseMemoryRequirementsInfo2 { - VkStructureType sType; - const void* pNext; - VkImage image; -} VkImageSparseMemoryRequirementsInfo2; - -typedef struct VkMemoryRequirements2 { - VkStructureType sType; - void* pNext; - VkMemoryRequirements memoryRequirements; -} VkMemoryRequirements2; - -typedef struct VkSparseImageMemoryRequirements2 { - VkStructureType sType; - void* pNext; - VkSparseImageMemoryRequirements memoryRequirements; -} VkSparseImageMemoryRequirements2; - -typedef struct VkPhysicalDeviceFeatures2 { - VkStructureType sType; - void* pNext; - VkPhysicalDeviceFeatures features; -} VkPhysicalDeviceFeatures2; - -typedef struct VkPhysicalDeviceProperties2 { - VkStructureType sType; - void* pNext; - VkPhysicalDeviceProperties properties; -} VkPhysicalDeviceProperties2; - -typedef struct VkFormatProperties2 { - VkStructureType sType; - void* pNext; - VkFormatProperties formatProperties; -} VkFormatProperties2; - -typedef struct VkImageFormatProperties2 { - VkStructureType sType; - void* pNext; - VkImageFormatProperties imageFormatProperties; -} VkImageFormatProperties2; - -typedef struct VkPhysicalDeviceImageFormatInfo2 { - VkStructureType sType; - const void* pNext; - VkFormat format; - VkImageType type; - VkImageTiling tiling; - VkImageUsageFlags usage; - VkImageCreateFlags flags; -} VkPhysicalDeviceImageFormatInfo2; - -typedef struct VkQueueFamilyProperties2 { - VkStructureType sType; - void* pNext; - VkQueueFamilyProperties queueFamilyProperties; -} VkQueueFamilyProperties2; - -typedef struct VkPhysicalDeviceMemoryProperties2 { - VkStructureType sType; - void* pNext; - VkPhysicalDeviceMemoryProperties memoryProperties; -} VkPhysicalDeviceMemoryProperties2; - -typedef struct VkSparseImageFormatProperties2 { - VkStructureType sType; - void* pNext; - VkSparseImageFormatProperties properties; -} VkSparseImageFormatProperties2; - -typedef struct VkPhysicalDeviceSparseImageFormatInfo2 { - VkStructureType sType; - const void* pNext; - VkFormat format; - VkImageType type; - VkSampleCountFlagBits samples; - VkImageUsageFlags usage; - VkImageTiling tiling; -} VkPhysicalDeviceSparseImageFormatInfo2; - -typedef struct VkPhysicalDevicePointClippingProperties { - VkStructureType sType; - void* pNext; - VkPointClippingBehavior pointClippingBehavior; -} VkPhysicalDevicePointClippingProperties; - -typedef struct VkInputAttachmentAspectReference { - uint32_t subpass; - uint32_t inputAttachmentIndex; - VkImageAspectFlags aspectMask; -} VkInputAttachmentAspectReference; - -typedef struct VkRenderPassInputAttachmentAspectCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t aspectReferenceCount; - const VkInputAttachmentAspectReference* pAspectReferences; -} VkRenderPassInputAttachmentAspectCreateInfo; - -typedef struct VkImageViewUsageCreateInfo { - VkStructureType sType; - const void* pNext; - VkImageUsageFlags usage; -} VkImageViewUsageCreateInfo; - -typedef struct VkPipelineTessellationDomainOriginStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkTessellationDomainOrigin domainOrigin; -} VkPipelineTessellationDomainOriginStateCreateInfo; - -typedef struct VkRenderPassMultiviewCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t subpassCount; - const uint32_t* pViewMasks; - uint32_t dependencyCount; - const int32_t* pViewOffsets; - uint32_t correlationMaskCount; - const uint32_t* pCorrelationMasks; -} VkRenderPassMultiviewCreateInfo; - -typedef struct VkPhysicalDeviceMultiviewFeatures { - VkStructureType sType; - void* pNext; - VkBool32 multiview; - VkBool32 multiviewGeometryShader; - VkBool32 multiviewTessellationShader; -} VkPhysicalDeviceMultiviewFeatures; - -typedef struct VkPhysicalDeviceMultiviewProperties { - VkStructureType sType; - void* pNext; - uint32_t maxMultiviewViewCount; - uint32_t maxMultiviewInstanceIndex; -} VkPhysicalDeviceMultiviewProperties; - -typedef struct VkPhysicalDeviceVariablePointersFeatures { - VkStructureType sType; - void* pNext; - VkBool32 variablePointersStorageBuffer; - VkBool32 variablePointers; -} VkPhysicalDeviceVariablePointersFeatures; - -typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures; - -typedef struct VkPhysicalDeviceProtectedMemoryFeatures { - VkStructureType sType; - void* pNext; - VkBool32 protectedMemory; -} VkPhysicalDeviceProtectedMemoryFeatures; - -typedef struct VkPhysicalDeviceProtectedMemoryProperties { - VkStructureType sType; - void* pNext; - VkBool32 protectedNoFault; -} VkPhysicalDeviceProtectedMemoryProperties; - -typedef struct VkDeviceQueueInfo2 { - VkStructureType sType; - const void* pNext; - VkDeviceQueueCreateFlags flags; - uint32_t queueFamilyIndex; - uint32_t queueIndex; -} VkDeviceQueueInfo2; - -typedef struct VkProtectedSubmitInfo { - VkStructureType sType; - const void* pNext; - VkBool32 protectedSubmit; -} VkProtectedSubmitInfo; - -typedef struct VkSamplerYcbcrConversionCreateInfo { - VkStructureType sType; - const void* pNext; - VkFormat format; - VkSamplerYcbcrModelConversion ycbcrModel; - VkSamplerYcbcrRange ycbcrRange; - VkComponentMapping components; - VkChromaLocation xChromaOffset; - VkChromaLocation yChromaOffset; - VkFilter chromaFilter; - VkBool32 forceExplicitReconstruction; -} VkSamplerYcbcrConversionCreateInfo; - -typedef struct VkSamplerYcbcrConversionInfo { - VkStructureType sType; - const void* pNext; - VkSamplerYcbcrConversion conversion; -} VkSamplerYcbcrConversionInfo; - -typedef struct VkBindImagePlaneMemoryInfo { - VkStructureType sType; - const void* pNext; - VkImageAspectFlagBits planeAspect; -} VkBindImagePlaneMemoryInfo; - -typedef struct VkImagePlaneMemoryRequirementsInfo { - VkStructureType sType; - const void* pNext; - VkImageAspectFlagBits planeAspect; -} VkImagePlaneMemoryRequirementsInfo; - -typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures { - VkStructureType sType; - void* pNext; - VkBool32 samplerYcbcrConversion; -} VkPhysicalDeviceSamplerYcbcrConversionFeatures; - -typedef struct VkSamplerYcbcrConversionImageFormatProperties { - VkStructureType sType; - void* pNext; - uint32_t combinedImageSamplerDescriptorCount; -} VkSamplerYcbcrConversionImageFormatProperties; - -typedef struct VkDescriptorUpdateTemplateEntry { - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; - VkDescriptorType descriptorType; - size_t offset; - size_t stride; -} VkDescriptorUpdateTemplateEntry; - -typedef struct VkDescriptorUpdateTemplateCreateInfo { - VkStructureType sType; - const void* pNext; - VkDescriptorUpdateTemplateCreateFlags flags; - uint32_t descriptorUpdateEntryCount; - const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries; - VkDescriptorUpdateTemplateType templateType; - VkDescriptorSetLayout descriptorSetLayout; - VkPipelineBindPoint pipelineBindPoint; - VkPipelineLayout pipelineLayout; - uint32_t set; -} VkDescriptorUpdateTemplateCreateInfo; - -typedef struct VkExternalMemoryProperties { - VkExternalMemoryFeatureFlags externalMemoryFeatures; - VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes; - VkExternalMemoryHandleTypeFlags compatibleHandleTypes; -} VkExternalMemoryProperties; - -typedef struct VkPhysicalDeviceExternalImageFormatInfo { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagBits handleType; -} VkPhysicalDeviceExternalImageFormatInfo; - -typedef struct VkExternalImageFormatProperties { - VkStructureType sType; - void* pNext; - VkExternalMemoryProperties externalMemoryProperties; -} VkExternalImageFormatProperties; - -typedef struct VkPhysicalDeviceExternalBufferInfo { - VkStructureType sType; - const void* pNext; - VkBufferCreateFlags flags; - VkBufferUsageFlags usage; - VkExternalMemoryHandleTypeFlagBits handleType; -} VkPhysicalDeviceExternalBufferInfo; - -typedef struct VkExternalBufferProperties { - VkStructureType sType; - void* pNext; - VkExternalMemoryProperties externalMemoryProperties; -} VkExternalBufferProperties; - -typedef struct VkPhysicalDeviceIDProperties { - VkStructureType sType; - void* pNext; - uint8_t deviceUUID[VK_UUID_SIZE]; - uint8_t driverUUID[VK_UUID_SIZE]; - uint8_t deviceLUID[VK_LUID_SIZE]; - uint32_t deviceNodeMask; - VkBool32 deviceLUIDValid; -} VkPhysicalDeviceIDProperties; - -typedef struct VkExternalMemoryImageCreateInfo { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlags handleTypes; -} VkExternalMemoryImageCreateInfo; - -typedef struct VkExternalMemoryBufferCreateInfo { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlags handleTypes; -} VkExternalMemoryBufferCreateInfo; - -typedef struct VkExportMemoryAllocateInfo { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlags handleTypes; -} VkExportMemoryAllocateInfo; - -typedef struct VkPhysicalDeviceExternalFenceInfo { - VkStructureType sType; - const void* pNext; - VkExternalFenceHandleTypeFlagBits handleType; -} VkPhysicalDeviceExternalFenceInfo; - -typedef struct VkExternalFenceProperties { - VkStructureType sType; - void* pNext; - VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes; - VkExternalFenceHandleTypeFlags compatibleHandleTypes; - VkExternalFenceFeatureFlags externalFenceFeatures; -} VkExternalFenceProperties; - -typedef struct VkExportFenceCreateInfo { - VkStructureType sType; - const void* pNext; - VkExternalFenceHandleTypeFlags handleTypes; -} VkExportFenceCreateInfo; - -typedef struct VkExportSemaphoreCreateInfo { - VkStructureType sType; - const void* pNext; - VkExternalSemaphoreHandleTypeFlags handleTypes; -} VkExportSemaphoreCreateInfo; - -typedef struct VkPhysicalDeviceExternalSemaphoreInfo { - VkStructureType sType; - const void* pNext; - VkExternalSemaphoreHandleTypeFlagBits handleType; -} VkPhysicalDeviceExternalSemaphoreInfo; - -typedef struct VkExternalSemaphoreProperties { - VkStructureType sType; - void* pNext; - VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes; - VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes; - VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures; -} VkExternalSemaphoreProperties; - -typedef struct VkPhysicalDeviceMaintenance3Properties { - VkStructureType sType; - void* pNext; - uint32_t maxPerSetDescriptors; - VkDeviceSize maxMemoryAllocationSize; -} VkPhysicalDeviceMaintenance3Properties; - -typedef struct VkDescriptorSetLayoutSupport { - VkStructureType sType; - void* pNext; - VkBool32 supported; -} VkDescriptorSetLayoutSupport; - -typedef struct VkPhysicalDeviceShaderDrawParametersFeatures { - VkStructureType sType; - void* pNext; - VkBool32 shaderDrawParameters; -} VkPhysicalDeviceShaderDrawParametersFeatures; - -typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures; - -typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion); -typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); -typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); -typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); -typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask); -typedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); -typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); -typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties); -typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); -typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue); -typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion); -typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); -typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); -typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion( - uint32_t* pApiVersion); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2( - VkDevice device, - uint32_t bindInfoCount, - const VkBindBufferMemoryInfo* pBindInfos); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2( - VkDevice device, - uint32_t bindInfoCount, - const VkBindImageMemoryInfo* pBindInfos); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures( - VkDevice device, - uint32_t heapIndex, - uint32_t localDeviceIndex, - uint32_t remoteDeviceIndex, - VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask( - VkCommandBuffer commandBuffer, - uint32_t deviceMask); - -VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase( - VkCommandBuffer commandBuffer, - uint32_t baseGroupX, - uint32_t baseGroupY, - uint32_t baseGroupZ, - uint32_t groupCountX, - uint32_t groupCountY, - uint32_t groupCountZ); - -VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups( - VkInstance instance, - uint32_t* pPhysicalDeviceGroupCount, - VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2( - VkDevice device, - const VkImageMemoryRequirementsInfo2* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2( - VkDevice device, - const VkBufferMemoryRequirementsInfo2* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2( - VkDevice device, - const VkImageSparseMemoryRequirementsInfo2* pInfo, - uint32_t* pSparseMemoryRequirementCount, - VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceFeatures2* pFeatures); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceProperties2* pProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkFormatProperties2* pFormatProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, - VkImageFormatProperties2* pImageFormatProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2( - VkPhysicalDevice physicalDevice, - uint32_t* pQueueFamilyPropertyCount, - VkQueueFamilyProperties2* pQueueFamilyProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceMemoryProperties2* pMemoryProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, - uint32_t* pPropertyCount, - VkSparseImageFormatProperties2* pProperties); - -VKAPI_ATTR void VKAPI_CALL vkTrimCommandPool( - VkDevice device, - VkCommandPool commandPool, - VkCommandPoolTrimFlags flags); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2( - VkDevice device, - const VkDeviceQueueInfo2* pQueueInfo, - VkQueue* pQueue); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion( - VkDevice device, - const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSamplerYcbcrConversion* pYcbcrConversion); - -VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion( - VkDevice device, - VkSamplerYcbcrConversion ycbcrConversion, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate( - VkDevice device, - const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate( - VkDevice device, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate( - VkDevice device, - VkDescriptorSet descriptorSet, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - const void* pData); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, - VkExternalBufferProperties* pExternalBufferProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, - VkExternalFenceProperties* pExternalFenceProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, - VkExternalSemaphoreProperties* pExternalSemaphoreProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport( - VkDevice device, - const VkDescriptorSetLayoutCreateInfo* pCreateInfo, - VkDescriptorSetLayoutSupport* pSupport); -#endif - - -#define VK_VERSION_1_2 1 -// Vulkan 1.2 version number -#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0 - -#define VK_MAX_DRIVER_NAME_SIZE 256U -#define VK_MAX_DRIVER_INFO_SIZE 256U - -typedef enum VkDriverId { - VK_DRIVER_ID_AMD_PROPRIETARY = 1, - VK_DRIVER_ID_AMD_OPEN_SOURCE = 2, - VK_DRIVER_ID_MESA_RADV = 3, - VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4, - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5, - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6, - VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7, - VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8, - VK_DRIVER_ID_ARM_PROPRIETARY = 9, - VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10, - VK_DRIVER_ID_GGP_PROPRIETARY = 11, - VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12, - VK_DRIVER_ID_MESA_LLVMPIPE = 13, - VK_DRIVER_ID_MOLTENVK = 14, - VK_DRIVER_ID_COREAVI_PROPRIETARY = 15, - VK_DRIVER_ID_JUICE_PROPRIETARY = 16, - VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17, - VK_DRIVER_ID_MESA_TURNIP = 18, - VK_DRIVER_ID_MESA_V3DV = 19, - VK_DRIVER_ID_MESA_PANVK = 20, - VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21, - VK_DRIVER_ID_MESA_VENUS = 22, - VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY, - VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE, - VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV, - VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY, - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA, - VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY, - VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY, - VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY, - VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER, - VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY, - VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY, - VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF -} VkDriverId; - -typedef enum VkShaderFloatControlsIndependence { - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF -} VkShaderFloatControlsIndependence; - -typedef enum VkSamplerReductionMode { - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0, - VK_SAMPLER_REDUCTION_MODE_MIN = 1, - VK_SAMPLER_REDUCTION_MODE_MAX = 2, - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, - VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN, - VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX, - VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF -} VkSamplerReductionMode; - -typedef enum VkSemaphoreType { - VK_SEMAPHORE_TYPE_BINARY = 0, - VK_SEMAPHORE_TYPE_TIMELINE = 1, - VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY, - VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE, - VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkSemaphoreType; - -typedef enum VkResolveModeFlagBits { - VK_RESOLVE_MODE_NONE = 0, - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001, - VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002, - VK_RESOLVE_MODE_MIN_BIT = 0x00000004, - VK_RESOLVE_MODE_MAX_BIT = 0x00000008, - VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE, - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, - VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT, - VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT, - VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT, - VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkResolveModeFlagBits; -typedef VkFlags VkResolveModeFlags; - -typedef enum VkDescriptorBindingFlagBits { - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001, - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002, - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004, - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008, - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, - VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorBindingFlagBits; -typedef VkFlags VkDescriptorBindingFlags; - -typedef enum VkSemaphoreWaitFlagBits { - VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001, - VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT, - VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSemaphoreWaitFlagBits; -typedef VkFlags VkSemaphoreWaitFlags; -typedef struct VkPhysicalDeviceVulkan11Features { - VkStructureType sType; - void* pNext; - VkBool32 storageBuffer16BitAccess; - VkBool32 uniformAndStorageBuffer16BitAccess; - VkBool32 storagePushConstant16; - VkBool32 storageInputOutput16; - VkBool32 multiview; - VkBool32 multiviewGeometryShader; - VkBool32 multiviewTessellationShader; - VkBool32 variablePointersStorageBuffer; - VkBool32 variablePointers; - VkBool32 protectedMemory; - VkBool32 samplerYcbcrConversion; - VkBool32 shaderDrawParameters; -} VkPhysicalDeviceVulkan11Features; - -typedef struct VkPhysicalDeviceVulkan11Properties { - VkStructureType sType; - void* pNext; - uint8_t deviceUUID[VK_UUID_SIZE]; - uint8_t driverUUID[VK_UUID_SIZE]; - uint8_t deviceLUID[VK_LUID_SIZE]; - uint32_t deviceNodeMask; - VkBool32 deviceLUIDValid; - uint32_t subgroupSize; - VkShaderStageFlags subgroupSupportedStages; - VkSubgroupFeatureFlags subgroupSupportedOperations; - VkBool32 subgroupQuadOperationsInAllStages; - VkPointClippingBehavior pointClippingBehavior; - uint32_t maxMultiviewViewCount; - uint32_t maxMultiviewInstanceIndex; - VkBool32 protectedNoFault; - uint32_t maxPerSetDescriptors; - VkDeviceSize maxMemoryAllocationSize; -} VkPhysicalDeviceVulkan11Properties; - -typedef struct VkPhysicalDeviceVulkan12Features { - VkStructureType sType; - void* pNext; - VkBool32 samplerMirrorClampToEdge; - VkBool32 drawIndirectCount; - VkBool32 storageBuffer8BitAccess; - VkBool32 uniformAndStorageBuffer8BitAccess; - VkBool32 storagePushConstant8; - VkBool32 shaderBufferInt64Atomics; - VkBool32 shaderSharedInt64Atomics; - VkBool32 shaderFloat16; - VkBool32 shaderInt8; - VkBool32 descriptorIndexing; - VkBool32 shaderInputAttachmentArrayDynamicIndexing; - VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; - VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; - VkBool32 shaderUniformBufferArrayNonUniformIndexing; - VkBool32 shaderSampledImageArrayNonUniformIndexing; - VkBool32 shaderStorageBufferArrayNonUniformIndexing; - VkBool32 shaderStorageImageArrayNonUniformIndexing; - VkBool32 shaderInputAttachmentArrayNonUniformIndexing; - VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; - VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; - VkBool32 descriptorBindingUniformBufferUpdateAfterBind; - VkBool32 descriptorBindingSampledImageUpdateAfterBind; - VkBool32 descriptorBindingStorageImageUpdateAfterBind; - VkBool32 descriptorBindingStorageBufferUpdateAfterBind; - VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; - VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; - VkBool32 descriptorBindingUpdateUnusedWhilePending; - VkBool32 descriptorBindingPartiallyBound; - VkBool32 descriptorBindingVariableDescriptorCount; - VkBool32 runtimeDescriptorArray; - VkBool32 samplerFilterMinmax; - VkBool32 scalarBlockLayout; - VkBool32 imagelessFramebuffer; - VkBool32 uniformBufferStandardLayout; - VkBool32 shaderSubgroupExtendedTypes; - VkBool32 separateDepthStencilLayouts; - VkBool32 hostQueryReset; - VkBool32 timelineSemaphore; - VkBool32 bufferDeviceAddress; - VkBool32 bufferDeviceAddressCaptureReplay; - VkBool32 bufferDeviceAddressMultiDevice; - VkBool32 vulkanMemoryModel; - VkBool32 vulkanMemoryModelDeviceScope; - VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; - VkBool32 shaderOutputViewportIndex; - VkBool32 shaderOutputLayer; - VkBool32 subgroupBroadcastDynamicId; -} VkPhysicalDeviceVulkan12Features; - -typedef struct VkConformanceVersion { - uint8_t major; - uint8_t minor; - uint8_t subminor; - uint8_t patch; -} VkConformanceVersion; - -typedef struct VkPhysicalDeviceVulkan12Properties { - VkStructureType sType; - void* pNext; - VkDriverId driverID; - char driverName[VK_MAX_DRIVER_NAME_SIZE]; - char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; - VkConformanceVersion conformanceVersion; - VkShaderFloatControlsIndependence denormBehaviorIndependence; - VkShaderFloatControlsIndependence roundingModeIndependence; - VkBool32 shaderSignedZeroInfNanPreserveFloat16; - VkBool32 shaderSignedZeroInfNanPreserveFloat32; - VkBool32 shaderSignedZeroInfNanPreserveFloat64; - VkBool32 shaderDenormPreserveFloat16; - VkBool32 shaderDenormPreserveFloat32; - VkBool32 shaderDenormPreserveFloat64; - VkBool32 shaderDenormFlushToZeroFloat16; - VkBool32 shaderDenormFlushToZeroFloat32; - VkBool32 shaderDenormFlushToZeroFloat64; - VkBool32 shaderRoundingModeRTEFloat16; - VkBool32 shaderRoundingModeRTEFloat32; - VkBool32 shaderRoundingModeRTEFloat64; - VkBool32 shaderRoundingModeRTZFloat16; - VkBool32 shaderRoundingModeRTZFloat32; - VkBool32 shaderRoundingModeRTZFloat64; - uint32_t maxUpdateAfterBindDescriptorsInAllPools; - VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; - VkBool32 shaderSampledImageArrayNonUniformIndexingNative; - VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; - VkBool32 shaderStorageImageArrayNonUniformIndexingNative; - VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; - VkBool32 robustBufferAccessUpdateAfterBind; - VkBool32 quadDivergentImplicitLod; - uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; - uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; - uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; - uint32_t maxPerStageUpdateAfterBindResources; - uint32_t maxDescriptorSetUpdateAfterBindSamplers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindSampledImages; - uint32_t maxDescriptorSetUpdateAfterBindStorageImages; - uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; - VkResolveModeFlags supportedDepthResolveModes; - VkResolveModeFlags supportedStencilResolveModes; - VkBool32 independentResolveNone; - VkBool32 independentResolve; - VkBool32 filterMinmaxSingleComponentFormats; - VkBool32 filterMinmaxImageComponentMapping; - uint64_t maxTimelineSemaphoreValueDifference; - VkSampleCountFlags framebufferIntegerColorSampleCounts; -} VkPhysicalDeviceVulkan12Properties; - -typedef struct VkImageFormatListCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t viewFormatCount; - const VkFormat* pViewFormats; -} VkImageFormatListCreateInfo; - -typedef struct VkAttachmentDescription2 { - VkStructureType sType; - const void* pNext; - VkAttachmentDescriptionFlags flags; - VkFormat format; - VkSampleCountFlagBits samples; - VkAttachmentLoadOp loadOp; - VkAttachmentStoreOp storeOp; - VkAttachmentLoadOp stencilLoadOp; - VkAttachmentStoreOp stencilStoreOp; - VkImageLayout initialLayout; - VkImageLayout finalLayout; -} VkAttachmentDescription2; - -typedef struct VkAttachmentReference2 { - VkStructureType sType; - const void* pNext; - uint32_t attachment; - VkImageLayout layout; - VkImageAspectFlags aspectMask; -} VkAttachmentReference2; - -typedef struct VkSubpassDescription2 { - VkStructureType sType; - const void* pNext; - VkSubpassDescriptionFlags flags; - VkPipelineBindPoint pipelineBindPoint; - uint32_t viewMask; - uint32_t inputAttachmentCount; - const VkAttachmentReference2* pInputAttachments; - uint32_t colorAttachmentCount; - const VkAttachmentReference2* pColorAttachments; - const VkAttachmentReference2* pResolveAttachments; - const VkAttachmentReference2* pDepthStencilAttachment; - uint32_t preserveAttachmentCount; - const uint32_t* pPreserveAttachments; -} VkSubpassDescription2; - -typedef struct VkSubpassDependency2 { - VkStructureType sType; - const void* pNext; - uint32_t srcSubpass; - uint32_t dstSubpass; - VkPipelineStageFlags srcStageMask; - VkPipelineStageFlags dstStageMask; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkDependencyFlags dependencyFlags; - int32_t viewOffset; -} VkSubpassDependency2; - -typedef struct VkRenderPassCreateInfo2 { - VkStructureType sType; - const void* pNext; - VkRenderPassCreateFlags flags; - uint32_t attachmentCount; - const VkAttachmentDescription2* pAttachments; - uint32_t subpassCount; - const VkSubpassDescription2* pSubpasses; - uint32_t dependencyCount; - const VkSubpassDependency2* pDependencies; - uint32_t correlatedViewMaskCount; - const uint32_t* pCorrelatedViewMasks; -} VkRenderPassCreateInfo2; - -typedef struct VkSubpassBeginInfo { - VkStructureType sType; - const void* pNext; - VkSubpassContents contents; -} VkSubpassBeginInfo; - -typedef struct VkSubpassEndInfo { - VkStructureType sType; - const void* pNext; -} VkSubpassEndInfo; - -typedef struct VkPhysicalDevice8BitStorageFeatures { - VkStructureType sType; - void* pNext; - VkBool32 storageBuffer8BitAccess; - VkBool32 uniformAndStorageBuffer8BitAccess; - VkBool32 storagePushConstant8; -} VkPhysicalDevice8BitStorageFeatures; - -typedef struct VkPhysicalDeviceDriverProperties { - VkStructureType sType; - void* pNext; - VkDriverId driverID; - char driverName[VK_MAX_DRIVER_NAME_SIZE]; - char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; - VkConformanceVersion conformanceVersion; -} VkPhysicalDeviceDriverProperties; - -typedef struct VkPhysicalDeviceShaderAtomicInt64Features { - VkStructureType sType; - void* pNext; - VkBool32 shaderBufferInt64Atomics; - VkBool32 shaderSharedInt64Atomics; -} VkPhysicalDeviceShaderAtomicInt64Features; - -typedef struct VkPhysicalDeviceShaderFloat16Int8Features { - VkStructureType sType; - void* pNext; - VkBool32 shaderFloat16; - VkBool32 shaderInt8; -} VkPhysicalDeviceShaderFloat16Int8Features; - -typedef struct VkPhysicalDeviceFloatControlsProperties { - VkStructureType sType; - void* pNext; - VkShaderFloatControlsIndependence denormBehaviorIndependence; - VkShaderFloatControlsIndependence roundingModeIndependence; - VkBool32 shaderSignedZeroInfNanPreserveFloat16; - VkBool32 shaderSignedZeroInfNanPreserveFloat32; - VkBool32 shaderSignedZeroInfNanPreserveFloat64; - VkBool32 shaderDenormPreserveFloat16; - VkBool32 shaderDenormPreserveFloat32; - VkBool32 shaderDenormPreserveFloat64; - VkBool32 shaderDenormFlushToZeroFloat16; - VkBool32 shaderDenormFlushToZeroFloat32; - VkBool32 shaderDenormFlushToZeroFloat64; - VkBool32 shaderRoundingModeRTEFloat16; - VkBool32 shaderRoundingModeRTEFloat32; - VkBool32 shaderRoundingModeRTEFloat64; - VkBool32 shaderRoundingModeRTZFloat16; - VkBool32 shaderRoundingModeRTZFloat32; - VkBool32 shaderRoundingModeRTZFloat64; -} VkPhysicalDeviceFloatControlsProperties; - -typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t bindingCount; - const VkDescriptorBindingFlags* pBindingFlags; -} VkDescriptorSetLayoutBindingFlagsCreateInfo; - -typedef struct VkPhysicalDeviceDescriptorIndexingFeatures { - VkStructureType sType; - void* pNext; - VkBool32 shaderInputAttachmentArrayDynamicIndexing; - VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; - VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; - VkBool32 shaderUniformBufferArrayNonUniformIndexing; - VkBool32 shaderSampledImageArrayNonUniformIndexing; - VkBool32 shaderStorageBufferArrayNonUniformIndexing; - VkBool32 shaderStorageImageArrayNonUniformIndexing; - VkBool32 shaderInputAttachmentArrayNonUniformIndexing; - VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; - VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; - VkBool32 descriptorBindingUniformBufferUpdateAfterBind; - VkBool32 descriptorBindingSampledImageUpdateAfterBind; - VkBool32 descriptorBindingStorageImageUpdateAfterBind; - VkBool32 descriptorBindingStorageBufferUpdateAfterBind; - VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; - VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; - VkBool32 descriptorBindingUpdateUnusedWhilePending; - VkBool32 descriptorBindingPartiallyBound; - VkBool32 descriptorBindingVariableDescriptorCount; - VkBool32 runtimeDescriptorArray; -} VkPhysicalDeviceDescriptorIndexingFeatures; - -typedef struct VkPhysicalDeviceDescriptorIndexingProperties { - VkStructureType sType; - void* pNext; - uint32_t maxUpdateAfterBindDescriptorsInAllPools; - VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; - VkBool32 shaderSampledImageArrayNonUniformIndexingNative; - VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; - VkBool32 shaderStorageImageArrayNonUniformIndexingNative; - VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; - VkBool32 robustBufferAccessUpdateAfterBind; - VkBool32 quadDivergentImplicitLod; - uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; - uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; - uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; - uint32_t maxPerStageUpdateAfterBindResources; - uint32_t maxDescriptorSetUpdateAfterBindSamplers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindSampledImages; - uint32_t maxDescriptorSetUpdateAfterBindStorageImages; - uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; -} VkPhysicalDeviceDescriptorIndexingProperties; - -typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo { - VkStructureType sType; - const void* pNext; - uint32_t descriptorSetCount; - const uint32_t* pDescriptorCounts; -} VkDescriptorSetVariableDescriptorCountAllocateInfo; - -typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport { - VkStructureType sType; - void* pNext; - uint32_t maxVariableDescriptorCount; -} VkDescriptorSetVariableDescriptorCountLayoutSupport; - -typedef struct VkSubpassDescriptionDepthStencilResolve { - VkStructureType sType; - const void* pNext; - VkResolveModeFlagBits depthResolveMode; - VkResolveModeFlagBits stencilResolveMode; - const VkAttachmentReference2* pDepthStencilResolveAttachment; -} VkSubpassDescriptionDepthStencilResolve; - -typedef struct VkPhysicalDeviceDepthStencilResolveProperties { - VkStructureType sType; - void* pNext; - VkResolveModeFlags supportedDepthResolveModes; - VkResolveModeFlags supportedStencilResolveModes; - VkBool32 independentResolveNone; - VkBool32 independentResolve; -} VkPhysicalDeviceDepthStencilResolveProperties; - -typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures { - VkStructureType sType; - void* pNext; - VkBool32 scalarBlockLayout; -} VkPhysicalDeviceScalarBlockLayoutFeatures; - -typedef struct VkImageStencilUsageCreateInfo { - VkStructureType sType; - const void* pNext; - VkImageUsageFlags stencilUsage; -} VkImageStencilUsageCreateInfo; - -typedef struct VkSamplerReductionModeCreateInfo { - VkStructureType sType; - const void* pNext; - VkSamplerReductionMode reductionMode; -} VkSamplerReductionModeCreateInfo; - -typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties { - VkStructureType sType; - void* pNext; - VkBool32 filterMinmaxSingleComponentFormats; - VkBool32 filterMinmaxImageComponentMapping; -} VkPhysicalDeviceSamplerFilterMinmaxProperties; - -typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures { - VkStructureType sType; - void* pNext; - VkBool32 vulkanMemoryModel; - VkBool32 vulkanMemoryModelDeviceScope; - VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; -} VkPhysicalDeviceVulkanMemoryModelFeatures; - -typedef struct VkPhysicalDeviceImagelessFramebufferFeatures { - VkStructureType sType; - void* pNext; - VkBool32 imagelessFramebuffer; -} VkPhysicalDeviceImagelessFramebufferFeatures; - -typedef struct VkFramebufferAttachmentImageInfo { - VkStructureType sType; - const void* pNext; - VkImageCreateFlags flags; - VkImageUsageFlags usage; - uint32_t width; - uint32_t height; - uint32_t layerCount; - uint32_t viewFormatCount; - const VkFormat* pViewFormats; -} VkFramebufferAttachmentImageInfo; - -typedef struct VkFramebufferAttachmentsCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t attachmentImageInfoCount; - const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos; -} VkFramebufferAttachmentsCreateInfo; - -typedef struct VkRenderPassAttachmentBeginInfo { - VkStructureType sType; - const void* pNext; - uint32_t attachmentCount; - const VkImageView* pAttachments; -} VkRenderPassAttachmentBeginInfo; - -typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures { - VkStructureType sType; - void* pNext; - VkBool32 uniformBufferStandardLayout; -} VkPhysicalDeviceUniformBufferStandardLayoutFeatures; - -typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures { - VkStructureType sType; - void* pNext; - VkBool32 shaderSubgroupExtendedTypes; -} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; - -typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures { - VkStructureType sType; - void* pNext; - VkBool32 separateDepthStencilLayouts; -} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; - -typedef struct VkAttachmentReferenceStencilLayout { - VkStructureType sType; - void* pNext; - VkImageLayout stencilLayout; -} VkAttachmentReferenceStencilLayout; - -typedef struct VkAttachmentDescriptionStencilLayout { - VkStructureType sType; - void* pNext; - VkImageLayout stencilInitialLayout; - VkImageLayout stencilFinalLayout; -} VkAttachmentDescriptionStencilLayout; - -typedef struct VkPhysicalDeviceHostQueryResetFeatures { - VkStructureType sType; - void* pNext; - VkBool32 hostQueryReset; -} VkPhysicalDeviceHostQueryResetFeatures; - -typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures { - VkStructureType sType; - void* pNext; - VkBool32 timelineSemaphore; -} VkPhysicalDeviceTimelineSemaphoreFeatures; - -typedef struct VkPhysicalDeviceTimelineSemaphoreProperties { - VkStructureType sType; - void* pNext; - uint64_t maxTimelineSemaphoreValueDifference; -} VkPhysicalDeviceTimelineSemaphoreProperties; - -typedef struct VkSemaphoreTypeCreateInfo { - VkStructureType sType; - const void* pNext; - VkSemaphoreType semaphoreType; - uint64_t initialValue; -} VkSemaphoreTypeCreateInfo; - -typedef struct VkTimelineSemaphoreSubmitInfo { - VkStructureType sType; - const void* pNext; - uint32_t waitSemaphoreValueCount; - const uint64_t* pWaitSemaphoreValues; - uint32_t signalSemaphoreValueCount; - const uint64_t* pSignalSemaphoreValues; -} VkTimelineSemaphoreSubmitInfo; - -typedef struct VkSemaphoreWaitInfo { - VkStructureType sType; - const void* pNext; - VkSemaphoreWaitFlags flags; - uint32_t semaphoreCount; - const VkSemaphore* pSemaphores; - const uint64_t* pValues; -} VkSemaphoreWaitInfo; - -typedef struct VkSemaphoreSignalInfo { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - uint64_t value; -} VkSemaphoreSignalInfo; - -typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures { - VkStructureType sType; - void* pNext; - VkBool32 bufferDeviceAddress; - VkBool32 bufferDeviceAddressCaptureReplay; - VkBool32 bufferDeviceAddressMultiDevice; -} VkPhysicalDeviceBufferDeviceAddressFeatures; - -typedef struct VkBufferDeviceAddressInfo { - VkStructureType sType; - const void* pNext; - VkBuffer buffer; -} VkBufferDeviceAddressInfo; - -typedef struct VkBufferOpaqueCaptureAddressCreateInfo { - VkStructureType sType; - const void* pNext; - uint64_t opaqueCaptureAddress; -} VkBufferOpaqueCaptureAddressCreateInfo; - -typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo { - VkStructureType sType; - const void* pNext; - uint64_t opaqueCaptureAddress; -} VkMemoryOpaqueCaptureAddressAllocateInfo; - -typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo { - VkStructureType sType; - const void* pNext; - VkDeviceMemory memory; -} VkDeviceMemoryOpaqueCaptureAddressInfo; - -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); -typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); -typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); -typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); -typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); -typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); -typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); -typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); -typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); -typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); -typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); -typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2( - VkDevice device, - const VkRenderPassCreateInfo2* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkRenderPass* pRenderPass); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2( - VkCommandBuffer commandBuffer, - const VkRenderPassBeginInfo* pRenderPassBegin, - const VkSubpassBeginInfo* pSubpassBeginInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2( - VkCommandBuffer commandBuffer, - const VkSubpassBeginInfo* pSubpassBeginInfo, - const VkSubpassEndInfo* pSubpassEndInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2( - VkCommandBuffer commandBuffer, - const VkSubpassEndInfo* pSubpassEndInfo); - -VKAPI_ATTR void VKAPI_CALL vkResetQueryPool( - VkDevice device, - VkQueryPool queryPool, - uint32_t firstQuery, - uint32_t queryCount); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue( - VkDevice device, - VkSemaphore semaphore, - uint64_t* pValue); - -VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores( - VkDevice device, - const VkSemaphoreWaitInfo* pWaitInfo, - uint64_t timeout); - -VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore( - VkDevice device, - const VkSemaphoreSignalInfo* pSignalInfo); - -VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress( - VkDevice device, - const VkBufferDeviceAddressInfo* pInfo); - -VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress( - VkDevice device, - const VkBufferDeviceAddressInfo* pInfo); - -VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress( - VkDevice device, - const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); -#endif - - -#define VK_VERSION_1_3 1 -// Vulkan 1.3 version number -#define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0)// Patch version should always be set to 0 - -typedef uint64_t VkFlags64; -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlot) - -typedef enum VkPipelineCreationFeedbackFlagBits { - VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 0x00000001, - VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 0x00000002, - VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 0x00000004, - VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT, - VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT, - VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT, - VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineCreationFeedbackFlagBits; -typedef VkFlags VkPipelineCreationFeedbackFlags; - -typedef enum VkToolPurposeFlagBits { - VK_TOOL_PURPOSE_VALIDATION_BIT = 0x00000001, - VK_TOOL_PURPOSE_PROFILING_BIT = 0x00000002, - VK_TOOL_PURPOSE_TRACING_BIT = 0x00000004, - VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 0x00000008, - VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 0x00000010, - VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020, - VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040, - VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = VK_TOOL_PURPOSE_VALIDATION_BIT, - VK_TOOL_PURPOSE_PROFILING_BIT_EXT = VK_TOOL_PURPOSE_PROFILING_BIT, - VK_TOOL_PURPOSE_TRACING_BIT_EXT = VK_TOOL_PURPOSE_TRACING_BIT, - VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT, - VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT, - VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkToolPurposeFlagBits; -typedef VkFlags VkToolPurposeFlags; -typedef VkFlags VkPrivateDataSlotCreateFlags; -typedef VkFlags64 VkPipelineStageFlags2; - -// Flag bits for VkPipelineStageFlagBits2 -typedef VkFlags64 VkPipelineStageFlagBits2; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0x00000001ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0x00000002ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 0x00000004ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 0x00000008ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 0x00000040ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 0x00000080ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 0x00000100ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 0x00000200ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 0x00000800ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 0x00001000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT = 0x00001000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 0x00002000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT = 0x00004000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 0x00008000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 0x00010000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = 0x100000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = 0x200000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT = 0x400000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT = 0x800000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = 0x1000000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = 0x2000000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 0x4000000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL; -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000ULL; -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000ULL; -#endif -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL; -static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ULL; - -typedef VkFlags64 VkAccessFlags2; - -// Flag bits for VkAccessFlagBits2 -typedef VkFlags64 VkAccessFlagBits2; -static const VkAccessFlagBits2 VK_ACCESS_2_NONE = 0ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 0x00000001ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT = 0x00000002ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT = 0x00000008ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 0x00000010ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT = 0x00000020ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT = 0x00000040ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 0x00000080ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT = 0x00000800ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT = 0x00001000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT = 0x00002000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT = 0x00004000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT = 0x00008000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT = 0x00010000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = 0x100000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 0x200000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 0x400000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL; -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x800000000ULL; -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL; -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL; -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0x4000000000ULL; -#endif -static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL; -static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = 0x10000000000ULL; - - -typedef enum VkSubmitFlagBits { - VK_SUBMIT_PROTECTED_BIT = 0x00000001, - VK_SUBMIT_PROTECTED_BIT_KHR = VK_SUBMIT_PROTECTED_BIT, - VK_SUBMIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSubmitFlagBits; -typedef VkFlags VkSubmitFlags; - -typedef enum VkRenderingFlagBits { - VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 0x00000001, - VK_RENDERING_SUSPENDING_BIT = 0x00000002, - VK_RENDERING_RESUMING_BIT = 0x00000004, - VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, - VK_RENDERING_SUSPENDING_BIT_KHR = VK_RENDERING_SUSPENDING_BIT, - VK_RENDERING_RESUMING_BIT_KHR = VK_RENDERING_RESUMING_BIT, - VK_RENDERING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkRenderingFlagBits; -typedef VkFlags VkRenderingFlags; -typedef VkFlags64 VkFormatFeatureFlags2; - -// Flag bits for VkFormatFeatureFlagBits2 -typedef VkFlags64 VkFormatFeatureFlagBits2; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 0x00000001ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 0x00000002ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000010ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 0x00000040ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 0x00000080ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 0x00000400ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 0x00000800ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 0x00002000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 0x00004000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 0x00008000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 0x00400000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 0x00800000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 0x80000000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 0x100000000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 0x200000000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL; -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000ULL; -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000ULL; -#endif -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000ULL; -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL; -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000ULL; -#endif -#ifdef VK_ENABLE_BETA_EXTENSIONS -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000ULL; -#endif -static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = 0x4000000000ULL; - -typedef struct VkPhysicalDeviceVulkan13Features { - VkStructureType sType; - void* pNext; - VkBool32 robustImageAccess; - VkBool32 inlineUniformBlock; - VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; - VkBool32 pipelineCreationCacheControl; - VkBool32 privateData; - VkBool32 shaderDemoteToHelperInvocation; - VkBool32 shaderTerminateInvocation; - VkBool32 subgroupSizeControl; - VkBool32 computeFullSubgroups; - VkBool32 synchronization2; - VkBool32 textureCompressionASTC_HDR; - VkBool32 shaderZeroInitializeWorkgroupMemory; - VkBool32 dynamicRendering; - VkBool32 shaderIntegerDotProduct; - VkBool32 maintenance4; -} VkPhysicalDeviceVulkan13Features; - -typedef struct VkPhysicalDeviceVulkan13Properties { - VkStructureType sType; - void* pNext; - uint32_t minSubgroupSize; - uint32_t maxSubgroupSize; - uint32_t maxComputeWorkgroupSubgroups; - VkShaderStageFlags requiredSubgroupSizeStages; - uint32_t maxInlineUniformBlockSize; - uint32_t maxPerStageDescriptorInlineUniformBlocks; - uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; - uint32_t maxDescriptorSetInlineUniformBlocks; - uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; - uint32_t maxInlineUniformTotalSize; - VkBool32 integerDotProduct8BitUnsignedAccelerated; - VkBool32 integerDotProduct8BitSignedAccelerated; - VkBool32 integerDotProduct8BitMixedSignednessAccelerated; - VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; - VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; - VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; - VkBool32 integerDotProduct16BitUnsignedAccelerated; - VkBool32 integerDotProduct16BitSignedAccelerated; - VkBool32 integerDotProduct16BitMixedSignednessAccelerated; - VkBool32 integerDotProduct32BitUnsignedAccelerated; - VkBool32 integerDotProduct32BitSignedAccelerated; - VkBool32 integerDotProduct32BitMixedSignednessAccelerated; - VkBool32 integerDotProduct64BitUnsignedAccelerated; - VkBool32 integerDotProduct64BitSignedAccelerated; - VkBool32 integerDotProduct64BitMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; - VkDeviceSize storageTexelBufferOffsetAlignmentBytes; - VkBool32 storageTexelBufferOffsetSingleTexelAlignment; - VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; - VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; - VkDeviceSize maxBufferSize; -} VkPhysicalDeviceVulkan13Properties; - -typedef struct VkPipelineCreationFeedback { - VkPipelineCreationFeedbackFlags flags; - uint64_t duration; -} VkPipelineCreationFeedback; - -typedef struct VkPipelineCreationFeedbackCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineCreationFeedback* pPipelineCreationFeedback; - uint32_t pipelineStageCreationFeedbackCount; - VkPipelineCreationFeedback* pPipelineStageCreationFeedbacks; -} VkPipelineCreationFeedbackCreateInfo; - -typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures { - VkStructureType sType; - void* pNext; - VkBool32 shaderTerminateInvocation; -} VkPhysicalDeviceShaderTerminateInvocationFeatures; - -typedef struct VkPhysicalDeviceToolProperties { - VkStructureType sType; - void* pNext; - char name[VK_MAX_EXTENSION_NAME_SIZE]; - char version[VK_MAX_EXTENSION_NAME_SIZE]; - VkToolPurposeFlags purposes; - char description[VK_MAX_DESCRIPTION_SIZE]; - char layer[VK_MAX_EXTENSION_NAME_SIZE]; -} VkPhysicalDeviceToolProperties; - -typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures { - VkStructureType sType; - void* pNext; - VkBool32 shaderDemoteToHelperInvocation; -} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures; - -typedef struct VkPhysicalDevicePrivateDataFeatures { - VkStructureType sType; - void* pNext; - VkBool32 privateData; -} VkPhysicalDevicePrivateDataFeatures; - -typedef struct VkDevicePrivateDataCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t privateDataSlotRequestCount; -} VkDevicePrivateDataCreateInfo; - -typedef struct VkPrivateDataSlotCreateInfo { - VkStructureType sType; - const void* pNext; - VkPrivateDataSlotCreateFlags flags; -} VkPrivateDataSlotCreateInfo; - -typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures { - VkStructureType sType; - void* pNext; - VkBool32 pipelineCreationCacheControl; -} VkPhysicalDevicePipelineCreationCacheControlFeatures; - -typedef struct VkMemoryBarrier2 { - VkStructureType sType; - const void* pNext; - VkPipelineStageFlags2 srcStageMask; - VkAccessFlags2 srcAccessMask; - VkPipelineStageFlags2 dstStageMask; - VkAccessFlags2 dstAccessMask; -} VkMemoryBarrier2; - -typedef struct VkBufferMemoryBarrier2 { - VkStructureType sType; - const void* pNext; - VkPipelineStageFlags2 srcStageMask; - VkAccessFlags2 srcAccessMask; - VkPipelineStageFlags2 dstStageMask; - VkAccessFlags2 dstAccessMask; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize size; -} VkBufferMemoryBarrier2; - -typedef struct VkImageMemoryBarrier2 { - VkStructureType sType; - const void* pNext; - VkPipelineStageFlags2 srcStageMask; - VkAccessFlags2 srcAccessMask; - VkPipelineStageFlags2 dstStageMask; - VkAccessFlags2 dstAccessMask; - VkImageLayout oldLayout; - VkImageLayout newLayout; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkImage image; - VkImageSubresourceRange subresourceRange; -} VkImageMemoryBarrier2; - -typedef struct VkDependencyInfo { - VkStructureType sType; - const void* pNext; - VkDependencyFlags dependencyFlags; - uint32_t memoryBarrierCount; - const VkMemoryBarrier2* pMemoryBarriers; - uint32_t bufferMemoryBarrierCount; - const VkBufferMemoryBarrier2* pBufferMemoryBarriers; - uint32_t imageMemoryBarrierCount; - const VkImageMemoryBarrier2* pImageMemoryBarriers; -} VkDependencyInfo; - -typedef struct VkSemaphoreSubmitInfo { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - uint64_t value; - VkPipelineStageFlags2 stageMask; - uint32_t deviceIndex; -} VkSemaphoreSubmitInfo; - -typedef struct VkCommandBufferSubmitInfo { - VkStructureType sType; - const void* pNext; - VkCommandBuffer commandBuffer; - uint32_t deviceMask; -} VkCommandBufferSubmitInfo; - -typedef struct VkSubmitInfo2 { - VkStructureType sType; - const void* pNext; - VkSubmitFlags flags; - uint32_t waitSemaphoreInfoCount; - const VkSemaphoreSubmitInfo* pWaitSemaphoreInfos; - uint32_t commandBufferInfoCount; - const VkCommandBufferSubmitInfo* pCommandBufferInfos; - uint32_t signalSemaphoreInfoCount; - const VkSemaphoreSubmitInfo* pSignalSemaphoreInfos; -} VkSubmitInfo2; - -typedef struct VkPhysicalDeviceSynchronization2Features { - VkStructureType sType; - void* pNext; - VkBool32 synchronization2; -} VkPhysicalDeviceSynchronization2Features; - -typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures { - VkStructureType sType; - void* pNext; - VkBool32 shaderZeroInitializeWorkgroupMemory; -} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; - -typedef struct VkPhysicalDeviceImageRobustnessFeatures { - VkStructureType sType; - void* pNext; - VkBool32 robustImageAccess; -} VkPhysicalDeviceImageRobustnessFeatures; - -typedef struct VkBufferCopy2 { - VkStructureType sType; - const void* pNext; - VkDeviceSize srcOffset; - VkDeviceSize dstOffset; - VkDeviceSize size; -} VkBufferCopy2; - -typedef struct VkCopyBufferInfo2 { - VkStructureType sType; - const void* pNext; - VkBuffer srcBuffer; - VkBuffer dstBuffer; - uint32_t regionCount; - const VkBufferCopy2* pRegions; -} VkCopyBufferInfo2; - -typedef struct VkImageCopy2 { - VkStructureType sType; - const void* pNext; - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageCopy2; - -typedef struct VkCopyImageInfo2 { - VkStructureType sType; - const void* pNext; - VkImage srcImage; - VkImageLayout srcImageLayout; - VkImage dstImage; - VkImageLayout dstImageLayout; - uint32_t regionCount; - const VkImageCopy2* pRegions; -} VkCopyImageInfo2; - -typedef struct VkBufferImageCopy2 { - VkStructureType sType; - const void* pNext; - VkDeviceSize bufferOffset; - uint32_t bufferRowLength; - uint32_t bufferImageHeight; - VkImageSubresourceLayers imageSubresource; - VkOffset3D imageOffset; - VkExtent3D imageExtent; -} VkBufferImageCopy2; - -typedef struct VkCopyBufferToImageInfo2 { - VkStructureType sType; - const void* pNext; - VkBuffer srcBuffer; - VkImage dstImage; - VkImageLayout dstImageLayout; - uint32_t regionCount; - const VkBufferImageCopy2* pRegions; -} VkCopyBufferToImageInfo2; - -typedef struct VkCopyImageToBufferInfo2 { - VkStructureType sType; - const void* pNext; - VkImage srcImage; - VkImageLayout srcImageLayout; - VkBuffer dstBuffer; - uint32_t regionCount; - const VkBufferImageCopy2* pRegions; -} VkCopyImageToBufferInfo2; - -typedef struct VkImageBlit2 { - VkStructureType sType; - const void* pNext; - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffsets[2]; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffsets[2]; -} VkImageBlit2; - -typedef struct VkBlitImageInfo2 { - VkStructureType sType; - const void* pNext; - VkImage srcImage; - VkImageLayout srcImageLayout; - VkImage dstImage; - VkImageLayout dstImageLayout; - uint32_t regionCount; - const VkImageBlit2* pRegions; - VkFilter filter; -} VkBlitImageInfo2; - -typedef struct VkImageResolve2 { - VkStructureType sType; - const void* pNext; - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageResolve2; - -typedef struct VkResolveImageInfo2 { - VkStructureType sType; - const void* pNext; - VkImage srcImage; - VkImageLayout srcImageLayout; - VkImage dstImage; - VkImageLayout dstImageLayout; - uint32_t regionCount; - const VkImageResolve2* pRegions; -} VkResolveImageInfo2; - -typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures { - VkStructureType sType; - void* pNext; - VkBool32 subgroupSizeControl; - VkBool32 computeFullSubgroups; -} VkPhysicalDeviceSubgroupSizeControlFeatures; - -typedef struct VkPhysicalDeviceSubgroupSizeControlProperties { - VkStructureType sType; - void* pNext; - uint32_t minSubgroupSize; - uint32_t maxSubgroupSize; - uint32_t maxComputeWorkgroupSubgroups; - VkShaderStageFlags requiredSubgroupSizeStages; -} VkPhysicalDeviceSubgroupSizeControlProperties; - -typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo { - VkStructureType sType; - void* pNext; - uint32_t requiredSubgroupSize; -} VkPipelineShaderStageRequiredSubgroupSizeCreateInfo; - -typedef struct VkPhysicalDeviceInlineUniformBlockFeatures { - VkStructureType sType; - void* pNext; - VkBool32 inlineUniformBlock; - VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; -} VkPhysicalDeviceInlineUniformBlockFeatures; - -typedef struct VkPhysicalDeviceInlineUniformBlockProperties { - VkStructureType sType; - void* pNext; - uint32_t maxInlineUniformBlockSize; - uint32_t maxPerStageDescriptorInlineUniformBlocks; - uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; - uint32_t maxDescriptorSetInlineUniformBlocks; - uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; -} VkPhysicalDeviceInlineUniformBlockProperties; - -typedef struct VkWriteDescriptorSetInlineUniformBlock { - VkStructureType sType; - const void* pNext; - uint32_t dataSize; - const void* pData; -} VkWriteDescriptorSetInlineUniformBlock; - -typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t maxInlineUniformBlockBindings; -} VkDescriptorPoolInlineUniformBlockCreateInfo; - -typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures { - VkStructureType sType; - void* pNext; - VkBool32 textureCompressionASTC_HDR; -} VkPhysicalDeviceTextureCompressionASTCHDRFeatures; - -typedef struct VkRenderingAttachmentInfo { - VkStructureType sType; - const void* pNext; - VkImageView imageView; - VkImageLayout imageLayout; - VkResolveModeFlagBits resolveMode; - VkImageView resolveImageView; - VkImageLayout resolveImageLayout; - VkAttachmentLoadOp loadOp; - VkAttachmentStoreOp storeOp; - VkClearValue clearValue; -} VkRenderingAttachmentInfo; - -typedef struct VkRenderingInfo { - VkStructureType sType; - const void* pNext; - VkRenderingFlags flags; - VkRect2D renderArea; - uint32_t layerCount; - uint32_t viewMask; - uint32_t colorAttachmentCount; - const VkRenderingAttachmentInfo* pColorAttachments; - const VkRenderingAttachmentInfo* pDepthAttachment; - const VkRenderingAttachmentInfo* pStencilAttachment; -} VkRenderingInfo; - -typedef struct VkPipelineRenderingCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t viewMask; - uint32_t colorAttachmentCount; - const VkFormat* pColorAttachmentFormats; - VkFormat depthAttachmentFormat; - VkFormat stencilAttachmentFormat; -} VkPipelineRenderingCreateInfo; - -typedef struct VkPhysicalDeviceDynamicRenderingFeatures { - VkStructureType sType; - void* pNext; - VkBool32 dynamicRendering; -} VkPhysicalDeviceDynamicRenderingFeatures; - -typedef struct VkCommandBufferInheritanceRenderingInfo { - VkStructureType sType; - const void* pNext; - VkRenderingFlags flags; - uint32_t viewMask; - uint32_t colorAttachmentCount; - const VkFormat* pColorAttachmentFormats; - VkFormat depthAttachmentFormat; - VkFormat stencilAttachmentFormat; - VkSampleCountFlagBits rasterizationSamples; -} VkCommandBufferInheritanceRenderingInfo; - -typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures { - VkStructureType sType; - void* pNext; - VkBool32 shaderIntegerDotProduct; -} VkPhysicalDeviceShaderIntegerDotProductFeatures; - -typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties { - VkStructureType sType; - void* pNext; - VkBool32 integerDotProduct8BitUnsignedAccelerated; - VkBool32 integerDotProduct8BitSignedAccelerated; - VkBool32 integerDotProduct8BitMixedSignednessAccelerated; - VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; - VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; - VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; - VkBool32 integerDotProduct16BitUnsignedAccelerated; - VkBool32 integerDotProduct16BitSignedAccelerated; - VkBool32 integerDotProduct16BitMixedSignednessAccelerated; - VkBool32 integerDotProduct32BitUnsignedAccelerated; - VkBool32 integerDotProduct32BitSignedAccelerated; - VkBool32 integerDotProduct32BitMixedSignednessAccelerated; - VkBool32 integerDotProduct64BitUnsignedAccelerated; - VkBool32 integerDotProduct64BitSignedAccelerated; - VkBool32 integerDotProduct64BitMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; - VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; - VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; -} VkPhysicalDeviceShaderIntegerDotProductProperties; - -typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties { - VkStructureType sType; - void* pNext; - VkDeviceSize storageTexelBufferOffsetAlignmentBytes; - VkBool32 storageTexelBufferOffsetSingleTexelAlignment; - VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; - VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; -} VkPhysicalDeviceTexelBufferAlignmentProperties; - -typedef struct VkFormatProperties3 { - VkStructureType sType; - void* pNext; - VkFormatFeatureFlags2 linearTilingFeatures; - VkFormatFeatureFlags2 optimalTilingFeatures; - VkFormatFeatureFlags2 bufferFeatures; -} VkFormatProperties3; - -typedef struct VkPhysicalDeviceMaintenance4Features { - VkStructureType sType; - void* pNext; - VkBool32 maintenance4; -} VkPhysicalDeviceMaintenance4Features; - -typedef struct VkPhysicalDeviceMaintenance4Properties { - VkStructureType sType; - void* pNext; - VkDeviceSize maxBufferSize; -} VkPhysicalDeviceMaintenance4Properties; - -typedef struct VkDeviceBufferMemoryRequirements { - VkStructureType sType; - const void* pNext; - const VkBufferCreateInfo* pCreateInfo; -} VkDeviceBufferMemoryRequirements; - -typedef struct VkDeviceImageMemoryRequirements { - VkStructureType sType; - const void* pNext; - const VkImageCreateInfo* pCreateInfo; - VkImageAspectFlagBits planeAspect; -} VkDeviceImageMemoryRequirements; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolProperties)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); -typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlot)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); -typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlot)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); -typedef void (VKAPI_PTR *PFN_vkGetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); -typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); -typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); -typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); -typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); -typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); -typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); -typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); -typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdBeginRendering)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); -typedef void (VKAPI_PTR *PFN_vkCmdEndRendering)(VkCommandBuffer commandBuffer); -typedef void (VKAPI_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); -typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFace)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); -typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopology)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); -typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCount)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); -typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCount)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); -typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnable)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOp)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnable)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOp)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); -typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnable)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnable)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); -typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirements)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolProperties( - VkPhysicalDevice physicalDevice, - uint32_t* pToolCount, - VkPhysicalDeviceToolProperties* pToolProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlot( - VkDevice device, - const VkPrivateDataSlotCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkPrivateDataSlot* pPrivateDataSlot); - -VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlot( - VkDevice device, - VkPrivateDataSlot privateDataSlot, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateData( - VkDevice device, - VkObjectType objectType, - uint64_t objectHandle, - VkPrivateDataSlot privateDataSlot, - uint64_t data); - -VKAPI_ATTR void VKAPI_CALL vkGetPrivateData( - VkDevice device, - VkObjectType objectType, - uint64_t objectHandle, - VkPrivateDataSlot privateDataSlot, - uint64_t* pData); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2( - VkCommandBuffer commandBuffer, - VkEvent event, - const VkDependencyInfo* pDependencyInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2( - VkCommandBuffer commandBuffer, - VkEvent event, - VkPipelineStageFlags2 stageMask); - -VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2( - VkCommandBuffer commandBuffer, - uint32_t eventCount, - const VkEvent* pEvents, - const VkDependencyInfo* pDependencyInfos); - -VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2( - VkCommandBuffer commandBuffer, - const VkDependencyInfo* pDependencyInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2( - VkCommandBuffer commandBuffer, - VkPipelineStageFlags2 stage, - VkQueryPool queryPool, - uint32_t query); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2( - VkQueue queue, - uint32_t submitCount, - const VkSubmitInfo2* pSubmits, - VkFence fence); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2( - VkCommandBuffer commandBuffer, - const VkCopyBufferInfo2* pCopyBufferInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2( - VkCommandBuffer commandBuffer, - const VkCopyImageInfo2* pCopyImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2( - VkCommandBuffer commandBuffer, - const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2( - VkCommandBuffer commandBuffer, - const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2( - VkCommandBuffer commandBuffer, - const VkBlitImageInfo2* pBlitImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2( - VkCommandBuffer commandBuffer, - const VkResolveImageInfo2* pResolveImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginRendering( - VkCommandBuffer commandBuffer, - const VkRenderingInfo* pRenderingInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering( - VkCommandBuffer commandBuffer); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetCullMode( - VkCommandBuffer commandBuffer, - VkCullModeFlags cullMode); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFace( - VkCommandBuffer commandBuffer, - VkFrontFace frontFace); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopology( - VkCommandBuffer commandBuffer, - VkPrimitiveTopology primitiveTopology); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCount( - VkCommandBuffer commandBuffer, - uint32_t viewportCount, - const VkViewport* pViewports); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCount( - VkCommandBuffer commandBuffer, - uint32_t scissorCount, - const VkRect2D* pScissors); - -VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2( - VkCommandBuffer commandBuffer, - uint32_t firstBinding, - uint32_t bindingCount, - const VkBuffer* pBuffers, - const VkDeviceSize* pOffsets, - const VkDeviceSize* pSizes, - const VkDeviceSize* pStrides); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnable( - VkCommandBuffer commandBuffer, - VkBool32 depthTestEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnable( - VkCommandBuffer commandBuffer, - VkBool32 depthWriteEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOp( - VkCommandBuffer commandBuffer, - VkCompareOp depthCompareOp); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnable( - VkCommandBuffer commandBuffer, - VkBool32 depthBoundsTestEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnable( - VkCommandBuffer commandBuffer, - VkBool32 stencilTestEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOp( - VkCommandBuffer commandBuffer, - VkStencilFaceFlags faceMask, - VkStencilOp failOp, - VkStencilOp passOp, - VkStencilOp depthFailOp, - VkCompareOp compareOp); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnable( - VkCommandBuffer commandBuffer, - VkBool32 rasterizerDiscardEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnable( - VkCommandBuffer commandBuffer, - VkBool32 depthBiasEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnable( - VkCommandBuffer commandBuffer, - VkBool32 primitiveRestartEnable); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirements( - VkDevice device, - const VkDeviceBufferMemoryRequirements* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirements( - VkDevice device, - const VkDeviceImageMemoryRequirements* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirements( - VkDevice device, - const VkDeviceImageMemoryRequirements* pInfo, - uint32_t* pSparseMemoryRequirementCount, - VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); -#endif - - -#define VK_KHR_surface 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) -#define VK_KHR_SURFACE_SPEC_VERSION 25 -#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" - -typedef enum VkPresentModeKHR { - VK_PRESENT_MODE_IMMEDIATE_KHR = 0, - VK_PRESENT_MODE_MAILBOX_KHR = 1, - VK_PRESENT_MODE_FIFO_KHR = 2, - VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, - VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000, - VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001, - VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkPresentModeKHR; - -typedef enum VkColorSpaceKHR { - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, - VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001, - VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002, - VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003, - VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004, - VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005, - VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006, - VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007, - VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008, - VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009, - VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010, - VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011, - VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012, - VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013, - VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014, - VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000, - VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, - VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkColorSpaceKHR; - -typedef enum VkSurfaceTransformFlagBitsKHR { - VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, - VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002, - VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004, - VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080, - VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100, - VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkSurfaceTransformFlagBitsKHR; - -typedef enum VkCompositeAlphaFlagBitsKHR { - VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, - VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002, - VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004, - VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008, - VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkCompositeAlphaFlagBitsKHR; -typedef VkFlags VkCompositeAlphaFlagsKHR; -typedef VkFlags VkSurfaceTransformFlagsKHR; -typedef struct VkSurfaceCapabilitiesKHR { - uint32_t minImageCount; - uint32_t maxImageCount; - VkExtent2D currentExtent; - VkExtent2D minImageExtent; - VkExtent2D maxImageExtent; - uint32_t maxImageArrayLayers; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkSurfaceTransformFlagBitsKHR currentTransform; - VkCompositeAlphaFlagsKHR supportedCompositeAlpha; - VkImageUsageFlags supportedUsageFlags; -} VkSurfaceCapabilitiesKHR; - -typedef struct VkSurfaceFormatKHR { - VkFormat format; - VkColorSpaceKHR colorSpace; -} VkSurfaceFormatKHR; - -typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR( - VkInstance instance, - VkSurfaceKHR surface, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - VkSurfaceKHR surface, - VkBool32* pSupported); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - uint32_t* pSurfaceFormatCount, - VkSurfaceFormatKHR* pSurfaceFormats); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - uint32_t* pPresentModeCount, - VkPresentModeKHR* pPresentModes); -#endif - - -#define VK_KHR_swapchain 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) -#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70 -#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" - -typedef enum VkSwapchainCreateFlagBitsKHR { - VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001, - VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002, - VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004, - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkSwapchainCreateFlagBitsKHR; -typedef VkFlags VkSwapchainCreateFlagsKHR; - -typedef enum VkDeviceGroupPresentModeFlagBitsKHR { - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001, - VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002, - VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004, - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008, - VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkDeviceGroupPresentModeFlagBitsKHR; -typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; -typedef struct VkSwapchainCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkSwapchainCreateFlagsKHR flags; - VkSurfaceKHR surface; - uint32_t minImageCount; - VkFormat imageFormat; - VkColorSpaceKHR imageColorSpace; - VkExtent2D imageExtent; - uint32_t imageArrayLayers; - VkImageUsageFlags imageUsage; - VkSharingMode imageSharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; - VkSurfaceTransformFlagBitsKHR preTransform; - VkCompositeAlphaFlagBitsKHR compositeAlpha; - VkPresentModeKHR presentMode; - VkBool32 clipped; - VkSwapchainKHR oldSwapchain; -} VkSwapchainCreateInfoKHR; - -typedef struct VkPresentInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t waitSemaphoreCount; - const VkSemaphore* pWaitSemaphores; - uint32_t swapchainCount; - const VkSwapchainKHR* pSwapchains; - const uint32_t* pImageIndices; - VkResult* pResults; -} VkPresentInfoKHR; - -typedef struct VkImageSwapchainCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkSwapchainKHR swapchain; -} VkImageSwapchainCreateInfoKHR; - -typedef struct VkBindImageMemorySwapchainInfoKHR { - VkStructureType sType; - const void* pNext; - VkSwapchainKHR swapchain; - uint32_t imageIndex; -} VkBindImageMemorySwapchainInfoKHR; - -typedef struct VkAcquireNextImageInfoKHR { - VkStructureType sType; - const void* pNext; - VkSwapchainKHR swapchain; - uint64_t timeout; - VkSemaphore semaphore; - VkFence fence; - uint32_t deviceMask; -} VkAcquireNextImageInfoKHR; - -typedef struct VkDeviceGroupPresentCapabilitiesKHR { - VkStructureType sType; - void* pNext; - uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE]; - VkDeviceGroupPresentModeFlagsKHR modes; -} VkDeviceGroupPresentCapabilitiesKHR; - -typedef struct VkDeviceGroupPresentInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t swapchainCount; - const uint32_t* pDeviceMasks; - VkDeviceGroupPresentModeFlagBitsKHR mode; -} VkDeviceGroupPresentInfoKHR; - -typedef struct VkDeviceGroupSwapchainCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkDeviceGroupPresentModeFlagsKHR modes; -} VkDeviceGroupSwapchainCreateInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain); -typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages); -typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex); -typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); -typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects); -typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( - VkDevice device, - const VkSwapchainCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSwapchainKHR* pSwapchain); - -VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR( - VkDevice device, - VkSwapchainKHR swapchain, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( - VkDevice device, - VkSwapchainKHR swapchain, - uint32_t* pSwapchainImageCount, - VkImage* pSwapchainImages); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR( - VkDevice device, - VkSwapchainKHR swapchain, - uint64_t timeout, - VkSemaphore semaphore, - VkFence fence, - uint32_t* pImageIndex); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR( - VkQueue queue, - const VkPresentInfoKHR* pPresentInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR( - VkDevice device, - VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR( - VkDevice device, - VkSurfaceKHR surface, - VkDeviceGroupPresentModeFlagsKHR* pModes); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - uint32_t* pRectCount, - VkRect2D* pRects); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR( - VkDevice device, - const VkAcquireNextImageInfoKHR* pAcquireInfo, - uint32_t* pImageIndex); -#endif - - -#define VK_KHR_display 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR) -#define VK_KHR_DISPLAY_SPEC_VERSION 23 -#define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display" -typedef VkFlags VkDisplayModeCreateFlagsKHR; - -typedef enum VkDisplayPlaneAlphaFlagBitsKHR { - VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, - VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002, - VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004, - VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008, - VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkDisplayPlaneAlphaFlagBitsKHR; -typedef VkFlags VkDisplayPlaneAlphaFlagsKHR; -typedef VkFlags VkDisplaySurfaceCreateFlagsKHR; -typedef struct VkDisplayModeParametersKHR { - VkExtent2D visibleRegion; - uint32_t refreshRate; -} VkDisplayModeParametersKHR; - -typedef struct VkDisplayModeCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkDisplayModeCreateFlagsKHR flags; - VkDisplayModeParametersKHR parameters; -} VkDisplayModeCreateInfoKHR; - -typedef struct VkDisplayModePropertiesKHR { - VkDisplayModeKHR displayMode; - VkDisplayModeParametersKHR parameters; -} VkDisplayModePropertiesKHR; - -typedef struct VkDisplayPlaneCapabilitiesKHR { - VkDisplayPlaneAlphaFlagsKHR supportedAlpha; - VkOffset2D minSrcPosition; - VkOffset2D maxSrcPosition; - VkExtent2D minSrcExtent; - VkExtent2D maxSrcExtent; - VkOffset2D minDstPosition; - VkOffset2D maxDstPosition; - VkExtent2D minDstExtent; - VkExtent2D maxDstExtent; -} VkDisplayPlaneCapabilitiesKHR; - -typedef struct VkDisplayPlanePropertiesKHR { - VkDisplayKHR currentDisplay; - uint32_t currentStackIndex; -} VkDisplayPlanePropertiesKHR; - -typedef struct VkDisplayPropertiesKHR { - VkDisplayKHR display; - const char* displayName; - VkExtent2D physicalDimensions; - VkExtent2D physicalResolution; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkBool32 planeReorderPossible; - VkBool32 persistentContent; -} VkDisplayPropertiesKHR; - -typedef struct VkDisplaySurfaceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkDisplaySurfaceCreateFlagsKHR flags; - VkDisplayModeKHR displayMode; - uint32_t planeIndex; - uint32_t planeStackIndex; - VkSurfaceTransformFlagBitsKHR transform; - float globalAlpha; - VkDisplayPlaneAlphaFlagBitsKHR alphaMode; - VkExtent2D imageExtent; -} VkDisplaySurfaceCreateInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayPropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayPlanePropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR( - VkPhysicalDevice physicalDevice, - uint32_t planeIndex, - uint32_t* pDisplayCount, - VkDisplayKHR* pDisplays); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display, - uint32_t* pPropertyCount, - VkDisplayModePropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display, - const VkDisplayModeCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDisplayModeKHR* pMode); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR( - VkPhysicalDevice physicalDevice, - VkDisplayModeKHR mode, - uint32_t planeIndex, - VkDisplayPlaneCapabilitiesKHR* pCapabilities); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR( - VkInstance instance, - const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - - -#define VK_KHR_display_swapchain 1 -#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10 -#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" -typedef struct VkDisplayPresentInfoKHR { - VkStructureType sType; - const void* pNext; - VkRect2D srcRect; - VkRect2D dstRect; - VkBool32 persistent; -} VkDisplayPresentInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( - VkDevice device, - uint32_t swapchainCount, - const VkSwapchainCreateInfoKHR* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkSwapchainKHR* pSwapchains); -#endif - - -#define VK_KHR_sampler_mirror_clamp_to_edge 1 -#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3 -#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge" - - -#define VK_KHR_dynamic_rendering 1 -#define VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION 1 -#define VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME "VK_KHR_dynamic_rendering" -typedef VkRenderingFlags VkRenderingFlagsKHR; - -typedef VkRenderingFlagBits VkRenderingFlagBitsKHR; - -typedef VkRenderingInfo VkRenderingInfoKHR; - -typedef VkRenderingAttachmentInfo VkRenderingAttachmentInfoKHR; - -typedef VkPipelineRenderingCreateInfo VkPipelineRenderingCreateInfoKHR; - -typedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR; - -typedef VkCommandBufferInheritanceRenderingInfo VkCommandBufferInheritanceRenderingInfoKHR; - -typedef struct VkRenderingFragmentShadingRateAttachmentInfoKHR { - VkStructureType sType; - const void* pNext; - VkImageView imageView; - VkImageLayout imageLayout; - VkExtent2D shadingRateAttachmentTexelSize; -} VkRenderingFragmentShadingRateAttachmentInfoKHR; - -typedef struct VkRenderingFragmentDensityMapAttachmentInfoEXT { - VkStructureType sType; - const void* pNext; - VkImageView imageView; - VkImageLayout imageLayout; -} VkRenderingFragmentDensityMapAttachmentInfoEXT; - -typedef struct VkAttachmentSampleCountInfoAMD { - VkStructureType sType; - const void* pNext; - uint32_t colorAttachmentCount; - const VkSampleCountFlagBits* pColorAttachmentSamples; - VkSampleCountFlagBits depthStencilAttachmentSamples; -} VkAttachmentSampleCountInfoAMD; - -typedef VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoNV; - -typedef struct VkMultiviewPerViewAttributesInfoNVX { - VkStructureType sType; - const void* pNext; - VkBool32 perViewAttributes; - VkBool32 perViewAttributesPositionXOnly; -} VkMultiviewPerViewAttributesInfoNVX; - -typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderingKHR)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); -typedef void (VKAPI_PTR *PFN_vkCmdEndRenderingKHR)(VkCommandBuffer commandBuffer); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderingKHR( - VkCommandBuffer commandBuffer, - const VkRenderingInfo* pRenderingInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderingKHR( - VkCommandBuffer commandBuffer); -#endif - - -#define VK_KHR_multiview 1 -#define VK_KHR_MULTIVIEW_SPEC_VERSION 1 -#define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview" -typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR; - -typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR; - -typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR; - - - -#define VK_KHR_get_physical_device_properties2 1 -#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2 -#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2" -typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR; - -typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR; - -typedef VkFormatProperties2 VkFormatProperties2KHR; - -typedef VkImageFormatProperties2 VkImageFormatProperties2KHR; - -typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR; - -typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR; - -typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR; - -typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR; - -typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR; - -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceFeatures2* pFeatures); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceProperties2* pProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkFormatProperties2* pFormatProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, - VkImageFormatProperties2* pImageFormatProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR( - VkPhysicalDevice physicalDevice, - uint32_t* pQueueFamilyPropertyCount, - VkQueueFamilyProperties2* pQueueFamilyProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceMemoryProperties2* pMemoryProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, - uint32_t* pPropertyCount, - VkSparseImageFormatProperties2* pProperties); -#endif - - -#define VK_KHR_device_group 1 -#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4 -#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group" -typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR; - -typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR; - -typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR; - -typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR; - -typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR; - -typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR; - -typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR; - -typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR; - -typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR; - -typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR; - -typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR; - -typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); -typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask); -typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR( - VkDevice device, - uint32_t heapIndex, - uint32_t localDeviceIndex, - uint32_t remoteDeviceIndex, - VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR( - VkCommandBuffer commandBuffer, - uint32_t deviceMask); - -VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR( - VkCommandBuffer commandBuffer, - uint32_t baseGroupX, - uint32_t baseGroupY, - uint32_t baseGroupZ, - uint32_t groupCountX, - uint32_t groupCountY, - uint32_t groupCountZ); -#endif - - -#define VK_KHR_shader_draw_parameters 1 -#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1 -#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters" - - -#define VK_KHR_maintenance1 1 -#define VK_KHR_MAINTENANCE_1_SPEC_VERSION 2 -#define VK_KHR_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_maintenance1" -#define VK_KHR_MAINTENANCE1_SPEC_VERSION VK_KHR_MAINTENANCE_1_SPEC_VERSION -#define VK_KHR_MAINTENANCE1_EXTENSION_NAME VK_KHR_MAINTENANCE_1_EXTENSION_NAME -typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR; - -typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR( - VkDevice device, - VkCommandPool commandPool, - VkCommandPoolTrimFlags flags); -#endif - - -#define VK_KHR_device_group_creation 1 -#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1 -#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation" -#define VK_MAX_DEVICE_GROUP_SIZE_KHR VK_MAX_DEVICE_GROUP_SIZE -typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR; - -typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR( - VkInstance instance, - uint32_t* pPhysicalDeviceGroupCount, - VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); -#endif - - -#define VK_KHR_external_memory_capabilities 1 -#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities" -#define VK_LUID_SIZE_KHR VK_LUID_SIZE -typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR; - -typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR; - -typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR; - -typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR; - -typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR; - -typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR; - -typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR; - -typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR; - -typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR; - -typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR; - -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, - VkExternalBufferProperties* pExternalBufferProperties); -#endif - - -#define VK_KHR_external_memory 1 -#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory" -#define VK_QUEUE_FAMILY_EXTERNAL_KHR VK_QUEUE_FAMILY_EXTERNAL -typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR; - -typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR; - -typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR; - - - -#define VK_KHR_external_memory_fd 1 -#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd" -typedef struct VkImportMemoryFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagBits handleType; - int fd; -} VkImportMemoryFdInfoKHR; - -typedef struct VkMemoryFdPropertiesKHR { - VkStructureType sType; - void* pNext; - uint32_t memoryTypeBits; -} VkMemoryFdPropertiesKHR; - -typedef struct VkMemoryGetFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkDeviceMemory memory; - VkExternalMemoryHandleTypeFlagBits handleType; -} VkMemoryGetFdInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd); -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR( - VkDevice device, - const VkMemoryGetFdInfoKHR* pGetFdInfo, - int* pFd); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR( - VkDevice device, - VkExternalMemoryHandleTypeFlagBits handleType, - int fd, - VkMemoryFdPropertiesKHR* pMemoryFdProperties); -#endif - - -#define VK_KHR_external_semaphore_capabilities 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities" -typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR; - -typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR; - -typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR; - -typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR; - -typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR; - -typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR; - -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, - VkExternalSemaphoreProperties* pExternalSemaphoreProperties); -#endif - - -#define VK_KHR_external_semaphore 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore" -typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR; - -typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR; - -typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR; - - - -#define VK_KHR_external_semaphore_fd 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd" -typedef struct VkImportSemaphoreFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - VkSemaphoreImportFlags flags; - VkExternalSemaphoreHandleTypeFlagBits handleType; - int fd; -} VkImportSemaphoreFdInfoKHR; - -typedef struct VkSemaphoreGetFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - VkExternalSemaphoreHandleTypeFlagBits handleType; -} VkSemaphoreGetFdInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR( - VkDevice device, - const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR( - VkDevice device, - const VkSemaphoreGetFdInfoKHR* pGetFdInfo, - int* pFd); -#endif - - -#define VK_KHR_push_descriptor 1 -#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2 -#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor" -typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR { - VkStructureType sType; - void* pNext; - uint32_t maxPushDescriptors; -} VkPhysicalDevicePushDescriptorPropertiesKHR; - -typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites); -typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR( - VkCommandBuffer commandBuffer, - VkPipelineBindPoint pipelineBindPoint, - VkPipelineLayout layout, - uint32_t set, - uint32_t descriptorWriteCount, - const VkWriteDescriptorSet* pDescriptorWrites); - -VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR( - VkCommandBuffer commandBuffer, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - VkPipelineLayout layout, - uint32_t set, - const void* pData); -#endif - - -#define VK_KHR_shader_float16_int8 1 -#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1 -#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8" -typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR; - -typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR; - - - -#define VK_KHR_16bit_storage 1 -#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1 -#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage" -typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR; - - - -#define VK_KHR_incremental_present 1 -#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2 -#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present" -typedef struct VkRectLayerKHR { - VkOffset2D offset; - VkExtent2D extent; - uint32_t layer; -} VkRectLayerKHR; - -typedef struct VkPresentRegionKHR { - uint32_t rectangleCount; - const VkRectLayerKHR* pRectangles; -} VkPresentRegionKHR; - -typedef struct VkPresentRegionsKHR { - VkStructureType sType; - const void* pNext; - uint32_t swapchainCount; - const VkPresentRegionKHR* pRegions; -} VkPresentRegionsKHR; - - - -#define VK_KHR_descriptor_update_template 1 -typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR; - -#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1 -#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template" -typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR; - -typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR; - -typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR; - -typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); -typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR( - VkDevice device, - const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR( - VkDevice device, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR( - VkDevice device, - VkDescriptorSet descriptorSet, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - const void* pData); -#endif - - -#define VK_KHR_imageless_framebuffer 1 -#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1 -#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer" -typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR; - -typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR; - -typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR; - -typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR; - - - -#define VK_KHR_create_renderpass2 1 -#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1 -#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2" -typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR; - -typedef VkAttachmentDescription2 VkAttachmentDescription2KHR; - -typedef VkAttachmentReference2 VkAttachmentReference2KHR; - -typedef VkSubpassDescription2 VkSubpassDescription2KHR; - -typedef VkSubpassDependency2 VkSubpassDependency2KHR; - -typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR; - -typedef VkSubpassEndInfo VkSubpassEndInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); -typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); -typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); -typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR( - VkDevice device, - const VkRenderPassCreateInfo2* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkRenderPass* pRenderPass); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR( - VkCommandBuffer commandBuffer, - const VkRenderPassBeginInfo* pRenderPassBegin, - const VkSubpassBeginInfo* pSubpassBeginInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR( - VkCommandBuffer commandBuffer, - const VkSubpassBeginInfo* pSubpassBeginInfo, - const VkSubpassEndInfo* pSubpassEndInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR( - VkCommandBuffer commandBuffer, - const VkSubpassEndInfo* pSubpassEndInfo); -#endif - - -#define VK_KHR_shared_presentable_image 1 -#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 -#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" -typedef struct VkSharedPresentSurfaceCapabilitiesKHR { - VkStructureType sType; - void* pNext; - VkImageUsageFlags sharedPresentSupportedUsageFlags; -} VkSharedPresentSurfaceCapabilitiesKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( - VkDevice device, - VkSwapchainKHR swapchain); -#endif - - -#define VK_KHR_external_fence_capabilities 1 -#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities" -typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR; - -typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR; - -typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR; - -typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR; - -typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR; - -typedef VkExternalFenceProperties VkExternalFencePropertiesKHR; - -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, - VkExternalFenceProperties* pExternalFenceProperties); -#endif - - -#define VK_KHR_external_fence 1 -#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence" -typedef VkFenceImportFlags VkFenceImportFlagsKHR; - -typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR; - -typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR; - - - -#define VK_KHR_external_fence_fd 1 -#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd" -typedef struct VkImportFenceFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkFence fence; - VkFenceImportFlags flags; - VkExternalFenceHandleTypeFlagBits handleType; - int fd; -} VkImportFenceFdInfoKHR; - -typedef struct VkFenceGetFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkFence fence; - VkExternalFenceHandleTypeFlagBits handleType; -} VkFenceGetFdInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR( - VkDevice device, - const VkImportFenceFdInfoKHR* pImportFenceFdInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR( - VkDevice device, - const VkFenceGetFdInfoKHR* pGetFdInfo, - int* pFd); -#endif - - -#define VK_KHR_performance_query 1 -#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1 -#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query" - -typedef enum VkPerformanceCounterUnitKHR { - VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0, - VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1, - VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2, - VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3, - VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4, - VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5, - VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6, - VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7, - VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8, - VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9, - VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10, - VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF -} VkPerformanceCounterUnitKHR; - -typedef enum VkPerformanceCounterScopeKHR { - VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0, - VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1, - VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2, - VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, - VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, - VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR, - VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkPerformanceCounterScopeKHR; - -typedef enum VkPerformanceCounterStorageKHR { - VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0, - VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1, - VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2, - VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3, - VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4, - VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5, - VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkPerformanceCounterStorageKHR; - -typedef enum VkPerformanceCounterDescriptionFlagBitsKHR { - VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001, - VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002, - VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, - VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR, - VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkPerformanceCounterDescriptionFlagBitsKHR; -typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR; - -typedef enum VkAcquireProfilingLockFlagBitsKHR { - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkAcquireProfilingLockFlagBitsKHR; -typedef VkFlags VkAcquireProfilingLockFlagsKHR; -typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 performanceCounterQueryPools; - VkBool32 performanceCounterMultipleQueryPools; -} VkPhysicalDevicePerformanceQueryFeaturesKHR; - -typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR { - VkStructureType sType; - void* pNext; - VkBool32 allowCommandBufferQueryCopies; -} VkPhysicalDevicePerformanceQueryPropertiesKHR; - -typedef struct VkPerformanceCounterKHR { - VkStructureType sType; - void* pNext; - VkPerformanceCounterUnitKHR unit; - VkPerformanceCounterScopeKHR scope; - VkPerformanceCounterStorageKHR storage; - uint8_t uuid[VK_UUID_SIZE]; -} VkPerformanceCounterKHR; - -typedef struct VkPerformanceCounterDescriptionKHR { - VkStructureType sType; - void* pNext; - VkPerformanceCounterDescriptionFlagsKHR flags; - char name[VK_MAX_DESCRIPTION_SIZE]; - char category[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; -} VkPerformanceCounterDescriptionKHR; - -typedef struct VkQueryPoolPerformanceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t queueFamilyIndex; - uint32_t counterIndexCount; - const uint32_t* pCounterIndices; -} VkQueryPoolPerformanceCreateInfoKHR; - -typedef union VkPerformanceCounterResultKHR { - int32_t int32; - int64_t int64; - uint32_t uint32; - uint64_t uint64; - float float32; - double float64; -} VkPerformanceCounterResultKHR; - -typedef struct VkAcquireProfilingLockInfoKHR { - VkStructureType sType; - const void* pNext; - VkAcquireProfilingLockFlagsKHR flags; - uint64_t timeout; -} VkAcquireProfilingLockInfoKHR; - -typedef struct VkPerformanceQuerySubmitInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t counterPassIndex; -} VkPerformanceQuerySubmitInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses); -typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo); -typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - uint32_t* pCounterCount, - VkPerformanceCounterKHR* pCounters, - VkPerformanceCounterDescriptionKHR* pCounterDescriptions); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( - VkPhysicalDevice physicalDevice, - const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, - uint32_t* pNumPasses); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR( - VkDevice device, - const VkAcquireProfilingLockInfoKHR* pInfo); - -VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR( - VkDevice device); -#endif - - -#define VK_KHR_maintenance2 1 -#define VK_KHR_MAINTENANCE_2_SPEC_VERSION 1 -#define VK_KHR_MAINTENANCE_2_EXTENSION_NAME "VK_KHR_maintenance2" -#define VK_KHR_MAINTENANCE2_SPEC_VERSION VK_KHR_MAINTENANCE_2_SPEC_VERSION -#define VK_KHR_MAINTENANCE2_EXTENSION_NAME VK_KHR_MAINTENANCE_2_EXTENSION_NAME -typedef VkPointClippingBehavior VkPointClippingBehaviorKHR; - -typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR; - -typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR; - -typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR; - -typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR; - -typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR; - -typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR; - - - -#define VK_KHR_get_surface_capabilities2 1 -#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1 -#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2" -typedef struct VkPhysicalDeviceSurfaceInfo2KHR { - VkStructureType sType; - const void* pNext; - VkSurfaceKHR surface; -} VkPhysicalDeviceSurfaceInfo2KHR; - -typedef struct VkSurfaceCapabilities2KHR { - VkStructureType sType; - void* pNext; - VkSurfaceCapabilitiesKHR surfaceCapabilities; -} VkSurfaceCapabilities2KHR; - -typedef struct VkSurfaceFormat2KHR { - VkStructureType sType; - void* pNext; - VkSurfaceFormatKHR surfaceFormat; -} VkSurfaceFormat2KHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - VkSurfaceCapabilities2KHR* pSurfaceCapabilities); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - uint32_t* pSurfaceFormatCount, - VkSurfaceFormat2KHR* pSurfaceFormats); -#endif - - -#define VK_KHR_variable_pointers 1 -#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1 -#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers" -typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR; - -typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR; - - - -#define VK_KHR_get_display_properties2 1 -#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1 -#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2" -typedef struct VkDisplayProperties2KHR { - VkStructureType sType; - void* pNext; - VkDisplayPropertiesKHR displayProperties; -} VkDisplayProperties2KHR; - -typedef struct VkDisplayPlaneProperties2KHR { - VkStructureType sType; - void* pNext; - VkDisplayPlanePropertiesKHR displayPlaneProperties; -} VkDisplayPlaneProperties2KHR; - -typedef struct VkDisplayModeProperties2KHR { - VkStructureType sType; - void* pNext; - VkDisplayModePropertiesKHR displayModeProperties; -} VkDisplayModeProperties2KHR; - -typedef struct VkDisplayPlaneInfo2KHR { - VkStructureType sType; - const void* pNext; - VkDisplayModeKHR mode; - uint32_t planeIndex; -} VkDisplayPlaneInfo2KHR; - -typedef struct VkDisplayPlaneCapabilities2KHR { - VkStructureType sType; - void* pNext; - VkDisplayPlaneCapabilitiesKHR capabilities; -} VkDisplayPlaneCapabilities2KHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayProperties2KHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayPlaneProperties2KHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display, - uint32_t* pPropertyCount, - VkDisplayModeProperties2KHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR( - VkPhysicalDevice physicalDevice, - const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, - VkDisplayPlaneCapabilities2KHR* pCapabilities); -#endif - - -#define VK_KHR_dedicated_allocation 1 -#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3 -#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation" -typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR; - -typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR; - - - -#define VK_KHR_storage_buffer_storage_class 1 -#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1 -#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class" - - -#define VK_KHR_relaxed_block_layout 1 -#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1 -#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout" - - -#define VK_KHR_get_memory_requirements2 1 -#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1 -#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2" -typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR; - -typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR; - -typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR; - -typedef VkMemoryRequirements2 VkMemoryRequirements2KHR; - -typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR; - -typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR( - VkDevice device, - const VkImageMemoryRequirementsInfo2* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR( - VkDevice device, - const VkBufferMemoryRequirementsInfo2* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR( - VkDevice device, - const VkImageSparseMemoryRequirementsInfo2* pInfo, - uint32_t* pSparseMemoryRequirementCount, - VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); -#endif - - -#define VK_KHR_image_format_list 1 -#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1 -#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list" -typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR; - - - -#define VK_KHR_sampler_ycbcr_conversion 1 -typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR; - -#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14 -#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion" -typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR; - -typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR; - -typedef VkChromaLocation VkChromaLocationKHR; - -typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR; - -typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR; - -typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR; - -typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR; - -typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR; - -typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion); -typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR( - VkDevice device, - const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSamplerYcbcrConversion* pYcbcrConversion); - -VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR( - VkDevice device, - VkSamplerYcbcrConversion ycbcrConversion, - const VkAllocationCallbacks* pAllocator); -#endif - - -#define VK_KHR_bind_memory2 1 -#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1 -#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2" -typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR; - -typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); -typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR( - VkDevice device, - uint32_t bindInfoCount, - const VkBindBufferMemoryInfo* pBindInfos); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR( - VkDevice device, - uint32_t bindInfoCount, - const VkBindImageMemoryInfo* pBindInfos); -#endif - - -#define VK_KHR_maintenance3 1 -#define VK_KHR_MAINTENANCE_3_SPEC_VERSION 1 -#define VK_KHR_MAINTENANCE_3_EXTENSION_NAME "VK_KHR_maintenance3" -#define VK_KHR_MAINTENANCE3_SPEC_VERSION VK_KHR_MAINTENANCE_3_SPEC_VERSION -#define VK_KHR_MAINTENANCE3_EXTENSION_NAME VK_KHR_MAINTENANCE_3_EXTENSION_NAME -typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR; - -typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR; - -typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR( - VkDevice device, - const VkDescriptorSetLayoutCreateInfo* pCreateInfo, - VkDescriptorSetLayoutSupport* pSupport); -#endif - - -#define VK_KHR_draw_indirect_count 1 -#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 -#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count" -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); -#endif - - -#define VK_KHR_shader_subgroup_extended_types 1 -#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1 -#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types" -typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR; - - - -#define VK_KHR_8bit_storage 1 -#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1 -#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage" -typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR; - - - -#define VK_KHR_shader_atomic_int64 1 -#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1 -#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64" -typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR; - - - -#define VK_KHR_shader_clock 1 -#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1 -#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock" -typedef struct VkPhysicalDeviceShaderClockFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 shaderSubgroupClock; - VkBool32 shaderDeviceClock; -} VkPhysicalDeviceShaderClockFeaturesKHR; - - - -#define VK_KHR_global_priority 1 -#define VK_MAX_GLOBAL_PRIORITY_SIZE_KHR 16U -#define VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION 1 -#define VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME "VK_KHR_global_priority" - -typedef enum VkQueueGlobalPriorityKHR { - VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128, - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256, - VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512, - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024, - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR, - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR, - VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR, - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR, - VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_KHR = 0x7FFFFFFF -} VkQueueGlobalPriorityKHR; -typedef struct VkDeviceQueueGlobalPriorityCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkQueueGlobalPriorityKHR globalPriority; -} VkDeviceQueueGlobalPriorityCreateInfoKHR; - -typedef struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 globalPriorityQuery; -} VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR; - -typedef struct VkQueueFamilyGlobalPriorityPropertiesKHR { - VkStructureType sType; - void* pNext; - uint32_t priorityCount; - VkQueueGlobalPriorityKHR priorities[VK_MAX_GLOBAL_PRIORITY_SIZE_KHR]; -} VkQueueFamilyGlobalPriorityPropertiesKHR; - - - -#define VK_KHR_driver_properties 1 -#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1 -#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties" -#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE -#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE -typedef VkDriverId VkDriverIdKHR; - -typedef VkConformanceVersion VkConformanceVersionKHR; - -typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR; - - - -#define VK_KHR_shader_float_controls 1 -#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4 -#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls" -typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR; - -typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR; - - - -#define VK_KHR_depth_stencil_resolve 1 -#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1 -#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve" -typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR; - -typedef VkResolveModeFlags VkResolveModeFlagsKHR; - -typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR; - -typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR; - - - -#define VK_KHR_swapchain_mutable_format 1 -#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1 -#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format" - - -#define VK_KHR_timeline_semaphore 1 -#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2 -#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore" -typedef VkSemaphoreType VkSemaphoreTypeKHR; - -typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR; - -typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR; - -typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR; - -typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR; - -typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR; - -typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR; - -typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR; - -typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); -typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); -typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR( - VkDevice device, - VkSemaphore semaphore, - uint64_t* pValue); - -VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR( - VkDevice device, - const VkSemaphoreWaitInfo* pWaitInfo, - uint64_t timeout); - -VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR( - VkDevice device, - const VkSemaphoreSignalInfo* pSignalInfo); -#endif - - -#define VK_KHR_vulkan_memory_model 1 -#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3 -#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model" -typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR; - - - -#define VK_KHR_shader_terminate_invocation 1 -#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1 -#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation" -typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR; - - - -#define VK_KHR_fragment_shading_rate 1 -#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 2 -#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate" - -typedef enum VkFragmentShadingRateCombinerOpKHR { - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF -} VkFragmentShadingRateCombinerOpKHR; -typedef struct VkFragmentShadingRateAttachmentInfoKHR { - VkStructureType sType; - const void* pNext; - const VkAttachmentReference2* pFragmentShadingRateAttachment; - VkExtent2D shadingRateAttachmentTexelSize; -} VkFragmentShadingRateAttachmentInfoKHR; - -typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkExtent2D fragmentSize; - VkFragmentShadingRateCombinerOpKHR combinerOps[2]; -} VkPipelineFragmentShadingRateStateCreateInfoKHR; - -typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 pipelineFragmentShadingRate; - VkBool32 primitiveFragmentShadingRate; - VkBool32 attachmentFragmentShadingRate; -} VkPhysicalDeviceFragmentShadingRateFeaturesKHR; - -typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR { - VkStructureType sType; - void* pNext; - VkExtent2D minFragmentShadingRateAttachmentTexelSize; - VkExtent2D maxFragmentShadingRateAttachmentTexelSize; - uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio; - VkBool32 primitiveFragmentShadingRateWithMultipleViewports; - VkBool32 layeredShadingRateAttachments; - VkBool32 fragmentShadingRateNonTrivialCombinerOps; - VkExtent2D maxFragmentSize; - uint32_t maxFragmentSizeAspectRatio; - uint32_t maxFragmentShadingRateCoverageSamples; - VkSampleCountFlagBits maxFragmentShadingRateRasterizationSamples; - VkBool32 fragmentShadingRateWithShaderDepthStencilWrites; - VkBool32 fragmentShadingRateWithSampleMask; - VkBool32 fragmentShadingRateWithShaderSampleMask; - VkBool32 fragmentShadingRateWithConservativeRasterization; - VkBool32 fragmentShadingRateWithFragmentShaderInterlock; - VkBool32 fragmentShadingRateWithCustomSampleLocations; - VkBool32 fragmentShadingRateStrictMultiplyCombiner; -} VkPhysicalDeviceFragmentShadingRatePropertiesKHR; - -typedef struct VkPhysicalDeviceFragmentShadingRateKHR { - VkStructureType sType; - void* pNext; - VkSampleCountFlags sampleCounts; - VkExtent2D fragmentSize; -} VkPhysicalDeviceFragmentShadingRateKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); -typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR( - VkPhysicalDevice physicalDevice, - uint32_t* pFragmentShadingRateCount, - VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR( - VkCommandBuffer commandBuffer, - const VkExtent2D* pFragmentSize, - const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); -#endif - - -#define VK_KHR_spirv_1_4 1 -#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1 -#define VK_KHR_SPIRV_1_4_EXTENSION_NAME "VK_KHR_spirv_1_4" - - -#define VK_KHR_surface_protected_capabilities 1 -#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1 -#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities" -typedef struct VkSurfaceProtectedCapabilitiesKHR { - VkStructureType sType; - const void* pNext; - VkBool32 supportsProtected; -} VkSurfaceProtectedCapabilitiesKHR; - - - -#define VK_KHR_separate_depth_stencil_layouts 1 -#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1 -#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts" -typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR; - -typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR; - -typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR; - - - -#define VK_KHR_present_wait 1 -#define VK_KHR_PRESENT_WAIT_SPEC_VERSION 1 -#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait" -typedef struct VkPhysicalDevicePresentWaitFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 presentWait; -} VkPhysicalDevicePresentWaitFeaturesKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkWaitForPresentKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresentKHR( - VkDevice device, - VkSwapchainKHR swapchain, - uint64_t presentId, - uint64_t timeout); -#endif - - -#define VK_KHR_uniform_buffer_standard_layout 1 -#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1 -#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout" -typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR; - - - -#define VK_KHR_buffer_device_address 1 -#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1 -#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address" -typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR; - -typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR; - -typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR; - -typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR; - -typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR; - -typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); -typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); -typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR( - VkDevice device, - const VkBufferDeviceAddressInfo* pInfo); - -VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR( - VkDevice device, - const VkBufferDeviceAddressInfo* pInfo); - -VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR( - VkDevice device, - const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); -#endif - - -#define VK_KHR_deferred_host_operations 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR) -#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4 -#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations" -typedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation); -typedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator); -typedef uint32_t (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation); -typedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation); -typedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR( - VkDevice device, - const VkAllocationCallbacks* pAllocator, - VkDeferredOperationKHR* pDeferredOperation); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR( - VkDevice device, - VkDeferredOperationKHR operation, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR( - VkDevice device, - VkDeferredOperationKHR operation); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR( - VkDevice device, - VkDeferredOperationKHR operation); - -VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR( - VkDevice device, - VkDeferredOperationKHR operation); -#endif - - -#define VK_KHR_pipeline_executable_properties 1 -#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1 -#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties" - -typedef enum VkPipelineExecutableStatisticFormatKHR { - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF -} VkPipelineExecutableStatisticFormatKHR; -typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 pipelineExecutableInfo; -} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR; - -typedef struct VkPipelineInfoKHR { - VkStructureType sType; - const void* pNext; - VkPipeline pipeline; -} VkPipelineInfoKHR; - -typedef struct VkPipelineExecutablePropertiesKHR { - VkStructureType sType; - void* pNext; - VkShaderStageFlags stages; - char name[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; - uint32_t subgroupSize; -} VkPipelineExecutablePropertiesKHR; - -typedef struct VkPipelineExecutableInfoKHR { - VkStructureType sType; - const void* pNext; - VkPipeline pipeline; - uint32_t executableIndex; -} VkPipelineExecutableInfoKHR; - -typedef union VkPipelineExecutableStatisticValueKHR { - VkBool32 b32; - int64_t i64; - uint64_t u64; - double f64; -} VkPipelineExecutableStatisticValueKHR; - -typedef struct VkPipelineExecutableStatisticKHR { - VkStructureType sType; - void* pNext; - char name[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; - VkPipelineExecutableStatisticFormatKHR format; - VkPipelineExecutableStatisticValueKHR value; -} VkPipelineExecutableStatisticKHR; - -typedef struct VkPipelineExecutableInternalRepresentationKHR { - VkStructureType sType; - void* pNext; - char name[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; - VkBool32 isText; - size_t dataSize; - void* pData; -} VkPipelineExecutableInternalRepresentationKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics); -typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR( - VkDevice device, - const VkPipelineInfoKHR* pPipelineInfo, - uint32_t* pExecutableCount, - VkPipelineExecutablePropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR( - VkDevice device, - const VkPipelineExecutableInfoKHR* pExecutableInfo, - uint32_t* pStatisticCount, - VkPipelineExecutableStatisticKHR* pStatistics); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR( - VkDevice device, - const VkPipelineExecutableInfoKHR* pExecutableInfo, - uint32_t* pInternalRepresentationCount, - VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); -#endif - - -#define VK_KHR_shader_integer_dot_product 1 -#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1 -#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product" -typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR; - -typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR; - - - -#define VK_KHR_pipeline_library 1 -#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1 -#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library" -typedef struct VkPipelineLibraryCreateInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t libraryCount; - const VkPipeline* pLibraries; -} VkPipelineLibraryCreateInfoKHR; - - - -#define VK_KHR_shader_non_semantic_info 1 -#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1 -#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME "VK_KHR_shader_non_semantic_info" - - -#define VK_KHR_present_id 1 -#define VK_KHR_PRESENT_ID_SPEC_VERSION 1 -#define VK_KHR_PRESENT_ID_EXTENSION_NAME "VK_KHR_present_id" -typedef struct VkPresentIdKHR { - VkStructureType sType; - const void* pNext; - uint32_t swapchainCount; - const uint64_t* pPresentIds; -} VkPresentIdKHR; - -typedef struct VkPhysicalDevicePresentIdFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 presentId; -} VkPhysicalDevicePresentIdFeaturesKHR; - - - -#define VK_KHR_synchronization2 1 -#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1 -#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2" -typedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR; - -typedef VkPipelineStageFlagBits2 VkPipelineStageFlagBits2KHR; - -typedef VkAccessFlags2 VkAccessFlags2KHR; - -typedef VkAccessFlagBits2 VkAccessFlagBits2KHR; - -typedef VkSubmitFlagBits VkSubmitFlagBitsKHR; - -typedef VkSubmitFlags VkSubmitFlagsKHR; - -typedef VkMemoryBarrier2 VkMemoryBarrier2KHR; - -typedef VkBufferMemoryBarrier2 VkBufferMemoryBarrier2KHR; - -typedef VkImageMemoryBarrier2 VkImageMemoryBarrier2KHR; - -typedef VkDependencyInfo VkDependencyInfoKHR; - -typedef VkSubmitInfo2 VkSubmitInfo2KHR; - -typedef VkSemaphoreSubmitInfo VkSemaphoreSubmitInfoKHR; - -typedef VkCommandBufferSubmitInfo VkCommandBufferSubmitInfoKHR; - -typedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR; - -typedef struct VkQueueFamilyCheckpointProperties2NV { - VkStructureType sType; - void* pNext; - VkPipelineStageFlags2 checkpointExecutionStageMask; -} VkQueueFamilyCheckpointProperties2NV; - -typedef struct VkCheckpointData2NV { - VkStructureType sType; - void* pNext; - VkPipelineStageFlags2 stage; - void* pCheckpointMarker; -} VkCheckpointData2NV; - -typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); -typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); -typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); -typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); -typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); -typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); -typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); -typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR( - VkCommandBuffer commandBuffer, - VkEvent event, - const VkDependencyInfo* pDependencyInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR( - VkCommandBuffer commandBuffer, - VkEvent event, - VkPipelineStageFlags2 stageMask); - -VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR( - VkCommandBuffer commandBuffer, - uint32_t eventCount, - const VkEvent* pEvents, - const VkDependencyInfo* pDependencyInfos); - -VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR( - VkCommandBuffer commandBuffer, - const VkDependencyInfo* pDependencyInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR( - VkCommandBuffer commandBuffer, - VkPipelineStageFlags2 stage, - VkQueryPool queryPool, - uint32_t query); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR( - VkQueue queue, - uint32_t submitCount, - const VkSubmitInfo2* pSubmits, - VkFence fence); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD( - VkCommandBuffer commandBuffer, - VkPipelineStageFlags2 stage, - VkBuffer dstBuffer, - VkDeviceSize dstOffset, - uint32_t marker); - -VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV( - VkQueue queue, - uint32_t* pCheckpointDataCount, - VkCheckpointData2NV* pCheckpointData); -#endif - - -#define VK_KHR_fragment_shader_barycentric 1 -#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 -#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_KHR_fragment_shader_barycentric" -typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 fragmentShaderBarycentric; -} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR; - -typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR { - VkStructureType sType; - void* pNext; - VkBool32 triStripVertexOrderIndependentOfProvokingVertex; -} VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR; - - - -#define VK_KHR_shader_subgroup_uniform_control_flow 1 -#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1 -#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME "VK_KHR_shader_subgroup_uniform_control_flow" -typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 shaderSubgroupUniformControlFlow; -} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; - - - -#define VK_KHR_zero_initialize_workgroup_memory 1 -#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1 -#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME "VK_KHR_zero_initialize_workgroup_memory" -typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; - - - -#define VK_KHR_workgroup_memory_explicit_layout 1 -#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1 -#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME "VK_KHR_workgroup_memory_explicit_layout" -typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 workgroupMemoryExplicitLayout; - VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout; - VkBool32 workgroupMemoryExplicitLayout8BitAccess; - VkBool32 workgroupMemoryExplicitLayout16BitAccess; -} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; - - - -#define VK_KHR_copy_commands2 1 -#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1 -#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2" -typedef VkCopyBufferInfo2 VkCopyBufferInfo2KHR; - -typedef VkCopyImageInfo2 VkCopyImageInfo2KHR; - -typedef VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2KHR; - -typedef VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2KHR; - -typedef VkBlitImageInfo2 VkBlitImageInfo2KHR; - -typedef VkResolveImageInfo2 VkResolveImageInfo2KHR; - -typedef VkBufferCopy2 VkBufferCopy2KHR; - -typedef VkImageCopy2 VkImageCopy2KHR; - -typedef VkImageBlit2 VkImageBlit2KHR; - -typedef VkBufferImageCopy2 VkBufferImageCopy2KHR; - -typedef VkImageResolve2 VkImageResolve2KHR; - -typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); -typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR( - VkCommandBuffer commandBuffer, - const VkCopyBufferInfo2* pCopyBufferInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR( - VkCommandBuffer commandBuffer, - const VkCopyImageInfo2* pCopyImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR( - VkCommandBuffer commandBuffer, - const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR( - VkCommandBuffer commandBuffer, - const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR( - VkCommandBuffer commandBuffer, - const VkBlitImageInfo2* pBlitImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR( - VkCommandBuffer commandBuffer, - const VkResolveImageInfo2* pResolveImageInfo); -#endif - - -#define VK_KHR_format_feature_flags2 1 -#define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 1 -#define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME "VK_KHR_format_feature_flags2" -typedef VkFormatFeatureFlags2 VkFormatFeatureFlags2KHR; - -typedef VkFormatFeatureFlagBits2 VkFormatFeatureFlagBits2KHR; - -typedef VkFormatProperties3 VkFormatProperties3KHR; - - - -#define VK_KHR_ray_tracing_maintenance1 1 -#define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1 -#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1" -typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 rayTracingMaintenance1; - VkBool32 rayTracingPipelineTraceRaysIndirect2; -} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR; - -typedef struct VkTraceRaysIndirectCommand2KHR { - VkDeviceAddress raygenShaderRecordAddress; - VkDeviceSize raygenShaderRecordSize; - VkDeviceAddress missShaderBindingTableAddress; - VkDeviceSize missShaderBindingTableSize; - VkDeviceSize missShaderBindingTableStride; - VkDeviceAddress hitShaderBindingTableAddress; - VkDeviceSize hitShaderBindingTableSize; - VkDeviceSize hitShaderBindingTableStride; - VkDeviceAddress callableShaderBindingTableAddress; - VkDeviceSize callableShaderBindingTableSize; - VkDeviceSize callableShaderBindingTableStride; - uint32_t width; - uint32_t height; - uint32_t depth; -} VkTraceRaysIndirectCommand2KHR; - -typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirect2KHR)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirect2KHR( - VkCommandBuffer commandBuffer, - VkDeviceAddress indirectDeviceAddress); -#endif - - -#define VK_KHR_portability_enumeration 1 -#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1 -#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration" - - -#define VK_KHR_maintenance4 1 -#define VK_KHR_MAINTENANCE_4_SPEC_VERSION 2 -#define VK_KHR_MAINTENANCE_4_EXTENSION_NAME "VK_KHR_maintenance4" -typedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR; - -typedef VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesKHR; - -typedef VkDeviceBufferMemoryRequirements VkDeviceBufferMemoryRequirementsKHR; - -typedef VkDeviceImageMemoryRequirements VkDeviceImageMemoryRequirementsKHR; - -typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirementsKHR)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirementsKHR( - VkDevice device, - const VkDeviceBufferMemoryRequirements* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirementsKHR( - VkDevice device, - const VkDeviceImageMemoryRequirements* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirementsKHR( - VkDevice device, - const VkDeviceImageMemoryRequirements* pInfo, - uint32_t* pSparseMemoryRequirementCount, - VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); -#endif - - -#define VK_EXT_debug_report 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) -#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10 -#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" - -typedef enum VkDebugReportObjectTypeEXT { - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, - VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, - VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, - VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, - VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, - VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, - VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, - VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, - VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, - VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, - VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, - VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, - VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28, - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29, - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30, - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000, - VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT = 1000029000, - VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001, - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000, - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000, - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000, - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDebugReportObjectTypeEXT; - -typedef enum VkDebugReportFlagBitsEXT { - VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001, - VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002, - VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004, - VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008, - VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010, - VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDebugReportFlagBitsEXT; -typedef VkFlags VkDebugReportFlagsEXT; -typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( - VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objectType, - uint64_t object, - size_t location, - int32_t messageCode, - const char* pLayerPrefix, - const char* pMessage, - void* pUserData); - -typedef struct VkDebugReportCallbackCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkDebugReportFlagsEXT flags; - PFN_vkDebugReportCallbackEXT pfnCallback; - void* pUserData; -} VkDebugReportCallbackCreateInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback); -typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT( - VkInstance instance, - const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDebugReportCallbackEXT* pCallback); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT( - VkInstance instance, - VkDebugReportCallbackEXT callback, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( - VkInstance instance, - VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objectType, - uint64_t object, - size_t location, - int32_t messageCode, - const char* pLayerPrefix, - const char* pMessage); -#endif - - -#define VK_NV_glsl_shader 1 -#define VK_NV_GLSL_SHADER_SPEC_VERSION 1 -#define VK_NV_GLSL_SHADER_EXTENSION_NAME "VK_NV_glsl_shader" - - -#define VK_EXT_depth_range_unrestricted 1 -#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1 -#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted" - - -#define VK_IMG_filter_cubic 1 -#define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1 -#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic" - - -#define VK_AMD_rasterization_order 1 -#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 -#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order" - -typedef enum VkRasterizationOrderAMD { - VK_RASTERIZATION_ORDER_STRICT_AMD = 0, - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF -} VkRasterizationOrderAMD; -typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { - VkStructureType sType; - const void* pNext; - VkRasterizationOrderAMD rasterizationOrder; -} VkPipelineRasterizationStateRasterizationOrderAMD; - - - -#define VK_AMD_shader_trinary_minmax 1 -#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1 -#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax" - - -#define VK_AMD_shader_explicit_vertex_parameter 1 -#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1 -#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter" - - -#define VK_EXT_debug_marker 1 -#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4 -#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker" -typedef struct VkDebugMarkerObjectNameInfoEXT { - VkStructureType sType; - const void* pNext; - VkDebugReportObjectTypeEXT objectType; - uint64_t object; - const char* pObjectName; -} VkDebugMarkerObjectNameInfoEXT; - -typedef struct VkDebugMarkerObjectTagInfoEXT { - VkStructureType sType; - const void* pNext; - VkDebugReportObjectTypeEXT objectType; - uint64_t object; - uint64_t tagName; - size_t tagSize; - const void* pTag; -} VkDebugMarkerObjectTagInfoEXT; - -typedef struct VkDebugMarkerMarkerInfoEXT { - VkStructureType sType; - const void* pNext; - const char* pMarkerName; - float color[4]; -} VkDebugMarkerMarkerInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo); -typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo); -typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); -typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer); -typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT( - VkDevice device, - const VkDebugMarkerObjectTagInfoEXT* pTagInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT( - VkDevice device, - const VkDebugMarkerObjectNameInfoEXT* pNameInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT( - VkCommandBuffer commandBuffer, - const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT( - VkCommandBuffer commandBuffer); - -VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( - VkCommandBuffer commandBuffer, - const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); -#endif - - -#define VK_AMD_gcn_shader 1 -#define VK_AMD_GCN_SHADER_SPEC_VERSION 1 -#define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader" - - -#define VK_NV_dedicated_allocation 1 -#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 -#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation" -typedef struct VkDedicatedAllocationImageCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkBool32 dedicatedAllocation; -} VkDedicatedAllocationImageCreateInfoNV; - -typedef struct VkDedicatedAllocationBufferCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkBool32 dedicatedAllocation; -} VkDedicatedAllocationBufferCreateInfoNV; - -typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { - VkStructureType sType; - const void* pNext; - VkImage image; - VkBuffer buffer; -} VkDedicatedAllocationMemoryAllocateInfoNV; - - - -#define VK_EXT_transform_feedback 1 -#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 -#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback" -typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT; -typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 transformFeedback; - VkBool32 geometryStreams; -} VkPhysicalDeviceTransformFeedbackFeaturesEXT; - -typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t maxTransformFeedbackStreams; - uint32_t maxTransformFeedbackBuffers; - VkDeviceSize maxTransformFeedbackBufferSize; - uint32_t maxTransformFeedbackStreamDataSize; - uint32_t maxTransformFeedbackBufferDataSize; - uint32_t maxTransformFeedbackBufferDataStride; - VkBool32 transformFeedbackQueries; - VkBool32 transformFeedbackStreamsLinesTriangles; - VkBool32 transformFeedbackRasterizationStreamSelect; - VkBool32 transformFeedbackDraw; -} VkPhysicalDeviceTransformFeedbackPropertiesEXT; - -typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineRasterizationStateStreamCreateFlagsEXT flags; - uint32_t rasterizationStream; -} VkPipelineRasterizationStateStreamCreateInfoEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes); -typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); -typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); -typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index); -typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT( - VkCommandBuffer commandBuffer, - uint32_t firstBinding, - uint32_t bindingCount, - const VkBuffer* pBuffers, - const VkDeviceSize* pOffsets, - const VkDeviceSize* pSizes); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT( - VkCommandBuffer commandBuffer, - uint32_t firstCounterBuffer, - uint32_t counterBufferCount, - const VkBuffer* pCounterBuffers, - const VkDeviceSize* pCounterBufferOffsets); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT( - VkCommandBuffer commandBuffer, - uint32_t firstCounterBuffer, - uint32_t counterBufferCount, - const VkBuffer* pCounterBuffers, - const VkDeviceSize* pCounterBufferOffsets); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t query, - VkQueryControlFlags flags, - uint32_t index); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t query, - uint32_t index); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT( - VkCommandBuffer commandBuffer, - uint32_t instanceCount, - uint32_t firstInstance, - VkBuffer counterBuffer, - VkDeviceSize counterBufferOffset, - uint32_t counterOffset, - uint32_t vertexStride); -#endif - - -#define VK_NVX_binary_import 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX) -#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 1 -#define VK_NVX_BINARY_IMPORT_EXTENSION_NAME "VK_NVX_binary_import" -typedef struct VkCuModuleCreateInfoNVX { - VkStructureType sType; - const void* pNext; - size_t dataSize; - const void* pData; -} VkCuModuleCreateInfoNVX; - -typedef struct VkCuFunctionCreateInfoNVX { - VkStructureType sType; - const void* pNext; - VkCuModuleNVX module; - const char* pName; -} VkCuFunctionCreateInfoNVX; - -typedef struct VkCuLaunchInfoNVX { - VkStructureType sType; - const void* pNext; - VkCuFunctionNVX function; - uint32_t gridDimX; - uint32_t gridDimY; - uint32_t gridDimZ; - uint32_t blockDimX; - uint32_t blockDimY; - uint32_t blockDimZ; - uint32_t sharedMemBytes; - size_t paramCount; - const void* const * pParams; - size_t extraCount; - const void* const * pExtras; -} VkCuLaunchInfoNVX; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateCuModuleNVX)(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule); -typedef VkResult (VKAPI_PTR *PFN_vkCreateCuFunctionNVX)(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction); -typedef void (VKAPI_PTR *PFN_vkDestroyCuModuleNVX)(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkDestroyCuFunctionNVX)(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuModuleNVX( - VkDevice device, - const VkCuModuleCreateInfoNVX* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkCuModuleNVX* pModule); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuFunctionNVX( - VkDevice device, - const VkCuFunctionCreateInfoNVX* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkCuFunctionNVX* pFunction); - -VKAPI_ATTR void VKAPI_CALL vkDestroyCuModuleNVX( - VkDevice device, - VkCuModuleNVX module, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkDestroyCuFunctionNVX( - VkDevice device, - VkCuFunctionNVX function, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkCmdCuLaunchKernelNVX( - VkCommandBuffer commandBuffer, - const VkCuLaunchInfoNVX* pLaunchInfo); -#endif - - -#define VK_NVX_image_view_handle 1 -#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 2 -#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle" -typedef struct VkImageViewHandleInfoNVX { - VkStructureType sType; - const void* pNext; - VkImageView imageView; - VkDescriptorType descriptorType; - VkSampler sampler; -} VkImageViewHandleInfoNVX; - -typedef struct VkImageViewAddressPropertiesNVX { - VkStructureType sType; - void* pNext; - VkDeviceAddress deviceAddress; - VkDeviceSize size; -} VkImageViewAddressPropertiesNVX; - -typedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX( - VkDevice device, - const VkImageViewHandleInfoNVX* pInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX( - VkDevice device, - VkImageView imageView, - VkImageViewAddressPropertiesNVX* pProperties); -#endif - - -#define VK_AMD_draw_indirect_count 1 -#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2 -#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); -#endif - - -#define VK_AMD_negative_viewport_height 1 -#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 -#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height" - - -#define VK_AMD_gpu_shader_half_float 1 -#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2 -#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float" - - -#define VK_AMD_shader_ballot 1 -#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1 -#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot" - - -#define VK_AMD_texture_gather_bias_lod 1 -#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1 -#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod" -typedef struct VkTextureLODGatherFormatPropertiesAMD { - VkStructureType sType; - void* pNext; - VkBool32 supportsTextureGatherLODBiasAMD; -} VkTextureLODGatherFormatPropertiesAMD; - - - -#define VK_AMD_shader_info 1 -#define VK_AMD_SHADER_INFO_SPEC_VERSION 1 -#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info" - -typedef enum VkShaderInfoTypeAMD { - VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0, - VK_SHADER_INFO_TYPE_BINARY_AMD = 1, - VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2, - VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF -} VkShaderInfoTypeAMD; -typedef struct VkShaderResourceUsageAMD { - uint32_t numUsedVgprs; - uint32_t numUsedSgprs; - uint32_t ldsSizePerLocalWorkGroup; - size_t ldsUsageSizeInBytes; - size_t scratchMemUsageInBytes; -} VkShaderResourceUsageAMD; - -typedef struct VkShaderStatisticsInfoAMD { - VkShaderStageFlags shaderStageMask; - VkShaderResourceUsageAMD resourceUsage; - uint32_t numPhysicalVgprs; - uint32_t numPhysicalSgprs; - uint32_t numAvailableVgprs; - uint32_t numAvailableSgprs; - uint32_t computeWorkGroupSize[3]; -} VkShaderStatisticsInfoAMD; - -typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( - VkDevice device, - VkPipeline pipeline, - VkShaderStageFlagBits shaderStage, - VkShaderInfoTypeAMD infoType, - size_t* pInfoSize, - void* pInfo); -#endif - - -#define VK_AMD_shader_image_load_store_lod 1 -#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1 -#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod" - - -#define VK_NV_corner_sampled_image 1 -#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2 -#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image" -typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 cornerSampledImage; -} VkPhysicalDeviceCornerSampledImageFeaturesNV; - - - -#define VK_IMG_format_pvrtc 1 -#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1 -#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc" - - -#define VK_NV_external_memory_capabilities 1 -#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 -#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities" - -typedef enum VkExternalMemoryHandleTypeFlagBitsNV { - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkExternalMemoryHandleTypeFlagBitsNV; -typedef VkFlags VkExternalMemoryHandleTypeFlagsNV; - -typedef enum VkExternalMemoryFeatureFlagBitsNV { - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001, - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002, - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004, - VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkExternalMemoryFeatureFlagBitsNV; -typedef VkFlags VkExternalMemoryFeatureFlagsNV; -typedef struct VkExternalImageFormatPropertiesNV { - VkImageFormatProperties imageFormatProperties; - VkExternalMemoryFeatureFlagsNV externalMemoryFeatures; - VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes; - VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes; -} VkExternalImageFormatPropertiesNV; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkImageType type, - VkImageTiling tiling, - VkImageUsageFlags usage, - VkImageCreateFlags flags, - VkExternalMemoryHandleTypeFlagsNV externalHandleType, - VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); -#endif - - -#define VK_NV_external_memory 1 -#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1 -#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory" -typedef struct VkExternalMemoryImageCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagsNV handleTypes; -} VkExternalMemoryImageCreateInfoNV; - -typedef struct VkExportMemoryAllocateInfoNV { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagsNV handleTypes; -} VkExportMemoryAllocateInfoNV; - - - -#define VK_EXT_validation_flags 1 -#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2 -#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags" - -typedef enum VkValidationCheckEXT { - VK_VALIDATION_CHECK_ALL_EXT = 0, - VK_VALIDATION_CHECK_SHADERS_EXT = 1, - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF -} VkValidationCheckEXT; -typedef struct VkValidationFlagsEXT { - VkStructureType sType; - const void* pNext; - uint32_t disabledValidationCheckCount; - const VkValidationCheckEXT* pDisabledValidationChecks; -} VkValidationFlagsEXT; - - - -#define VK_EXT_shader_subgroup_ballot 1 -#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1 -#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot" - - -#define VK_EXT_shader_subgroup_vote 1 -#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1 -#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote" - - -#define VK_EXT_texture_compression_astc_hdr 1 -#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1 -#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr" -typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; - - - -#define VK_EXT_astc_decode_mode 1 -#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1 -#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode" -typedef struct VkImageViewASTCDecodeModeEXT { - VkStructureType sType; - const void* pNext; - VkFormat decodeMode; -} VkImageViewASTCDecodeModeEXT; - -typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 decodeModeSharedExponent; -} VkPhysicalDeviceASTCDecodeFeaturesEXT; - - - -#define VK_EXT_conditional_rendering 1 -#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2 -#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering" - -typedef enum VkConditionalRenderingFlagBitsEXT { - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001, - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkConditionalRenderingFlagBitsEXT; -typedef VkFlags VkConditionalRenderingFlagsEXT; -typedef struct VkConditionalRenderingBeginInfoEXT { - VkStructureType sType; - const void* pNext; - VkBuffer buffer; - VkDeviceSize offset; - VkConditionalRenderingFlagsEXT flags; -} VkConditionalRenderingBeginInfoEXT; - -typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 conditionalRendering; - VkBool32 inheritedConditionalRendering; -} VkPhysicalDeviceConditionalRenderingFeaturesEXT; - -typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT { - VkStructureType sType; - const void* pNext; - VkBool32 conditionalRenderingEnable; -} VkCommandBufferInheritanceConditionalRenderingInfoEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); -typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT( - VkCommandBuffer commandBuffer, - const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT( - VkCommandBuffer commandBuffer); -#endif - - -#define VK_NV_clip_space_w_scaling 1 -#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1 -#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling" -typedef struct VkViewportWScalingNV { - float xcoeff; - float ycoeff; -} VkViewportWScalingNV; - -typedef struct VkPipelineViewportWScalingStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkBool32 viewportWScalingEnable; - uint32_t viewportCount; - const VkViewportWScalingNV* pViewportWScalings; -} VkPipelineViewportWScalingStateCreateInfoNV; - -typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV( - VkCommandBuffer commandBuffer, - uint32_t firstViewport, - uint32_t viewportCount, - const VkViewportWScalingNV* pViewportWScalings); -#endif - - -#define VK_EXT_direct_mode_display 1 -#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1 -#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display" -typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display); -#endif - - -#define VK_EXT_display_surface_counter 1 -#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1 -#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter" - -typedef enum VkSurfaceCounterFlagBitsEXT { - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001, - VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT, - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkSurfaceCounterFlagBitsEXT; -typedef VkFlags VkSurfaceCounterFlagsEXT; -typedef struct VkSurfaceCapabilities2EXT { - VkStructureType sType; - void* pNext; - uint32_t minImageCount; - uint32_t maxImageCount; - VkExtent2D currentExtent; - VkExtent2D minImageExtent; - VkExtent2D maxImageExtent; - uint32_t maxImageArrayLayers; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkSurfaceTransformFlagBitsKHR currentTransform; - VkCompositeAlphaFlagsKHR supportedCompositeAlpha; - VkImageUsageFlags supportedUsageFlags; - VkSurfaceCounterFlagsEXT supportedSurfaceCounters; -} VkSurfaceCapabilities2EXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - VkSurfaceCapabilities2EXT* pSurfaceCapabilities); -#endif - - -#define VK_EXT_display_control 1 -#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1 -#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control" - -typedef enum VkDisplayPowerStateEXT { - VK_DISPLAY_POWER_STATE_OFF_EXT = 0, - VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1, - VK_DISPLAY_POWER_STATE_ON_EXT = 2, - VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDisplayPowerStateEXT; - -typedef enum VkDeviceEventTypeEXT { - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0, - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDeviceEventTypeEXT; - -typedef enum VkDisplayEventTypeEXT { - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0, - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDisplayEventTypeEXT; -typedef struct VkDisplayPowerInfoEXT { - VkStructureType sType; - const void* pNext; - VkDisplayPowerStateEXT powerState; -} VkDisplayPowerInfoEXT; - -typedef struct VkDeviceEventInfoEXT { - VkStructureType sType; - const void* pNext; - VkDeviceEventTypeEXT deviceEvent; -} VkDeviceEventInfoEXT; - -typedef struct VkDisplayEventInfoEXT { - VkStructureType sType; - const void* pNext; - VkDisplayEventTypeEXT displayEvent; -} VkDisplayEventInfoEXT; - -typedef struct VkSwapchainCounterCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkSurfaceCounterFlagsEXT surfaceCounters; -} VkSwapchainCounterCreateInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo); -typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); -typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); -typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT( - VkDevice device, - VkDisplayKHR display, - const VkDisplayPowerInfoEXT* pDisplayPowerInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT( - VkDevice device, - const VkDeviceEventInfoEXT* pDeviceEventInfo, - const VkAllocationCallbacks* pAllocator, - VkFence* pFence); - -VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT( - VkDevice device, - VkDisplayKHR display, - const VkDisplayEventInfoEXT* pDisplayEventInfo, - const VkAllocationCallbacks* pAllocator, - VkFence* pFence); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT( - VkDevice device, - VkSwapchainKHR swapchain, - VkSurfaceCounterFlagBitsEXT counter, - uint64_t* pCounterValue); -#endif - - -#define VK_GOOGLE_display_timing 1 -#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1 -#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing" -typedef struct VkRefreshCycleDurationGOOGLE { - uint64_t refreshDuration; -} VkRefreshCycleDurationGOOGLE; - -typedef struct VkPastPresentationTimingGOOGLE { - uint32_t presentID; - uint64_t desiredPresentTime; - uint64_t actualPresentTime; - uint64_t earliestPresentTime; - uint64_t presentMargin; -} VkPastPresentationTimingGOOGLE; - -typedef struct VkPresentTimeGOOGLE { - uint32_t presentID; - uint64_t desiredPresentTime; -} VkPresentTimeGOOGLE; - -typedef struct VkPresentTimesInfoGOOGLE { - VkStructureType sType; - const void* pNext; - uint32_t swapchainCount; - const VkPresentTimeGOOGLE* pTimes; -} VkPresentTimesInfoGOOGLE; - -typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE( - VkDevice device, - VkSwapchainKHR swapchain, - VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( - VkDevice device, - VkSwapchainKHR swapchain, - uint32_t* pPresentationTimingCount, - VkPastPresentationTimingGOOGLE* pPresentationTimings); -#endif - - -#define VK_NV_sample_mask_override_coverage 1 -#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1 -#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage" - - -#define VK_NV_geometry_shader_passthrough 1 -#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1 -#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough" - - -#define VK_NV_viewport_array2 1 -#define VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION 1 -#define VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME "VK_NV_viewport_array2" -#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION -#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME - - -#define VK_NVX_multiview_per_view_attributes 1 -#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1 -#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes" -typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { - VkStructureType sType; - void* pNext; - VkBool32 perViewPositionAllComponents; -} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; - - - -#define VK_NV_viewport_swizzle 1 -#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1 -#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle" - -typedef enum VkViewportCoordinateSwizzleNV { - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7, - VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF -} VkViewportCoordinateSwizzleNV; -typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV; -typedef struct VkViewportSwizzleNV { - VkViewportCoordinateSwizzleNV x; - VkViewportCoordinateSwizzleNV y; - VkViewportCoordinateSwizzleNV z; - VkViewportCoordinateSwizzleNV w; -} VkViewportSwizzleNV; - -typedef struct VkPipelineViewportSwizzleStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineViewportSwizzleStateCreateFlagsNV flags; - uint32_t viewportCount; - const VkViewportSwizzleNV* pViewportSwizzles; -} VkPipelineViewportSwizzleStateCreateInfoNV; - - - -#define VK_EXT_discard_rectangles 1 -#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1 -#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles" - -typedef enum VkDiscardRectangleModeEXT { - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, - VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, - VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDiscardRectangleModeEXT; -typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT; -typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t maxDiscardRectangles; -} VkPhysicalDeviceDiscardRectanglePropertiesEXT; - -typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineDiscardRectangleStateCreateFlagsEXT flags; - VkDiscardRectangleModeEXT discardRectangleMode; - uint32_t discardRectangleCount; - const VkRect2D* pDiscardRectangles; -} VkPipelineDiscardRectangleStateCreateInfoEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( - VkCommandBuffer commandBuffer, - uint32_t firstDiscardRectangle, - uint32_t discardRectangleCount, - const VkRect2D* pDiscardRectangles); -#endif - - -#define VK_EXT_conservative_rasterization 1 -#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1 -#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization" - -typedef enum VkConservativeRasterizationModeEXT { - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0, - VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1, - VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2, - VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkConservativeRasterizationModeEXT; -typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT; -typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT { - VkStructureType sType; - void* pNext; - float primitiveOverestimationSize; - float maxExtraPrimitiveOverestimationSize; - float extraPrimitiveOverestimationSizeGranularity; - VkBool32 primitiveUnderestimation; - VkBool32 conservativePointAndLineRasterization; - VkBool32 degenerateTrianglesRasterized; - VkBool32 degenerateLinesRasterized; - VkBool32 fullyCoveredFragmentShaderInputVariable; - VkBool32 conservativeRasterizationPostDepthCoverage; -} VkPhysicalDeviceConservativeRasterizationPropertiesEXT; - -typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineRasterizationConservativeStateCreateFlagsEXT flags; - VkConservativeRasterizationModeEXT conservativeRasterizationMode; - float extraPrimitiveOverestimationSize; -} VkPipelineRasterizationConservativeStateCreateInfoEXT; - - - -#define VK_EXT_depth_clip_enable 1 -#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1 -#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable" -typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT; -typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 depthClipEnable; -} VkPhysicalDeviceDepthClipEnableFeaturesEXT; - -typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineRasterizationDepthClipStateCreateFlagsEXT flags; - VkBool32 depthClipEnable; -} VkPipelineRasterizationDepthClipStateCreateInfoEXT; - - - -#define VK_EXT_swapchain_colorspace 1 -#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4 -#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace" - - -#define VK_EXT_hdr_metadata 1 -#define VK_EXT_HDR_METADATA_SPEC_VERSION 2 -#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" -typedef struct VkXYColorEXT { - float x; - float y; -} VkXYColorEXT; - -typedef struct VkHdrMetadataEXT { - VkStructureType sType; - const void* pNext; - VkXYColorEXT displayPrimaryRed; - VkXYColorEXT displayPrimaryGreen; - VkXYColorEXT displayPrimaryBlue; - VkXYColorEXT whitePoint; - float maxLuminance; - float minLuminance; - float maxContentLightLevel; - float maxFrameAverageLightLevel; -} VkHdrMetadataEXT; - -typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( - VkDevice device, - uint32_t swapchainCount, - const VkSwapchainKHR* pSwapchains, - const VkHdrMetadataEXT* pMetadata); -#endif - - -#define VK_EXT_external_memory_dma_buf 1 -#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1 -#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf" - - -#define VK_EXT_queue_family_foreign 1 -#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1 -#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign" -#define VK_QUEUE_FAMILY_FOREIGN_EXT (~2U) - - -#define VK_EXT_debug_utils 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT) -#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2 -#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils" -typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT; - -typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT { - VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDebugUtilsMessageSeverityFlagBitsEXT; - -typedef enum VkDebugUtilsMessageTypeFlagBitsEXT { - VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001, - VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002, - VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004, - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDebugUtilsMessageTypeFlagBitsEXT; -typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT; -typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT; -typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT; -typedef struct VkDebugUtilsLabelEXT { - VkStructureType sType; - const void* pNext; - const char* pLabelName; - float color[4]; -} VkDebugUtilsLabelEXT; - -typedef struct VkDebugUtilsObjectNameInfoEXT { - VkStructureType sType; - const void* pNext; - VkObjectType objectType; - uint64_t objectHandle; - const char* pObjectName; -} VkDebugUtilsObjectNameInfoEXT; - -typedef struct VkDebugUtilsMessengerCallbackDataEXT { - VkStructureType sType; - const void* pNext; - VkDebugUtilsMessengerCallbackDataFlagsEXT flags; - const char* pMessageIdName; - int32_t messageIdNumber; - const char* pMessage; - uint32_t queueLabelCount; - const VkDebugUtilsLabelEXT* pQueueLabels; - uint32_t cmdBufLabelCount; - const VkDebugUtilsLabelEXT* pCmdBufLabels; - uint32_t objectCount; - const VkDebugUtilsObjectNameInfoEXT* pObjects; -} VkDebugUtilsMessengerCallbackDataEXT; - -typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)( - VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, - VkDebugUtilsMessageTypeFlagsEXT messageTypes, - const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, - void* pUserData); - -typedef struct VkDebugUtilsMessengerCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkDebugUtilsMessengerCreateFlagsEXT flags; - VkDebugUtilsMessageSeverityFlagsEXT messageSeverity; - VkDebugUtilsMessageTypeFlagsEXT messageType; - PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback; - void* pUserData; -} VkDebugUtilsMessengerCreateInfoEXT; - -typedef struct VkDebugUtilsObjectTagInfoEXT { - VkStructureType sType; - const void* pNext; - VkObjectType objectType; - uint64_t objectHandle; - uint64_t tagName; - size_t tagSize; - const void* pTag; -} VkDebugUtilsObjectTagInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo); -typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo); -typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); -typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue); -typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); -typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); -typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer); -typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger); -typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT( - VkDevice device, - const VkDebugUtilsObjectNameInfoEXT* pNameInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT( - VkDevice device, - const VkDebugUtilsObjectTagInfoEXT* pTagInfo); - -VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT( - VkQueue queue, - const VkDebugUtilsLabelEXT* pLabelInfo); - -VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT( - VkQueue queue); - -VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT( - VkQueue queue, - const VkDebugUtilsLabelEXT* pLabelInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT( - VkCommandBuffer commandBuffer, - const VkDebugUtilsLabelEXT* pLabelInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT( - VkCommandBuffer commandBuffer); - -VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT( - VkCommandBuffer commandBuffer, - const VkDebugUtilsLabelEXT* pLabelInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT( - VkInstance instance, - const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDebugUtilsMessengerEXT* pMessenger); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT( - VkInstance instance, - VkDebugUtilsMessengerEXT messenger, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT( - VkInstance instance, - VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, - VkDebugUtilsMessageTypeFlagsEXT messageTypes, - const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); -#endif - - -#define VK_EXT_sampler_filter_minmax 1 -#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2 -#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" -typedef VkSamplerReductionMode VkSamplerReductionModeEXT; - -typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT; - -typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT; - - - -#define VK_AMD_gpu_shader_int16 1 -#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2 -#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16" - - -#define VK_AMD_mixed_attachment_samples 1 -#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1 -#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples" - - -#define VK_AMD_shader_fragment_mask 1 -#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1 -#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask" - - -#define VK_EXT_inline_uniform_block 1 -#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1 -#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block" -typedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT; - -typedef VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesEXT; - -typedef VkWriteDescriptorSetInlineUniformBlock VkWriteDescriptorSetInlineUniformBlockEXT; - -typedef VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUniformBlockCreateInfoEXT; - - - -#define VK_EXT_shader_stencil_export 1 -#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1 -#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export" - - -#define VK_EXT_sample_locations 1 -#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1 -#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations" -typedef struct VkSampleLocationEXT { - float x; - float y; -} VkSampleLocationEXT; - -typedef struct VkSampleLocationsInfoEXT { - VkStructureType sType; - const void* pNext; - VkSampleCountFlagBits sampleLocationsPerPixel; - VkExtent2D sampleLocationGridSize; - uint32_t sampleLocationsCount; - const VkSampleLocationEXT* pSampleLocations; -} VkSampleLocationsInfoEXT; - -typedef struct VkAttachmentSampleLocationsEXT { - uint32_t attachmentIndex; - VkSampleLocationsInfoEXT sampleLocationsInfo; -} VkAttachmentSampleLocationsEXT; - -typedef struct VkSubpassSampleLocationsEXT { - uint32_t subpassIndex; - VkSampleLocationsInfoEXT sampleLocationsInfo; -} VkSubpassSampleLocationsEXT; - -typedef struct VkRenderPassSampleLocationsBeginInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t attachmentInitialSampleLocationsCount; - const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations; - uint32_t postSubpassSampleLocationsCount; - const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations; -} VkRenderPassSampleLocationsBeginInfoEXT; - -typedef struct VkPipelineSampleLocationsStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkBool32 sampleLocationsEnable; - VkSampleLocationsInfoEXT sampleLocationsInfo; -} VkPipelineSampleLocationsStateCreateInfoEXT; - -typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT { - VkStructureType sType; - void* pNext; - VkSampleCountFlags sampleLocationSampleCounts; - VkExtent2D maxSampleLocationGridSize; - float sampleLocationCoordinateRange[2]; - uint32_t sampleLocationSubPixelBits; - VkBool32 variableSampleLocations; -} VkPhysicalDeviceSampleLocationsPropertiesEXT; - -typedef struct VkMultisamplePropertiesEXT { - VkStructureType sType; - void* pNext; - VkExtent2D maxSampleLocationGridSize; -} VkMultisamplePropertiesEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT( - VkCommandBuffer commandBuffer, - const VkSampleLocationsInfoEXT* pSampleLocationsInfo); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT( - VkPhysicalDevice physicalDevice, - VkSampleCountFlagBits samples, - VkMultisamplePropertiesEXT* pMultisampleProperties); -#endif - - -#define VK_EXT_blend_operation_advanced 1 -#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2 -#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced" - -typedef enum VkBlendOverlapEXT { - VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0, - VK_BLEND_OVERLAP_DISJOINT_EXT = 1, - VK_BLEND_OVERLAP_CONJOINT_EXT = 2, - VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF -} VkBlendOverlapEXT; -typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 advancedBlendCoherentOperations; -} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT; - -typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t advancedBlendMaxColorAttachments; - VkBool32 advancedBlendIndependentBlend; - VkBool32 advancedBlendNonPremultipliedSrcColor; - VkBool32 advancedBlendNonPremultipliedDstColor; - VkBool32 advancedBlendCorrelatedOverlap; - VkBool32 advancedBlendAllOperations; -} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT; - -typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkBool32 srcPremultiplied; - VkBool32 dstPremultiplied; - VkBlendOverlapEXT blendOverlap; -} VkPipelineColorBlendAdvancedStateCreateInfoEXT; - - - -#define VK_NV_fragment_coverage_to_color 1 -#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1 -#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color" -typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV; -typedef struct VkPipelineCoverageToColorStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineCoverageToColorStateCreateFlagsNV flags; - VkBool32 coverageToColorEnable; - uint32_t coverageToColorLocation; -} VkPipelineCoverageToColorStateCreateInfoNV; - - - -#define VK_NV_framebuffer_mixed_samples 1 -#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1 -#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples" - -typedef enum VkCoverageModulationModeNV { - VK_COVERAGE_MODULATION_MODE_NONE_NV = 0, - VK_COVERAGE_MODULATION_MODE_RGB_NV = 1, - VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2, - VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3, - VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF -} VkCoverageModulationModeNV; -typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV; -typedef struct VkPipelineCoverageModulationStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineCoverageModulationStateCreateFlagsNV flags; - VkCoverageModulationModeNV coverageModulationMode; - VkBool32 coverageModulationTableEnable; - uint32_t coverageModulationTableCount; - const float* pCoverageModulationTable; -} VkPipelineCoverageModulationStateCreateInfoNV; - - - -#define VK_NV_fill_rectangle 1 -#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1 -#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle" - - -#define VK_NV_shader_sm_builtins 1 -#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1 -#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins" -typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV { - VkStructureType sType; - void* pNext; - uint32_t shaderSMCount; - uint32_t shaderWarpsPerSM; -} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV; - -typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 shaderSMBuiltins; -} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV; - - - -#define VK_EXT_post_depth_coverage 1 -#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1 -#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage" - - -#define VK_EXT_image_drm_format_modifier 1 -#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 2 -#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier" -typedef struct VkDrmFormatModifierPropertiesEXT { - uint64_t drmFormatModifier; - uint32_t drmFormatModifierPlaneCount; - VkFormatFeatureFlags drmFormatModifierTilingFeatures; -} VkDrmFormatModifierPropertiesEXT; - -typedef struct VkDrmFormatModifierPropertiesListEXT { - VkStructureType sType; - void* pNext; - uint32_t drmFormatModifierCount; - VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties; -} VkDrmFormatModifierPropertiesListEXT; - -typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT { - VkStructureType sType; - const void* pNext; - uint64_t drmFormatModifier; - VkSharingMode sharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; -} VkPhysicalDeviceImageDrmFormatModifierInfoEXT; - -typedef struct VkImageDrmFormatModifierListCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t drmFormatModifierCount; - const uint64_t* pDrmFormatModifiers; -} VkImageDrmFormatModifierListCreateInfoEXT; - -typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint64_t drmFormatModifier; - uint32_t drmFormatModifierPlaneCount; - const VkSubresourceLayout* pPlaneLayouts; -} VkImageDrmFormatModifierExplicitCreateInfoEXT; - -typedef struct VkImageDrmFormatModifierPropertiesEXT { - VkStructureType sType; - void* pNext; - uint64_t drmFormatModifier; -} VkImageDrmFormatModifierPropertiesEXT; - -typedef struct VkDrmFormatModifierProperties2EXT { - uint64_t drmFormatModifier; - uint32_t drmFormatModifierPlaneCount; - VkFormatFeatureFlags2 drmFormatModifierTilingFeatures; -} VkDrmFormatModifierProperties2EXT; - -typedef struct VkDrmFormatModifierPropertiesList2EXT { - VkStructureType sType; - void* pNext; - uint32_t drmFormatModifierCount; - VkDrmFormatModifierProperties2EXT* pDrmFormatModifierProperties; -} VkDrmFormatModifierPropertiesList2EXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT( - VkDevice device, - VkImage image, - VkImageDrmFormatModifierPropertiesEXT* pProperties); -#endif - - -#define VK_EXT_validation_cache 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) -#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1 -#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache" - -typedef enum VkValidationCacheHeaderVersionEXT { - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1, - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF -} VkValidationCacheHeaderVersionEXT; -typedef VkFlags VkValidationCacheCreateFlagsEXT; -typedef struct VkValidationCacheCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkValidationCacheCreateFlagsEXT flags; - size_t initialDataSize; - const void* pInitialData; -} VkValidationCacheCreateInfoEXT; - -typedef struct VkShaderModuleValidationCacheCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkValidationCacheEXT validationCache; -} VkShaderModuleValidationCacheCreateInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache); -typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches); -typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT( - VkDevice device, - const VkValidationCacheCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkValidationCacheEXT* pValidationCache); - -VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT( - VkDevice device, - VkValidationCacheEXT validationCache, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT( - VkDevice device, - VkValidationCacheEXT dstCache, - uint32_t srcCacheCount, - const VkValidationCacheEXT* pSrcCaches); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT( - VkDevice device, - VkValidationCacheEXT validationCache, - size_t* pDataSize, - void* pData); -#endif - - -#define VK_EXT_descriptor_indexing 1 -#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2 -#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing" -typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT; - -typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT; - -typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT; - -typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT; - -typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT; - -typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT; - -typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT; - - - -#define VK_EXT_shader_viewport_index_layer 1 -#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1 -#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer" - - -#define VK_NV_shading_rate_image 1 -#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3 -#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image" - -typedef enum VkShadingRatePaletteEntryNV { - VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0, - VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1, - VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2, - VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3, - VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11, - VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF -} VkShadingRatePaletteEntryNV; - -typedef enum VkCoarseSampleOrderTypeNV { - VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0, - VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1, - VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2, - VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3, - VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkCoarseSampleOrderTypeNV; -typedef struct VkShadingRatePaletteNV { - uint32_t shadingRatePaletteEntryCount; - const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries; -} VkShadingRatePaletteNV; - -typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkBool32 shadingRateImageEnable; - uint32_t viewportCount; - const VkShadingRatePaletteNV* pShadingRatePalettes; -} VkPipelineViewportShadingRateImageStateCreateInfoNV; - -typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 shadingRateImage; - VkBool32 shadingRateCoarseSampleOrder; -} VkPhysicalDeviceShadingRateImageFeaturesNV; - -typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV { - VkStructureType sType; - void* pNext; - VkExtent2D shadingRateTexelSize; - uint32_t shadingRatePaletteSize; - uint32_t shadingRateMaxCoarseSamples; -} VkPhysicalDeviceShadingRateImagePropertiesNV; - -typedef struct VkCoarseSampleLocationNV { - uint32_t pixelX; - uint32_t pixelY; - uint32_t sample; -} VkCoarseSampleLocationNV; - -typedef struct VkCoarseSampleOrderCustomNV { - VkShadingRatePaletteEntryNV shadingRate; - uint32_t sampleCount; - uint32_t sampleLocationCount; - const VkCoarseSampleLocationNV* pSampleLocations; -} VkCoarseSampleOrderCustomNV; - -typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkCoarseSampleOrderTypeNV sampleOrderType; - uint32_t customSampleOrderCount; - const VkCoarseSampleOrderCustomNV* pCustomSampleOrders; -} VkPipelineViewportCoarseSampleOrderStateCreateInfoNV; - -typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); -typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes); -typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV( - VkCommandBuffer commandBuffer, - VkImageView imageView, - VkImageLayout imageLayout); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV( - VkCommandBuffer commandBuffer, - uint32_t firstViewport, - uint32_t viewportCount, - const VkShadingRatePaletteNV* pShadingRatePalettes); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV( - VkCommandBuffer commandBuffer, - VkCoarseSampleOrderTypeNV sampleOrderType, - uint32_t customSampleOrderCount, - const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); -#endif - - -#define VK_NV_ray_tracing 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV) -#define VK_NV_RAY_TRACING_SPEC_VERSION 3 -#define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing" -#define VK_SHADER_UNUSED_KHR (~0U) -#define VK_SHADER_UNUSED_NV VK_SHADER_UNUSED_KHR - -typedef enum VkRayTracingShaderGroupTypeKHR { - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0, - VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1, - VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2, - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR, - VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR, - VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, - VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkRayTracingShaderGroupTypeKHR; -typedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV; - - -typedef enum VkGeometryTypeKHR { - VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0, - VK_GEOMETRY_TYPE_AABBS_KHR = 1, - VK_GEOMETRY_TYPE_INSTANCES_KHR = 2, - VK_GEOMETRY_TYPE_TRIANGLES_NV = VK_GEOMETRY_TYPE_TRIANGLES_KHR, - VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR, - VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkGeometryTypeKHR; -typedef VkGeometryTypeKHR VkGeometryTypeNV; - - -typedef enum VkAccelerationStructureTypeKHR { - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0, - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1, - VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2, - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, - VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkAccelerationStructureTypeKHR; -typedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV; - - -typedef enum VkCopyAccelerationStructureModeKHR { - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0, - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1, - VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2, - VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3, - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR, - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, - VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkCopyAccelerationStructureModeKHR; -typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV; - - -typedef enum VkAccelerationStructureMemoryRequirementsTypeNV { - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkAccelerationStructureMemoryRequirementsTypeNV; - -typedef enum VkGeometryFlagBitsKHR { - VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001, - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002, - VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR, - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR, - VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkGeometryFlagBitsKHR; -typedef VkFlags VkGeometryFlagsKHR; -typedef VkGeometryFlagsKHR VkGeometryFlagsNV; - -typedef VkGeometryFlagBitsKHR VkGeometryFlagBitsNV; - - -typedef enum VkGeometryInstanceFlagBitsKHR { - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001, - VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0x00000002, - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004, - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008, - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR, - VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR, - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR, - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR, - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR, - VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkGeometryInstanceFlagBitsKHR; -typedef VkFlags VkGeometryInstanceFlagsKHR; -typedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV; - -typedef VkGeometryInstanceFlagBitsKHR VkGeometryInstanceFlagBitsNV; - - -typedef enum VkBuildAccelerationStructureFlagBitsKHR { - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008, - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010, - VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0x00000020, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR, - VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkBuildAccelerationStructureFlagBitsKHR; -typedef VkFlags VkBuildAccelerationStructureFlagsKHR; -typedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV; - -typedef VkBuildAccelerationStructureFlagBitsKHR VkBuildAccelerationStructureFlagBitsNV; - -typedef struct VkRayTracingShaderGroupCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkRayTracingShaderGroupTypeKHR type; - uint32_t generalShader; - uint32_t closestHitShader; - uint32_t anyHitShader; - uint32_t intersectionShader; -} VkRayTracingShaderGroupCreateInfoNV; - -typedef struct VkRayTracingPipelineCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineCreateFlags flags; - uint32_t stageCount; - const VkPipelineShaderStageCreateInfo* pStages; - uint32_t groupCount; - const VkRayTracingShaderGroupCreateInfoNV* pGroups; - uint32_t maxRecursionDepth; - VkPipelineLayout layout; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkRayTracingPipelineCreateInfoNV; - -typedef struct VkGeometryTrianglesNV { - VkStructureType sType; - const void* pNext; - VkBuffer vertexData; - VkDeviceSize vertexOffset; - uint32_t vertexCount; - VkDeviceSize vertexStride; - VkFormat vertexFormat; - VkBuffer indexData; - VkDeviceSize indexOffset; - uint32_t indexCount; - VkIndexType indexType; - VkBuffer transformData; - VkDeviceSize transformOffset; -} VkGeometryTrianglesNV; - -typedef struct VkGeometryAABBNV { - VkStructureType sType; - const void* pNext; - VkBuffer aabbData; - uint32_t numAABBs; - uint32_t stride; - VkDeviceSize offset; -} VkGeometryAABBNV; - -typedef struct VkGeometryDataNV { - VkGeometryTrianglesNV triangles; - VkGeometryAABBNV aabbs; -} VkGeometryDataNV; - -typedef struct VkGeometryNV { - VkStructureType sType; - const void* pNext; - VkGeometryTypeKHR geometryType; - VkGeometryDataNV geometry; - VkGeometryFlagsKHR flags; -} VkGeometryNV; - -typedef struct VkAccelerationStructureInfoNV { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureTypeNV type; - VkBuildAccelerationStructureFlagsNV flags; - uint32_t instanceCount; - uint32_t geometryCount; - const VkGeometryNV* pGeometries; -} VkAccelerationStructureInfoNV; - -typedef struct VkAccelerationStructureCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkDeviceSize compactedSize; - VkAccelerationStructureInfoNV info; -} VkAccelerationStructureCreateInfoNV; - -typedef struct VkBindAccelerationStructureMemoryInfoNV { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureNV accelerationStructure; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; - uint32_t deviceIndexCount; - const uint32_t* pDeviceIndices; -} VkBindAccelerationStructureMemoryInfoNV; - -typedef struct VkWriteDescriptorSetAccelerationStructureNV { - VkStructureType sType; - const void* pNext; - uint32_t accelerationStructureCount; - const VkAccelerationStructureNV* pAccelerationStructures; -} VkWriteDescriptorSetAccelerationStructureNV; - -typedef struct VkAccelerationStructureMemoryRequirementsInfoNV { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureMemoryRequirementsTypeNV type; - VkAccelerationStructureNV accelerationStructure; -} VkAccelerationStructureMemoryRequirementsInfoNV; - -typedef struct VkPhysicalDeviceRayTracingPropertiesNV { - VkStructureType sType; - void* pNext; - uint32_t shaderGroupHandleSize; - uint32_t maxRecursionDepth; - uint32_t maxShaderGroupStride; - uint32_t shaderGroupBaseAlignment; - uint64_t maxGeometryCount; - uint64_t maxInstanceCount; - uint64_t maxTriangleCount; - uint32_t maxDescriptorSetAccelerationStructures; -} VkPhysicalDeviceRayTracingPropertiesNV; - -typedef struct VkTransformMatrixKHR { - float matrix[3][4]; -} VkTransformMatrixKHR; - -typedef VkTransformMatrixKHR VkTransformMatrixNV; - -typedef struct VkAabbPositionsKHR { - float minX; - float minY; - float minZ; - float maxX; - float maxY; - float maxZ; -} VkAabbPositionsKHR; - -typedef VkAabbPositionsKHR VkAabbPositionsNV; - -typedef struct VkAccelerationStructureInstanceKHR { - VkTransformMatrixKHR transform; - uint32_t instanceCustomIndex:24; - uint32_t mask:8; - uint32_t instanceShaderBindingTableRecordOffset:24; - VkGeometryInstanceFlagsKHR flags:8; - uint64_t accelerationStructureReference; -} VkAccelerationStructureInstanceKHR; - -typedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure); -typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); -typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); -typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset); -typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode); -typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth); -typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); -typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); -typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); -typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData); -typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); -typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV( - VkDevice device, - const VkAccelerationStructureCreateInfoNV* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkAccelerationStructureNV* pAccelerationStructure); - -VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV( - VkDevice device, - VkAccelerationStructureNV accelerationStructure, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV( - VkDevice device, - const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, - VkMemoryRequirements2KHR* pMemoryRequirements); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV( - VkDevice device, - uint32_t bindInfoCount, - const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); - -VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV( - VkCommandBuffer commandBuffer, - const VkAccelerationStructureInfoNV* pInfo, - VkBuffer instanceData, - VkDeviceSize instanceOffset, - VkBool32 update, - VkAccelerationStructureNV dst, - VkAccelerationStructureNV src, - VkBuffer scratch, - VkDeviceSize scratchOffset); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV( - VkCommandBuffer commandBuffer, - VkAccelerationStructureNV dst, - VkAccelerationStructureNV src, - VkCopyAccelerationStructureModeKHR mode); - -VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNV( - VkCommandBuffer commandBuffer, - VkBuffer raygenShaderBindingTableBuffer, - VkDeviceSize raygenShaderBindingOffset, - VkBuffer missShaderBindingTableBuffer, - VkDeviceSize missShaderBindingOffset, - VkDeviceSize missShaderBindingStride, - VkBuffer hitShaderBindingTableBuffer, - VkDeviceSize hitShaderBindingOffset, - VkDeviceSize hitShaderBindingStride, - VkBuffer callableShaderBindingTableBuffer, - VkDeviceSize callableShaderBindingOffset, - VkDeviceSize callableShaderBindingStride, - uint32_t width, - uint32_t height, - uint32_t depth); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV( - VkDevice device, - VkPipelineCache pipelineCache, - uint32_t createInfoCount, - const VkRayTracingPipelineCreateInfoNV* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkPipeline* pPipelines); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR( - VkDevice device, - VkPipeline pipeline, - uint32_t firstGroup, - uint32_t groupCount, - size_t dataSize, - void* pData); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV( - VkDevice device, - VkPipeline pipeline, - uint32_t firstGroup, - uint32_t groupCount, - size_t dataSize, - void* pData); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV( - VkDevice device, - VkAccelerationStructureNV accelerationStructure, - size_t dataSize, - void* pData); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV( - VkCommandBuffer commandBuffer, - uint32_t accelerationStructureCount, - const VkAccelerationStructureNV* pAccelerationStructures, - VkQueryType queryType, - VkQueryPool queryPool, - uint32_t firstQuery); - -VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV( - VkDevice device, - VkPipeline pipeline, - uint32_t shader); -#endif - - -#define VK_NV_representative_fragment_test 1 -#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2 -#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test" -typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 representativeFragmentTest; -} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV; - -typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkBool32 representativeFragmentTestEnable; -} VkPipelineRepresentativeFragmentTestStateCreateInfoNV; - - - -#define VK_EXT_filter_cubic 1 -#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 3 -#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic" -typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT { - VkStructureType sType; - void* pNext; - VkImageViewType imageViewType; -} VkPhysicalDeviceImageViewImageFormatInfoEXT; - -typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT { - VkStructureType sType; - void* pNext; - VkBool32 filterCubic; - VkBool32 filterCubicMinmax; -} VkFilterCubicImageViewImageFormatPropertiesEXT; - - - -#define VK_QCOM_render_pass_shader_resolve 1 -#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4 -#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME "VK_QCOM_render_pass_shader_resolve" - - -#define VK_EXT_global_priority 1 -#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2 -#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority" -typedef VkQueueGlobalPriorityKHR VkQueueGlobalPriorityEXT; - -typedef VkDeviceQueueGlobalPriorityCreateInfoKHR VkDeviceQueueGlobalPriorityCreateInfoEXT; - - - -#define VK_EXT_external_memory_host 1 -#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1 -#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host" -typedef struct VkImportMemoryHostPointerInfoEXT { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagBits handleType; - void* pHostPointer; -} VkImportMemoryHostPointerInfoEXT; - -typedef struct VkMemoryHostPointerPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t memoryTypeBits; -} VkMemoryHostPointerPropertiesEXT; - -typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT { - VkStructureType sType; - void* pNext; - VkDeviceSize minImportedHostPointerAlignment; -} VkPhysicalDeviceExternalMemoryHostPropertiesEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT( - VkDevice device, - VkExternalMemoryHandleTypeFlagBits handleType, - const void* pHostPointer, - VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); -#endif - - -#define VK_AMD_buffer_marker 1 -#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1 -#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker" -typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD( - VkCommandBuffer commandBuffer, - VkPipelineStageFlagBits pipelineStage, - VkBuffer dstBuffer, - VkDeviceSize dstOffset, - uint32_t marker); -#endif - - -#define VK_AMD_pipeline_compiler_control 1 -#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1 -#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control" - -typedef enum VkPipelineCompilerControlFlagBitsAMD { - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF -} VkPipelineCompilerControlFlagBitsAMD; -typedef VkFlags VkPipelineCompilerControlFlagsAMD; -typedef struct VkPipelineCompilerControlCreateInfoAMD { - VkStructureType sType; - const void* pNext; - VkPipelineCompilerControlFlagsAMD compilerControlFlags; -} VkPipelineCompilerControlCreateInfoAMD; - - - -#define VK_EXT_calibrated_timestamps 1 -#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2 -#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps" - -typedef enum VkTimeDomainEXT { - VK_TIME_DOMAIN_DEVICE_EXT = 0, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2, - VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3, - VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF -} VkTimeDomainEXT; -typedef struct VkCalibratedTimestampInfoEXT { - VkStructureType sType; - const void* pNext; - VkTimeDomainEXT timeDomain; -} VkCalibratedTimestampInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains); -typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( - VkPhysicalDevice physicalDevice, - uint32_t* pTimeDomainCount, - VkTimeDomainEXT* pTimeDomains); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT( - VkDevice device, - uint32_t timestampCount, - const VkCalibratedTimestampInfoEXT* pTimestampInfos, - uint64_t* pTimestamps, - uint64_t* pMaxDeviation); -#endif - - -#define VK_AMD_shader_core_properties 1 -#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2 -#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties" -typedef struct VkPhysicalDeviceShaderCorePropertiesAMD { - VkStructureType sType; - void* pNext; - uint32_t shaderEngineCount; - uint32_t shaderArraysPerEngineCount; - uint32_t computeUnitsPerShaderArray; - uint32_t simdPerComputeUnit; - uint32_t wavefrontsPerSimd; - uint32_t wavefrontSize; - uint32_t sgprsPerSimd; - uint32_t minSgprAllocation; - uint32_t maxSgprAllocation; - uint32_t sgprAllocationGranularity; - uint32_t vgprsPerSimd; - uint32_t minVgprAllocation; - uint32_t maxVgprAllocation; - uint32_t vgprAllocationGranularity; -} VkPhysicalDeviceShaderCorePropertiesAMD; - - - -#define VK_AMD_memory_overallocation_behavior 1 -#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1 -#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior" - -typedef enum VkMemoryOverallocationBehaviorAMD { - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF -} VkMemoryOverallocationBehaviorAMD; -typedef struct VkDeviceMemoryOverallocationCreateInfoAMD { - VkStructureType sType; - const void* pNext; - VkMemoryOverallocationBehaviorAMD overallocationBehavior; -} VkDeviceMemoryOverallocationCreateInfoAMD; - - - -#define VK_EXT_vertex_attribute_divisor 1 -#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3 -#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor" -typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t maxVertexAttribDivisor; -} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT; - -typedef struct VkVertexInputBindingDivisorDescriptionEXT { - uint32_t binding; - uint32_t divisor; -} VkVertexInputBindingDivisorDescriptionEXT; - -typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t vertexBindingDivisorCount; - const VkVertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors; -} VkPipelineVertexInputDivisorStateCreateInfoEXT; - -typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 vertexAttributeInstanceRateDivisor; - VkBool32 vertexAttributeInstanceRateZeroDivisor; -} VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT; - - - -#define VK_EXT_pipeline_creation_feedback 1 -#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1 -#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback" -typedef VkPipelineCreationFeedbackFlagBits VkPipelineCreationFeedbackFlagBitsEXT; - -typedef VkPipelineCreationFeedbackFlags VkPipelineCreationFeedbackFlagsEXT; - -typedef VkPipelineCreationFeedbackCreateInfo VkPipelineCreationFeedbackCreateInfoEXT; - -typedef VkPipelineCreationFeedback VkPipelineCreationFeedbackEXT; - - - -#define VK_NV_shader_subgroup_partitioned 1 -#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1 -#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned" - - -#define VK_NV_compute_shader_derivatives 1 -#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1 -#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives" -typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 computeDerivativeGroupQuads; - VkBool32 computeDerivativeGroupLinear; -} VkPhysicalDeviceComputeShaderDerivativesFeaturesNV; - - - -#define VK_NV_mesh_shader 1 -#define VK_NV_MESH_SHADER_SPEC_VERSION 1 -#define VK_NV_MESH_SHADER_EXTENSION_NAME "VK_NV_mesh_shader" -typedef struct VkPhysicalDeviceMeshShaderFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 taskShader; - VkBool32 meshShader; -} VkPhysicalDeviceMeshShaderFeaturesNV; - -typedef struct VkPhysicalDeviceMeshShaderPropertiesNV { - VkStructureType sType; - void* pNext; - uint32_t maxDrawMeshTasksCount; - uint32_t maxTaskWorkGroupInvocations; - uint32_t maxTaskWorkGroupSize[3]; - uint32_t maxTaskTotalMemorySize; - uint32_t maxTaskOutputCount; - uint32_t maxMeshWorkGroupInvocations; - uint32_t maxMeshWorkGroupSize[3]; - uint32_t maxMeshTotalMemorySize; - uint32_t maxMeshOutputVertices; - uint32_t maxMeshOutputPrimitives; - uint32_t maxMeshMultiviewViewCount; - uint32_t meshOutputPerVertexGranularity; - uint32_t meshOutputPerPrimitiveGranularity; -} VkPhysicalDeviceMeshShaderPropertiesNV; - -typedef struct VkDrawMeshTasksIndirectCommandNV { - uint32_t taskCount; - uint32_t firstTask; -} VkDrawMeshTasksIndirectCommandNV; - -typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask); -typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV( - VkCommandBuffer commandBuffer, - uint32_t taskCount, - uint32_t firstTask); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - uint32_t drawCount, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); -#endif - - -#define VK_NV_fragment_shader_barycentric 1 -#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 -#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric" -typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; - - - -#define VK_NV_shader_image_footprint 1 -#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2 -#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint" -typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 imageFootprint; -} VkPhysicalDeviceShaderImageFootprintFeaturesNV; - - - -#define VK_NV_scissor_exclusive 1 -#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1 -#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive" -typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - uint32_t exclusiveScissorCount; - const VkRect2D* pExclusiveScissors; -} VkPipelineViewportExclusiveScissorStateCreateInfoNV; - -typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 exclusiveScissor; -} VkPhysicalDeviceExclusiveScissorFeaturesNV; - -typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( - VkCommandBuffer commandBuffer, - uint32_t firstExclusiveScissor, - uint32_t exclusiveScissorCount, - const VkRect2D* pExclusiveScissors); -#endif - - -#define VK_NV_device_diagnostic_checkpoints 1 -#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2 -#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints" -typedef struct VkQueueFamilyCheckpointPropertiesNV { - VkStructureType sType; - void* pNext; - VkPipelineStageFlags checkpointExecutionStageMask; -} VkQueueFamilyCheckpointPropertiesNV; - -typedef struct VkCheckpointDataNV { - VkStructureType sType; - void* pNext; - VkPipelineStageFlagBits stage; - void* pCheckpointMarker; -} VkCheckpointDataNV; - -typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker); -typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV( - VkCommandBuffer commandBuffer, - const void* pCheckpointMarker); - -VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV( - VkQueue queue, - uint32_t* pCheckpointDataCount, - VkCheckpointDataNV* pCheckpointData); -#endif - - -#define VK_INTEL_shader_integer_functions2 1 -#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1 -#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2" -typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL { - VkStructureType sType; - void* pNext; - VkBool32 shaderIntegerFunctions2; -} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; - - - -#define VK_INTEL_performance_query 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL) -#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2 -#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME "VK_INTEL_performance_query" - -typedef enum VkPerformanceConfigurationTypeINTEL { - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkPerformanceConfigurationTypeINTEL; - -typedef enum VkQueryPoolSamplingModeINTEL { - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkQueryPoolSamplingModeINTEL; - -typedef enum VkPerformanceOverrideTypeINTEL { - VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0, - VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1, - VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkPerformanceOverrideTypeINTEL; - -typedef enum VkPerformanceParameterTypeINTEL { - VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0, - VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1, - VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkPerformanceParameterTypeINTEL; - -typedef enum VkPerformanceValueTypeINTEL { - VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0, - VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1, - VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2, - VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3, - VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4, - VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkPerformanceValueTypeINTEL; -typedef union VkPerformanceValueDataINTEL { - uint32_t value32; - uint64_t value64; - float valueFloat; - VkBool32 valueBool; - const char* valueString; -} VkPerformanceValueDataINTEL; - -typedef struct VkPerformanceValueINTEL { - VkPerformanceValueTypeINTEL type; - VkPerformanceValueDataINTEL data; -} VkPerformanceValueINTEL; - -typedef struct VkInitializePerformanceApiInfoINTEL { - VkStructureType sType; - const void* pNext; - void* pUserData; -} VkInitializePerformanceApiInfoINTEL; - -typedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL { - VkStructureType sType; - const void* pNext; - VkQueryPoolSamplingModeINTEL performanceCountersSampling; -} VkQueryPoolPerformanceQueryCreateInfoINTEL; - -typedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL; - -typedef struct VkPerformanceMarkerInfoINTEL { - VkStructureType sType; - const void* pNext; - uint64_t marker; -} VkPerformanceMarkerInfoINTEL; - -typedef struct VkPerformanceStreamMarkerInfoINTEL { - VkStructureType sType; - const void* pNext; - uint32_t marker; -} VkPerformanceStreamMarkerInfoINTEL; - -typedef struct VkPerformanceOverrideInfoINTEL { - VkStructureType sType; - const void* pNext; - VkPerformanceOverrideTypeINTEL type; - VkBool32 enable; - uint64_t parameter; -} VkPerformanceOverrideInfoINTEL; - -typedef struct VkPerformanceConfigurationAcquireInfoINTEL { - VkStructureType sType; - const void* pNext; - VkPerformanceConfigurationTypeINTEL type; -} VkPerformanceConfigurationAcquireInfoINTEL; - -typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); -typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device); -typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo); -typedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration); -typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration); -typedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration); -typedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL( - VkDevice device, - const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); - -VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL( - VkDevice device); - -VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL( - VkCommandBuffer commandBuffer, - const VkPerformanceMarkerInfoINTEL* pMarkerInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL( - VkCommandBuffer commandBuffer, - const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL( - VkCommandBuffer commandBuffer, - const VkPerformanceOverrideInfoINTEL* pOverrideInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL( - VkDevice device, - const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, - VkPerformanceConfigurationINTEL* pConfiguration); - -VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL( - VkDevice device, - VkPerformanceConfigurationINTEL configuration); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL( - VkQueue queue, - VkPerformanceConfigurationINTEL configuration); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL( - VkDevice device, - VkPerformanceParameterTypeINTEL parameter, - VkPerformanceValueINTEL* pValue); -#endif - - -#define VK_EXT_pci_bus_info 1 -#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2 -#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info" -typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t pciDomain; - uint32_t pciBus; - uint32_t pciDevice; - uint32_t pciFunction; -} VkPhysicalDevicePCIBusInfoPropertiesEXT; - - - -#define VK_AMD_display_native_hdr 1 -#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1 -#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME "VK_AMD_display_native_hdr" -typedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD { - VkStructureType sType; - void* pNext; - VkBool32 localDimmingSupport; -} VkDisplayNativeHdrSurfaceCapabilitiesAMD; - -typedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD { - VkStructureType sType; - const void* pNext; - VkBool32 localDimmingEnable; -} VkSwapchainDisplayNativeHdrCreateInfoAMD; - -typedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD( - VkDevice device, - VkSwapchainKHR swapChain, - VkBool32 localDimmingEnable); -#endif - - -#define VK_EXT_fragment_density_map 1 -#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 2 -#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map" -typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 fragmentDensityMap; - VkBool32 fragmentDensityMapDynamic; - VkBool32 fragmentDensityMapNonSubsampledImages; -} VkPhysicalDeviceFragmentDensityMapFeaturesEXT; - -typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT { - VkStructureType sType; - void* pNext; - VkExtent2D minFragmentDensityTexelSize; - VkExtent2D maxFragmentDensityTexelSize; - VkBool32 fragmentDensityInvocations; -} VkPhysicalDeviceFragmentDensityMapPropertiesEXT; - -typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkAttachmentReference fragmentDensityMapAttachment; -} VkRenderPassFragmentDensityMapCreateInfoEXT; - - - -#define VK_EXT_scalar_block_layout 1 -#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1 -#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout" -typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT; - - - -#define VK_GOOGLE_hlsl_functionality1 1 -#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION 1 -#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1" -#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION -#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME - - -#define VK_GOOGLE_decorate_string 1 -#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1 -#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string" - - -#define VK_EXT_subgroup_size_control 1 -#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2 -#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control" -typedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT; - -typedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT; - -typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; - - - -#define VK_AMD_shader_core_properties2 1 -#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1 -#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2" - -typedef enum VkShaderCorePropertiesFlagBitsAMD { - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF -} VkShaderCorePropertiesFlagBitsAMD; -typedef VkFlags VkShaderCorePropertiesFlagsAMD; -typedef struct VkPhysicalDeviceShaderCoreProperties2AMD { - VkStructureType sType; - void* pNext; - VkShaderCorePropertiesFlagsAMD shaderCoreFeatures; - uint32_t activeComputeUnitCount; -} VkPhysicalDeviceShaderCoreProperties2AMD; - - - -#define VK_AMD_device_coherent_memory 1 -#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1 -#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory" -typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD { - VkStructureType sType; - void* pNext; - VkBool32 deviceCoherentMemory; -} VkPhysicalDeviceCoherentMemoryFeaturesAMD; - - - -#define VK_EXT_shader_image_atomic_int64 1 -#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1 -#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64" -typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 shaderImageInt64Atomics; - VkBool32 sparseImageInt64Atomics; -} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT; - - - -#define VK_EXT_memory_budget 1 -#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1 -#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget" -typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT { - VkStructureType sType; - void* pNext; - VkDeviceSize heapBudget[VK_MAX_MEMORY_HEAPS]; - VkDeviceSize heapUsage[VK_MAX_MEMORY_HEAPS]; -} VkPhysicalDeviceMemoryBudgetPropertiesEXT; - - - -#define VK_EXT_memory_priority 1 -#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1 -#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority" -typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 memoryPriority; -} VkPhysicalDeviceMemoryPriorityFeaturesEXT; - -typedef struct VkMemoryPriorityAllocateInfoEXT { - VkStructureType sType; - const void* pNext; - float priority; -} VkMemoryPriorityAllocateInfoEXT; - - - -#define VK_NV_dedicated_allocation_image_aliasing 1 -#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1 -#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing" -typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 dedicatedAllocationImageAliasing; -} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; - - - -#define VK_EXT_buffer_device_address 1 -#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2 -#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address" -typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 bufferDeviceAddress; - VkBool32 bufferDeviceAddressCaptureReplay; - VkBool32 bufferDeviceAddressMultiDevice; -} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; - -typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT; - -typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT; - -typedef struct VkBufferDeviceAddressCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkDeviceAddress deviceAddress; -} VkBufferDeviceAddressCreateInfoEXT; - -typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT( - VkDevice device, - const VkBufferDeviceAddressInfo* pInfo); -#endif - - -#define VK_EXT_tooling_info 1 -#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1 -#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info" -typedef VkToolPurposeFlagBits VkToolPurposeFlagBitsEXT; - -typedef VkToolPurposeFlags VkToolPurposeFlagsEXT; - -typedef VkPhysicalDeviceToolProperties VkPhysicalDeviceToolPropertiesEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT( - VkPhysicalDevice physicalDevice, - uint32_t* pToolCount, - VkPhysicalDeviceToolProperties* pToolProperties); -#endif - - -#define VK_EXT_separate_stencil_usage 1 -#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1 -#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage" -typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT; - - - -#define VK_EXT_validation_features 1 -#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5 -#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features" - -typedef enum VkValidationFeatureEnableEXT { - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0, - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1, - VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2, - VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3, - VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4, - VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkValidationFeatureEnableEXT; - -typedef enum VkValidationFeatureDisableEXT { - VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0, - VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1, - VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2, - VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3, - VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4, - VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5, - VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6, - VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = 7, - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkValidationFeatureDisableEXT; -typedef struct VkValidationFeaturesEXT { - VkStructureType sType; - const void* pNext; - uint32_t enabledValidationFeatureCount; - const VkValidationFeatureEnableEXT* pEnabledValidationFeatures; - uint32_t disabledValidationFeatureCount; - const VkValidationFeatureDisableEXT* pDisabledValidationFeatures; -} VkValidationFeaturesEXT; - - - -#define VK_NV_cooperative_matrix 1 -#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1 -#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix" - -typedef enum VkComponentTypeNV { - VK_COMPONENT_TYPE_FLOAT16_NV = 0, - VK_COMPONENT_TYPE_FLOAT32_NV = 1, - VK_COMPONENT_TYPE_FLOAT64_NV = 2, - VK_COMPONENT_TYPE_SINT8_NV = 3, - VK_COMPONENT_TYPE_SINT16_NV = 4, - VK_COMPONENT_TYPE_SINT32_NV = 5, - VK_COMPONENT_TYPE_SINT64_NV = 6, - VK_COMPONENT_TYPE_UINT8_NV = 7, - VK_COMPONENT_TYPE_UINT16_NV = 8, - VK_COMPONENT_TYPE_UINT32_NV = 9, - VK_COMPONENT_TYPE_UINT64_NV = 10, - VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkComponentTypeNV; - -typedef enum VkScopeNV { - VK_SCOPE_DEVICE_NV = 1, - VK_SCOPE_WORKGROUP_NV = 2, - VK_SCOPE_SUBGROUP_NV = 3, - VK_SCOPE_QUEUE_FAMILY_NV = 5, - VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkScopeNV; -typedef struct VkCooperativeMatrixPropertiesNV { - VkStructureType sType; - void* pNext; - uint32_t MSize; - uint32_t NSize; - uint32_t KSize; - VkComponentTypeNV AType; - VkComponentTypeNV BType; - VkComponentTypeNV CType; - VkComponentTypeNV DType; - VkScopeNV scope; -} VkCooperativeMatrixPropertiesNV; - -typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 cooperativeMatrix; - VkBool32 cooperativeMatrixRobustBufferAccess; -} VkPhysicalDeviceCooperativeMatrixFeaturesNV; - -typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV { - VkStructureType sType; - void* pNext; - VkShaderStageFlags cooperativeMatrixSupportedStages; -} VkPhysicalDeviceCooperativeMatrixPropertiesNV; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkCooperativeMatrixPropertiesNV* pProperties); -#endif - - -#define VK_NV_coverage_reduction_mode 1 -#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1 -#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode" - -typedef enum VkCoverageReductionModeNV { - VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0, - VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1, - VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF -} VkCoverageReductionModeNV; -typedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV; -typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 coverageReductionMode; -} VkPhysicalDeviceCoverageReductionModeFeaturesNV; - -typedef struct VkPipelineCoverageReductionStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineCoverageReductionStateCreateFlagsNV flags; - VkCoverageReductionModeNV coverageReductionMode; -} VkPipelineCoverageReductionStateCreateInfoNV; - -typedef struct VkFramebufferMixedSamplesCombinationNV { - VkStructureType sType; - void* pNext; - VkCoverageReductionModeNV coverageReductionMode; - VkSampleCountFlagBits rasterizationSamples; - VkSampleCountFlags depthStencilSamples; - VkSampleCountFlags colorSamples; -} VkFramebufferMixedSamplesCombinationNV; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( - VkPhysicalDevice physicalDevice, - uint32_t* pCombinationCount, - VkFramebufferMixedSamplesCombinationNV* pCombinations); -#endif - - -#define VK_EXT_fragment_shader_interlock 1 -#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1 -#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock" -typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 fragmentShaderSampleInterlock; - VkBool32 fragmentShaderPixelInterlock; - VkBool32 fragmentShaderShadingRateInterlock; -} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT; - - - -#define VK_EXT_ycbcr_image_arrays 1 -#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1 -#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays" -typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 ycbcrImageArrays; -} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT; - - - -#define VK_EXT_provoking_vertex 1 -#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1 -#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex" - -typedef enum VkProvokingVertexModeEXT { - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0, - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1, - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkProvokingVertexModeEXT; -typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 provokingVertexLast; - VkBool32 transformFeedbackPreservesProvokingVertex; -} VkPhysicalDeviceProvokingVertexFeaturesEXT; - -typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT { - VkStructureType sType; - void* pNext; - VkBool32 provokingVertexModePerPipeline; - VkBool32 transformFeedbackPreservesTriangleFanProvokingVertex; -} VkPhysicalDeviceProvokingVertexPropertiesEXT; - -typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkProvokingVertexModeEXT provokingVertexMode; -} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT; - - - -#define VK_EXT_headless_surface 1 -#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1 -#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface" -typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT; -typedef struct VkHeadlessSurfaceCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkHeadlessSurfaceCreateFlagsEXT flags; -} VkHeadlessSurfaceCreateInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT( - VkInstance instance, - const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - - -#define VK_EXT_line_rasterization 1 -#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1 -#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization" - -typedef enum VkLineRasterizationModeEXT { - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1, - VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3, - VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkLineRasterizationModeEXT; -typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 rectangularLines; - VkBool32 bresenhamLines; - VkBool32 smoothLines; - VkBool32 stippledRectangularLines; - VkBool32 stippledBresenhamLines; - VkBool32 stippledSmoothLines; -} VkPhysicalDeviceLineRasterizationFeaturesEXT; - -typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t lineSubPixelPrecisionBits; -} VkPhysicalDeviceLineRasterizationPropertiesEXT; - -typedef struct VkPipelineRasterizationLineStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkLineRasterizationModeEXT lineRasterizationMode; - VkBool32 stippledLineEnable; - uint32_t lineStippleFactor; - uint16_t lineStipplePattern; -} VkPipelineRasterizationLineStateCreateInfoEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT( - VkCommandBuffer commandBuffer, - uint32_t lineStippleFactor, - uint16_t lineStipplePattern); -#endif - - -#define VK_EXT_shader_atomic_float 1 -#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1 -#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float" -typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 shaderBufferFloat32Atomics; - VkBool32 shaderBufferFloat32AtomicAdd; - VkBool32 shaderBufferFloat64Atomics; - VkBool32 shaderBufferFloat64AtomicAdd; - VkBool32 shaderSharedFloat32Atomics; - VkBool32 shaderSharedFloat32AtomicAdd; - VkBool32 shaderSharedFloat64Atomics; - VkBool32 shaderSharedFloat64AtomicAdd; - VkBool32 shaderImageFloat32Atomics; - VkBool32 shaderImageFloat32AtomicAdd; - VkBool32 sparseImageFloat32Atomics; - VkBool32 sparseImageFloat32AtomicAdd; -} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT; - - - -#define VK_EXT_host_query_reset 1 -#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1 -#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset" -typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT; - -typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT( - VkDevice device, - VkQueryPool queryPool, - uint32_t firstQuery, - uint32_t queryCount); -#endif - - -#define VK_EXT_index_type_uint8 1 -#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1 -#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8" -typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 indexTypeUint8; -} VkPhysicalDeviceIndexTypeUint8FeaturesEXT; - - - -#define VK_EXT_extended_dynamic_state 1 -#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1 -#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state" -typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 extendedDynamicState; -} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); -typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); -typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); -typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); -typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); -typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT( - VkCommandBuffer commandBuffer, - VkCullModeFlags cullMode); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT( - VkCommandBuffer commandBuffer, - VkFrontFace frontFace); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT( - VkCommandBuffer commandBuffer, - VkPrimitiveTopology primitiveTopology); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT( - VkCommandBuffer commandBuffer, - uint32_t viewportCount, - const VkViewport* pViewports); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT( - VkCommandBuffer commandBuffer, - uint32_t scissorCount, - const VkRect2D* pScissors); - -VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT( - VkCommandBuffer commandBuffer, - uint32_t firstBinding, - uint32_t bindingCount, - const VkBuffer* pBuffers, - const VkDeviceSize* pOffsets, - const VkDeviceSize* pSizes, - const VkDeviceSize* pStrides); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 depthTestEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 depthWriteEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT( - VkCommandBuffer commandBuffer, - VkCompareOp depthCompareOp); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 depthBoundsTestEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 stencilTestEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT( - VkCommandBuffer commandBuffer, - VkStencilFaceFlags faceMask, - VkStencilOp failOp, - VkStencilOp passOp, - VkStencilOp depthFailOp, - VkCompareOp compareOp); -#endif - - -#define VK_EXT_shader_atomic_float2 1 -#define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1 -#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2" -typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 shaderBufferFloat16Atomics; - VkBool32 shaderBufferFloat16AtomicAdd; - VkBool32 shaderBufferFloat16AtomicMinMax; - VkBool32 shaderBufferFloat32AtomicMinMax; - VkBool32 shaderBufferFloat64AtomicMinMax; - VkBool32 shaderSharedFloat16Atomics; - VkBool32 shaderSharedFloat16AtomicAdd; - VkBool32 shaderSharedFloat16AtomicMinMax; - VkBool32 shaderSharedFloat32AtomicMinMax; - VkBool32 shaderSharedFloat64AtomicMinMax; - VkBool32 shaderImageFloat32AtomicMinMax; - VkBool32 sparseImageFloat32AtomicMinMax; -} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT; - - - -#define VK_EXT_shader_demote_to_helper_invocation 1 -#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1 -#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation" -typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; - - - -#define VK_NV_device_generated_commands 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV) -#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 -#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands" - -typedef enum VkIndirectCommandsTokenTypeNV { - VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkIndirectCommandsTokenTypeNV; - -typedef enum VkIndirectStateFlagBitsNV { - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001, - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkIndirectStateFlagBitsNV; -typedef VkFlags VkIndirectStateFlagsNV; - -typedef enum VkIndirectCommandsLayoutUsageFlagBitsNV { - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0x00000001, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0x00000002, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x00000004, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkIndirectCommandsLayoutUsageFlagBitsNV; -typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNV; -typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV { - VkStructureType sType; - void* pNext; - uint32_t maxGraphicsShaderGroupCount; - uint32_t maxIndirectSequenceCount; - uint32_t maxIndirectCommandsTokenCount; - uint32_t maxIndirectCommandsStreamCount; - uint32_t maxIndirectCommandsTokenOffset; - uint32_t maxIndirectCommandsStreamStride; - uint32_t minSequencesCountBufferOffsetAlignment; - uint32_t minSequencesIndexBufferOffsetAlignment; - uint32_t minIndirectCommandsBufferOffsetAlignment; -} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV; - -typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 deviceGeneratedCommands; -} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV; - -typedef struct VkGraphicsShaderGroupCreateInfoNV { - VkStructureType sType; - const void* pNext; - uint32_t stageCount; - const VkPipelineShaderStageCreateInfo* pStages; - const VkPipelineVertexInputStateCreateInfo* pVertexInputState; - const VkPipelineTessellationStateCreateInfo* pTessellationState; -} VkGraphicsShaderGroupCreateInfoNV; - -typedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV { - VkStructureType sType; - const void* pNext; - uint32_t groupCount; - const VkGraphicsShaderGroupCreateInfoNV* pGroups; - uint32_t pipelineCount; - const VkPipeline* pPipelines; -} VkGraphicsPipelineShaderGroupsCreateInfoNV; - -typedef struct VkBindShaderGroupIndirectCommandNV { - uint32_t groupIndex; -} VkBindShaderGroupIndirectCommandNV; - -typedef struct VkBindIndexBufferIndirectCommandNV { - VkDeviceAddress bufferAddress; - uint32_t size; - VkIndexType indexType; -} VkBindIndexBufferIndirectCommandNV; - -typedef struct VkBindVertexBufferIndirectCommandNV { - VkDeviceAddress bufferAddress; - uint32_t size; - uint32_t stride; -} VkBindVertexBufferIndirectCommandNV; - -typedef struct VkSetStateFlagsIndirectCommandNV { - uint32_t data; -} VkSetStateFlagsIndirectCommandNV; - -typedef struct VkIndirectCommandsStreamNV { - VkBuffer buffer; - VkDeviceSize offset; -} VkIndirectCommandsStreamNV; - -typedef struct VkIndirectCommandsLayoutTokenNV { - VkStructureType sType; - const void* pNext; - VkIndirectCommandsTokenTypeNV tokenType; - uint32_t stream; - uint32_t offset; - uint32_t vertexBindingUnit; - VkBool32 vertexDynamicStride; - VkPipelineLayout pushconstantPipelineLayout; - VkShaderStageFlags pushconstantShaderStageFlags; - uint32_t pushconstantOffset; - uint32_t pushconstantSize; - VkIndirectStateFlagsNV indirectStateFlags; - uint32_t indexTypeCount; - const VkIndexType* pIndexTypes; - const uint32_t* pIndexTypeValues; -} VkIndirectCommandsLayoutTokenNV; - -typedef struct VkIndirectCommandsLayoutCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkIndirectCommandsLayoutUsageFlagsNV flags; - VkPipelineBindPoint pipelineBindPoint; - uint32_t tokenCount; - const VkIndirectCommandsLayoutTokenNV* pTokens; - uint32_t streamCount; - const uint32_t* pStreamStrides; -} VkIndirectCommandsLayoutCreateInfoNV; - -typedef struct VkGeneratedCommandsInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineBindPoint pipelineBindPoint; - VkPipeline pipeline; - VkIndirectCommandsLayoutNV indirectCommandsLayout; - uint32_t streamCount; - const VkIndirectCommandsStreamNV* pStreams; - uint32_t sequencesCount; - VkBuffer preprocessBuffer; - VkDeviceSize preprocessOffset; - VkDeviceSize preprocessSize; - VkBuffer sequencesCountBuffer; - VkDeviceSize sequencesCountOffset; - VkBuffer sequencesIndexBuffer; - VkDeviceSize sequencesIndexOffset; -} VkGeneratedCommandsInfoNV; - -typedef struct VkGeneratedCommandsMemoryRequirementsInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineBindPoint pipelineBindPoint; - VkPipeline pipeline; - VkIndirectCommandsLayoutNV indirectCommandsLayout; - uint32_t maxSequencesCount; -} VkGeneratedCommandsMemoryRequirementsInfoNV; - -typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsNV)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsNV)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); -typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsNV)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); -typedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex); -typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNV)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); -typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNV)(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV( - VkDevice device, - const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV( - VkCommandBuffer commandBuffer, - const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV( - VkCommandBuffer commandBuffer, - VkBool32 isPreprocessed, - const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV( - VkCommandBuffer commandBuffer, - VkPipelineBindPoint pipelineBindPoint, - VkPipeline pipeline, - uint32_t groupIndex); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV( - VkDevice device, - const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); - -VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV( - VkDevice device, - VkIndirectCommandsLayoutNV indirectCommandsLayout, - const VkAllocationCallbacks* pAllocator); -#endif - - -#define VK_NV_inherited_viewport_scissor 1 -#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1 -#define VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME "VK_NV_inherited_viewport_scissor" -typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 inheritedViewportScissor2D; -} VkPhysicalDeviceInheritedViewportScissorFeaturesNV; - -typedef struct VkCommandBufferInheritanceViewportScissorInfoNV { - VkStructureType sType; - const void* pNext; - VkBool32 viewportScissor2D; - uint32_t viewportDepthCount; - const VkViewport* pViewportDepths; -} VkCommandBufferInheritanceViewportScissorInfoNV; - - - -#define VK_EXT_texel_buffer_alignment 1 -#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1 -#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment" -typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 texelBufferAlignment; -} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT; - -typedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT; - - - -#define VK_QCOM_render_pass_transform 1 -#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 2 -#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform" -typedef struct VkRenderPassTransformBeginInfoQCOM { - VkStructureType sType; - void* pNext; - VkSurfaceTransformFlagBitsKHR transform; -} VkRenderPassTransformBeginInfoQCOM; - -typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM { - VkStructureType sType; - void* pNext; - VkSurfaceTransformFlagBitsKHR transform; - VkRect2D renderArea; -} VkCommandBufferInheritanceRenderPassTransformInfoQCOM; - - - -#define VK_EXT_device_memory_report 1 -#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2 -#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report" - -typedef enum VkDeviceMemoryReportEventTypeEXT { - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDeviceMemoryReportEventTypeEXT; -typedef VkFlags VkDeviceMemoryReportFlagsEXT; -typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 deviceMemoryReport; -} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT; - -typedef struct VkDeviceMemoryReportCallbackDataEXT { - VkStructureType sType; - void* pNext; - VkDeviceMemoryReportFlagsEXT flags; - VkDeviceMemoryReportEventTypeEXT type; - uint64_t memoryObjectId; - VkDeviceSize size; - VkObjectType objectType; - uint64_t objectHandle; - uint32_t heapIndex; -} VkDeviceMemoryReportCallbackDataEXT; - -typedef void (VKAPI_PTR *PFN_vkDeviceMemoryReportCallbackEXT)( - const VkDeviceMemoryReportCallbackDataEXT* pCallbackData, - void* pUserData); - -typedef struct VkDeviceDeviceMemoryReportCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkDeviceMemoryReportFlagsEXT flags; - PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback; - void* pUserData; -} VkDeviceDeviceMemoryReportCreateInfoEXT; - - - -#define VK_EXT_acquire_drm_display 1 -#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1 -#define VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_drm_display" -typedef VkResult (VKAPI_PTR *PFN_vkAcquireDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display); -typedef VkResult (VKAPI_PTR *PFN_vkGetDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireDrmDisplayEXT( - VkPhysicalDevice physicalDevice, - int32_t drmFd, - VkDisplayKHR display); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDrmDisplayEXT( - VkPhysicalDevice physicalDevice, - int32_t drmFd, - uint32_t connectorId, - VkDisplayKHR* display); -#endif - - -#define VK_EXT_robustness2 1 -#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1 -#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2" -typedef struct VkPhysicalDeviceRobustness2FeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 robustBufferAccess2; - VkBool32 robustImageAccess2; - VkBool32 nullDescriptor; -} VkPhysicalDeviceRobustness2FeaturesEXT; - -typedef struct VkPhysicalDeviceRobustness2PropertiesEXT { - VkStructureType sType; - void* pNext; - VkDeviceSize robustStorageBufferAccessSizeAlignment; - VkDeviceSize robustUniformBufferAccessSizeAlignment; -} VkPhysicalDeviceRobustness2PropertiesEXT; - - - -#define VK_EXT_custom_border_color 1 -#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12 -#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color" -typedef struct VkSamplerCustomBorderColorCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkClearColorValue customBorderColor; - VkFormat format; -} VkSamplerCustomBorderColorCreateInfoEXT; - -typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t maxCustomBorderColorSamplers; -} VkPhysicalDeviceCustomBorderColorPropertiesEXT; - -typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 customBorderColors; - VkBool32 customBorderColorWithoutFormat; -} VkPhysicalDeviceCustomBorderColorFeaturesEXT; - - - -#define VK_GOOGLE_user_type 1 -#define VK_GOOGLE_USER_TYPE_SPEC_VERSION 1 -#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME "VK_GOOGLE_user_type" - - -#define VK_EXT_private_data 1 -typedef VkPrivateDataSlot VkPrivateDataSlotEXT; - -#define VK_EXT_PRIVATE_DATA_SPEC_VERSION 1 -#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data" -typedef VkPrivateDataSlotCreateFlags VkPrivateDataSlotCreateFlagsEXT; - -typedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT; - -typedef VkDevicePrivateDataCreateInfo VkDevicePrivateDataCreateInfoEXT; - -typedef VkPrivateDataSlotCreateInfo VkPrivateDataSlotCreateInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); -typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); -typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlotEXT( - VkDevice device, - const VkPrivateDataSlotCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkPrivateDataSlot* pPrivateDataSlot); - -VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlotEXT( - VkDevice device, - VkPrivateDataSlot privateDataSlot, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateDataEXT( - VkDevice device, - VkObjectType objectType, - uint64_t objectHandle, - VkPrivateDataSlot privateDataSlot, - uint64_t data); - -VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT( - VkDevice device, - VkObjectType objectType, - uint64_t objectHandle, - VkPrivateDataSlot privateDataSlot, - uint64_t* pData); -#endif - - -#define VK_EXT_pipeline_creation_cache_control 1 -#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3 -#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control" -typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT; - - - -#define VK_NV_device_diagnostics_config 1 -#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 2 -#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME "VK_NV_device_diagnostics_config" - -typedef enum VkDeviceDiagnosticsConfigFlagBitsNV { - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0x00000001, - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0x00000002, - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0x00000004, - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 0x00000008, - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkDeviceDiagnosticsConfigFlagBitsNV; -typedef VkFlags VkDeviceDiagnosticsConfigFlagsNV; -typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 diagnosticsConfig; -} VkPhysicalDeviceDiagnosticsConfigFeaturesNV; - -typedef struct VkDeviceDiagnosticsConfigCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkDeviceDiagnosticsConfigFlagsNV flags; -} VkDeviceDiagnosticsConfigCreateInfoNV; - - - -#define VK_QCOM_render_pass_store_ops 1 -#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2 -#define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME "VK_QCOM_render_pass_store_ops" - - -#define VK_EXT_graphics_pipeline_library 1 -#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION 1 -#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME "VK_EXT_graphics_pipeline_library" - -typedef enum VkGraphicsPipelineLibraryFlagBitsEXT { - VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 0x00000001, - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 0x00000002, - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 0x00000004, - VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 0x00000008, - VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkGraphicsPipelineLibraryFlagBitsEXT; -typedef VkFlags VkGraphicsPipelineLibraryFlagsEXT; -typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 graphicsPipelineLibrary; -} VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; - -typedef struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT { - VkStructureType sType; - void* pNext; - VkBool32 graphicsPipelineLibraryFastLinking; - VkBool32 graphicsPipelineLibraryIndependentInterpolationDecoration; -} VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; - -typedef struct VkGraphicsPipelineLibraryCreateInfoEXT { - VkStructureType sType; - void* pNext; - VkGraphicsPipelineLibraryFlagsEXT flags; -} VkGraphicsPipelineLibraryCreateInfoEXT; - - - -#define VK_AMD_shader_early_and_late_fragment_tests 1 -#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION 1 -#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME "VK_AMD_shader_early_and_late_fragment_tests" -typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD { - VkStructureType sType; - void* pNext; - VkBool32 shaderEarlyAndLateFragmentTests; -} VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; - - - -#define VK_NV_fragment_shading_rate_enums 1 -#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1 -#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums" - -typedef enum VkFragmentShadingRateTypeNV { - VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0, - VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1, - VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkFragmentShadingRateTypeNV; - -typedef enum VkFragmentShadingRateNV { - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10, - VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11, - VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12, - VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13, - VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14, - VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15, - VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 0x7FFFFFFF -} VkFragmentShadingRateNV; -typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 fragmentShadingRateEnums; - VkBool32 supersampleFragmentShadingRates; - VkBool32 noInvocationFragmentShadingRates; -} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV; - -typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV { - VkStructureType sType; - void* pNext; - VkSampleCountFlagBits maxFragmentShadingRateInvocationCount; -} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV; - -typedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkFragmentShadingRateTypeNV shadingRateType; - VkFragmentShadingRateNV shadingRate; - VkFragmentShadingRateCombinerOpKHR combinerOps[2]; -} VkPipelineFragmentShadingRateEnumStateCreateInfoNV; - -typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateEnumNV)(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV( - VkCommandBuffer commandBuffer, - VkFragmentShadingRateNV shadingRate, - const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); -#endif - - -#define VK_NV_ray_tracing_motion_blur 1 -#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1 -#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur" - -typedef enum VkAccelerationStructureMotionInstanceTypeNV { - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0, - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1, - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2, - VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkAccelerationStructureMotionInstanceTypeNV; -typedef VkFlags VkAccelerationStructureMotionInfoFlagsNV; -typedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV; -typedef union VkDeviceOrHostAddressConstKHR { - VkDeviceAddress deviceAddress; - const void* hostAddress; -} VkDeviceOrHostAddressConstKHR; - -typedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV { - VkStructureType sType; - const void* pNext; - VkDeviceOrHostAddressConstKHR vertexData; -} VkAccelerationStructureGeometryMotionTrianglesDataNV; - -typedef struct VkAccelerationStructureMotionInfoNV { - VkStructureType sType; - const void* pNext; - uint32_t maxInstances; - VkAccelerationStructureMotionInfoFlagsNV flags; -} VkAccelerationStructureMotionInfoNV; - -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; -} VkAccelerationStructureMatrixMotionInstanceNV; - -typedef struct VkSRTDataNV { - float sx; - float a; - float b; - float pvx; - float sy; - float c; - float pvy; - float sz; - float pvz; - float qx; - float qy; - float qz; - float qw; - float tx; - float ty; - float tz; -} VkSRTDataNV; - -typedef struct VkAccelerationStructureSRTMotionInstanceNV { - VkSRTDataNV transformT0; - VkSRTDataNV transformT1; - uint32_t instanceCustomIndex:24; - uint32_t mask:8; - uint32_t instanceShaderBindingTableRecordOffset:24; - VkGeometryInstanceFlagsKHR flags:8; - uint64_t accelerationStructureReference; -} VkAccelerationStructureSRTMotionInstanceNV; - -typedef union VkAccelerationStructureMotionInstanceDataNV { - VkAccelerationStructureInstanceKHR staticInstance; - VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance; - VkAccelerationStructureSRTMotionInstanceNV srtMotionInstance; -} VkAccelerationStructureMotionInstanceDataNV; - -typedef struct VkAccelerationStructureMotionInstanceNV { - VkAccelerationStructureMotionInstanceTypeNV type; - VkAccelerationStructureMotionInstanceFlagsNV flags; - VkAccelerationStructureMotionInstanceDataNV data; -} VkAccelerationStructureMotionInstanceNV; - -typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 rayTracingMotionBlur; - VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect; -} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV; - - - -#define VK_EXT_ycbcr_2plane_444_formats 1 -#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1 -#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats" -typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 ycbcr2plane444Formats; -} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; - - - -#define VK_EXT_fragment_density_map2 1 -#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1 -#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2" -typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 fragmentDensityMapDeferred; -} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT; - -typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT { - VkStructureType sType; - void* pNext; - VkBool32 subsampledLoads; - VkBool32 subsampledCoarseReconstructionEarlyAccess; - uint32_t maxSubsampledArrayLayers; - uint32_t maxDescriptorSetSubsampledSamplers; -} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT; - - - -#define VK_QCOM_rotated_copy_commands 1 -#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 1 -#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME "VK_QCOM_rotated_copy_commands" -typedef struct VkCopyCommandTransformInfoQCOM { - VkStructureType sType; - const void* pNext; - VkSurfaceTransformFlagBitsKHR transform; -} VkCopyCommandTransformInfoQCOM; - - - -#define VK_EXT_image_robustness 1 -#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1 -#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness" -typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT; - - - -#define VK_EXT_image_compression_control 1 -#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION 1 -#define VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME "VK_EXT_image_compression_control" - -typedef enum VkImageCompressionFlagBitsEXT { - VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0, - VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0x00000001, - VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0x00000002, - VK_IMAGE_COMPRESSION_DISABLED_EXT = 0x00000004, - VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkImageCompressionFlagBitsEXT; -typedef VkFlags VkImageCompressionFlagsEXT; - -typedef enum VkImageCompressionFixedRateFlagBitsEXT { - VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0, - VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0x00000001, - VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0x00000002, - VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0x00000004, - VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0x00000008, - VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0x00000010, - VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0x00000020, - VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0x00000040, - VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0x00000080, - VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0x00000100, - VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0x00000200, - VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0x00000400, - VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0x00000800, - VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0x00001000, - VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0x00002000, - VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0x00004000, - VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0x00008000, - VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0x00010000, - VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0x00020000, - VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0x00040000, - VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0x00080000, - VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0x00100000, - VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0x00200000, - VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0x00400000, - VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0x00800000, - VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkImageCompressionFixedRateFlagBitsEXT; -typedef VkFlags VkImageCompressionFixedRateFlagsEXT; -typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 imageCompressionControl; -} VkPhysicalDeviceImageCompressionControlFeaturesEXT; - -typedef struct VkImageCompressionControlEXT { - VkStructureType sType; - const void* pNext; - VkImageCompressionFlagsEXT flags; - uint32_t compressionControlPlaneCount; - VkImageCompressionFixedRateFlagsEXT* pFixedRateFlags; -} VkImageCompressionControlEXT; - -typedef struct VkSubresourceLayout2EXT { - VkStructureType sType; - void* pNext; - VkSubresourceLayout subresourceLayout; -} VkSubresourceLayout2EXT; - -typedef struct VkImageSubresource2EXT { - VkStructureType sType; - void* pNext; - VkImageSubresource imageSubresource; -} VkImageSubresource2EXT; - -typedef struct VkImageCompressionPropertiesEXT { - VkStructureType sType; - void* pNext; - VkImageCompressionFlagsEXT imageCompressionFlags; - VkImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags; -} VkImageCompressionPropertiesEXT; - -typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2EXT)(VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2EXT( - VkDevice device, - VkImage image, - const VkImageSubresource2EXT* pSubresource, - VkSubresourceLayout2EXT* pLayout); -#endif - - -#define VK_EXT_4444_formats 1 -#define VK_EXT_4444_FORMATS_SPEC_VERSION 1 -#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats" -typedef struct VkPhysicalDevice4444FormatsFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 formatA4R4G4B4; - VkBool32 formatA4B4G4R4; -} VkPhysicalDevice4444FormatsFeaturesEXT; - - - -#define VK_ARM_rasterization_order_attachment_access 1 -#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1 -#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_ARM_rasterization_order_attachment_access" -typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM { - VkStructureType sType; - void* pNext; - VkBool32 rasterizationOrderColorAttachmentAccess; - VkBool32 rasterizationOrderDepthAttachmentAccess; - VkBool32 rasterizationOrderStencilAttachmentAccess; -} VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; - - - -#define VK_EXT_rgba10x6_formats 1 -#define VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION 1 -#define VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME "VK_EXT_rgba10x6_formats" -typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 formatRgba10x6WithoutYCbCrSampler; -} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT; - - - -#define VK_NV_acquire_winrt_display 1 -#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1 -#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display" -typedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); -typedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV( - VkPhysicalDevice physicalDevice, - uint32_t deviceRelativeId, - VkDisplayKHR* pDisplay); -#endif - - -#define VK_VALVE_mutable_descriptor_type 1 -#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1 -#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_VALVE_mutable_descriptor_type" -typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE { - VkStructureType sType; - void* pNext; - VkBool32 mutableDescriptorType; -} VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE; - -typedef struct VkMutableDescriptorTypeListVALVE { - uint32_t descriptorTypeCount; - const VkDescriptorType* pDescriptorTypes; -} VkMutableDescriptorTypeListVALVE; - -typedef struct VkMutableDescriptorTypeCreateInfoVALVE { - VkStructureType sType; - const void* pNext; - uint32_t mutableDescriptorTypeListCount; - const VkMutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists; -} VkMutableDescriptorTypeCreateInfoVALVE; - - - -#define VK_EXT_vertex_input_dynamic_state 1 -#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2 -#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state" -typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 vertexInputDynamicState; -} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT; - -typedef struct VkVertexInputBindingDescription2EXT { - VkStructureType sType; - void* pNext; - uint32_t binding; - uint32_t stride; - VkVertexInputRate inputRate; - uint32_t divisor; -} VkVertexInputBindingDescription2EXT; - -typedef struct VkVertexInputAttributeDescription2EXT { - VkStructureType sType; - void* pNext; - uint32_t location; - uint32_t binding; - VkFormat format; - uint32_t offset; -} VkVertexInputAttributeDescription2EXT; - -typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT( - VkCommandBuffer commandBuffer, - uint32_t vertexBindingDescriptionCount, - const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, - uint32_t vertexAttributeDescriptionCount, - const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); -#endif - - -#define VK_EXT_physical_device_drm 1 -#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1 -#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm" -typedef struct VkPhysicalDeviceDrmPropertiesEXT { - VkStructureType sType; - void* pNext; - VkBool32 hasPrimary; - VkBool32 hasRender; - int64_t primaryMajor; - int64_t primaryMinor; - int64_t renderMajor; - int64_t renderMinor; -} VkPhysicalDeviceDrmPropertiesEXT; - - - -#define VK_EXT_depth_clip_control 1 -#define VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION 1 -#define VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME "VK_EXT_depth_clip_control" -typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 depthClipControl; -} VkPhysicalDeviceDepthClipControlFeaturesEXT; - -typedef struct VkPipelineViewportDepthClipControlCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkBool32 negativeOneToOne; -} VkPipelineViewportDepthClipControlCreateInfoEXT; - - - -#define VK_EXT_primitive_topology_list_restart 1 -#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1 -#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME "VK_EXT_primitive_topology_list_restart" -typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 primitiveTopologyListRestart; - VkBool32 primitiveTopologyPatchListRestart; -} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; - - - -#define VK_HUAWEI_subpass_shading 1 -#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 2 -#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading" -typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI { - VkStructureType sType; - void* pNext; - VkRenderPass renderPass; - uint32_t subpass; -} VkSubpassShadingPipelineCreateInfoHUAWEI; - -typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI { - VkStructureType sType; - void* pNext; - VkBool32 subpassShading; -} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI; - -typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI { - VkStructureType sType; - void* pNext; - uint32_t maxSubpassShadingWorkgroupSizeAspectRatio; -} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI; - -typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)(VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize); -typedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer commandBuffer); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( - VkDevice device, - VkRenderPass renderpass, - VkExtent2D* pMaxWorkgroupSize); - -VKAPI_ATTR void VKAPI_CALL vkCmdSubpassShadingHUAWEI( - VkCommandBuffer commandBuffer); -#endif - - -#define VK_HUAWEI_invocation_mask 1 -#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1 -#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask" -typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI { - VkStructureType sType; - void* pNext; - VkBool32 invocationMask; -} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI; - -typedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI( - VkCommandBuffer commandBuffer, - VkImageView imageView, - VkImageLayout imageLayout); -#endif - - -#define VK_NV_external_memory_rdma 1 -typedef void* VkRemoteAddressNV; -#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1 -#define VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME "VK_NV_external_memory_rdma" -typedef struct VkMemoryGetRemoteAddressInfoNV { - VkStructureType sType; - const void* pNext; - VkDeviceMemory memory; - VkExternalMemoryHandleTypeFlagBits handleType; -} VkMemoryGetRemoteAddressInfoNV; - -typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 externalMemoryRDMA; -} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV; - -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryRemoteAddressNV)(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV( - VkDevice device, - const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, - VkRemoteAddressNV* pAddress); -#endif - - -#define VK_EXT_pipeline_properties 1 -#define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1 -#define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME "VK_EXT_pipeline_properties" -typedef VkPipelineInfoKHR VkPipelineInfoEXT; - -typedef struct VkPipelinePropertiesIdentifierEXT { - VkStructureType sType; - void* pNext; - uint8_t pipelineIdentifier[VK_UUID_SIZE]; -} VkPipelinePropertiesIdentifierEXT; - -typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 pipelinePropertiesIdentifier; -} VkPhysicalDevicePipelinePropertiesFeaturesEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPipelinePropertiesEXT)(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT( - VkDevice device, - const VkPipelineInfoEXT* pPipelineInfo, - VkBaseOutStructure* pPipelineProperties); -#endif - - -#define VK_EXT_extended_dynamic_state2 1 -#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1 -#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2" -typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 extendedDynamicState2; - VkBool32 extendedDynamicState2LogicOp; - VkBool32 extendedDynamicState2PatchControlPoints; -} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints); -typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); -typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp); -typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT( - VkCommandBuffer commandBuffer, - uint32_t patchControlPoints); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 rasterizerDiscardEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 depthBiasEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT( - VkCommandBuffer commandBuffer, - VkLogicOp logicOp); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 primitiveRestartEnable); -#endif - - -#define VK_EXT_color_write_enable 1 -#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1 -#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable" -typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 colorWriteEnable; -} VkPhysicalDeviceColorWriteEnableFeaturesEXT; - -typedef struct VkPipelineColorWriteCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t attachmentCount; - const VkBool32* pColorWriteEnables; -} VkPipelineColorWriteCreateInfoEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWriteEnableEXT( - VkCommandBuffer commandBuffer, - uint32_t attachmentCount, - const VkBool32* pColorWriteEnables); -#endif - - -#define VK_EXT_primitives_generated_query 1 -#define VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION 1 -#define VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME "VK_EXT_primitives_generated_query" -typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 primitivesGeneratedQuery; - VkBool32 primitivesGeneratedQueryWithRasterizerDiscard; - VkBool32 primitivesGeneratedQueryWithNonZeroStreams; -} VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; - - - -#define VK_EXT_global_priority_query 1 -#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1 -#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query" -#define VK_MAX_GLOBAL_PRIORITY_SIZE_EXT VK_MAX_GLOBAL_PRIORITY_SIZE_KHR -typedef VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT; - -typedef VkQueueFamilyGlobalPriorityPropertiesKHR VkQueueFamilyGlobalPriorityPropertiesEXT; - - - -#define VK_EXT_image_view_min_lod 1 -#define VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION 1 -#define VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME "VK_EXT_image_view_min_lod" -typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 minLod; -} VkPhysicalDeviceImageViewMinLodFeaturesEXT; - -typedef struct VkImageViewMinLodCreateInfoEXT { - VkStructureType sType; - const void* pNext; - float minLod; -} VkImageViewMinLodCreateInfoEXT; - - - -#define VK_EXT_multi_draw 1 -#define VK_EXT_MULTI_DRAW_SPEC_VERSION 1 -#define VK_EXT_MULTI_DRAW_EXTENSION_NAME "VK_EXT_multi_draw" -typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 multiDraw; -} VkPhysicalDeviceMultiDrawFeaturesEXT; - -typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t maxMultiDrawCount; -} VkPhysicalDeviceMultiDrawPropertiesEXT; - -typedef struct VkMultiDrawInfoEXT { - uint32_t firstVertex; - uint32_t vertexCount; -} VkMultiDrawInfoEXT; - -typedef struct VkMultiDrawIndexedInfoEXT { - uint32_t firstIndex; - uint32_t indexCount; - int32_t vertexOffset; -} VkMultiDrawIndexedInfoEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiIndexedEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiEXT( - VkCommandBuffer commandBuffer, - uint32_t drawCount, - const VkMultiDrawInfoEXT* pVertexInfo, - uint32_t instanceCount, - uint32_t firstInstance, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiIndexedEXT( - VkCommandBuffer commandBuffer, - uint32_t drawCount, - const VkMultiDrawIndexedInfoEXT* pIndexInfo, - uint32_t instanceCount, - uint32_t firstInstance, - uint32_t stride, - const int32_t* pVertexOffset); -#endif - - -#define VK_EXT_image_2d_view_of_3d 1 -#define VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION 1 -#define VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_2d_view_of_3d" -typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 image2DViewOf3D; - VkBool32 sampler2DViewOf3D; -} VkPhysicalDeviceImage2DViewOf3DFeaturesEXT; - - - -#define VK_EXT_load_store_op_none 1 -#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1 -#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_EXT_load_store_op_none" - - -#define VK_EXT_border_color_swizzle 1 -#define VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION 1 -#define VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME "VK_EXT_border_color_swizzle" -typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 borderColorSwizzle; - VkBool32 borderColorSwizzleFromImage; -} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT; - -typedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkComponentMapping components; - VkBool32 srgb; -} VkSamplerBorderColorComponentMappingCreateInfoEXT; - - - -#define VK_EXT_pageable_device_local_memory 1 -#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION 1 -#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME "VK_EXT_pageable_device_local_memory" -typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 pageableDeviceLocalMemory; -} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; - -typedef void (VKAPI_PTR *PFN_vkSetDeviceMemoryPriorityEXT)(VkDevice device, VkDeviceMemory memory, float priority); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT( - VkDevice device, - VkDeviceMemory memory, - float priority); -#endif - - -#define VK_VALVE_descriptor_set_host_mapping 1 -#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION 1 -#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME "VK_VALVE_descriptor_set_host_mapping" -typedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE { - VkStructureType sType; - void* pNext; - VkBool32 descriptorSetHostMapping; -} VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; - -typedef struct VkDescriptorSetBindingReferenceVALVE { - VkStructureType sType; - const void* pNext; - VkDescriptorSetLayout descriptorSetLayout; - uint32_t binding; -} VkDescriptorSetBindingReferenceVALVE; - -typedef struct VkDescriptorSetLayoutHostMappingInfoVALVE { - VkStructureType sType; - void* pNext; - size_t descriptorOffset; - uint32_t descriptorSize; -} VkDescriptorSetLayoutHostMappingInfoVALVE; - -typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)(VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping); -typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetHostMappingVALVE)(VkDevice device, VkDescriptorSet descriptorSet, void** ppData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutHostMappingInfoVALVE( - VkDevice device, - const VkDescriptorSetBindingReferenceVALVE* pBindingReference, - VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping); - -VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetHostMappingVALVE( - VkDevice device, - VkDescriptorSet descriptorSet, - void** ppData); -#endif - - -#define VK_QCOM_fragment_density_map_offset 1 -#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1 -#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_QCOM_fragment_density_map_offset" -typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM { - VkStructureType sType; - void* pNext; - VkBool32 fragmentDensityMapOffset; -} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; - -typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM { - VkStructureType sType; - void* pNext; - VkExtent2D fragmentDensityOffsetGranularity; -} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; - -typedef struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM { - VkStructureType sType; - const void* pNext; - uint32_t fragmentDensityOffsetCount; - const VkOffset2D* pFragmentDensityOffsets; -} VkSubpassFragmentDensityMapOffsetEndInfoQCOM; - - - -#define VK_NV_linear_color_attachment 1 -#define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1 -#define VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME "VK_NV_linear_color_attachment" -typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 linearColorAttachment; -} VkPhysicalDeviceLinearColorAttachmentFeaturesNV; - - - -#define VK_GOOGLE_surfaceless_query 1 -#define VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION 1 -#define VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME "VK_GOOGLE_surfaceless_query" - - -#define VK_EXT_image_compression_control_swapchain 1 -#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1 -#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME "VK_EXT_image_compression_control_swapchain" -typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 imageCompressionControlSwapchain; -} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; - - - -#define VK_EXT_subpass_merge_feedback 1 -#define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 2 -#define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME "VK_EXT_subpass_merge_feedback" - -typedef enum VkSubpassMergeStatusEXT { - VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0, - VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12, - VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13, - VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkSubpassMergeStatusEXT; -typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 subpassMergeFeedback; -} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT; - -typedef struct VkRenderPassCreationControlEXT { - VkStructureType sType; - const void* pNext; - VkBool32 disallowMerging; -} VkRenderPassCreationControlEXT; - -typedef struct VkRenderPassCreationFeedbackInfoEXT { - uint32_t postMergeSubpassCount; -} VkRenderPassCreationFeedbackInfoEXT; - -typedef struct VkRenderPassCreationFeedbackCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkRenderPassCreationFeedbackInfoEXT* pRenderPassFeedback; -} VkRenderPassCreationFeedbackCreateInfoEXT; - -typedef struct VkRenderPassSubpassFeedbackInfoEXT { - VkSubpassMergeStatusEXT subpassMergeStatus; - char description[VK_MAX_DESCRIPTION_SIZE]; - uint32_t postMergeIndex; -} VkRenderPassSubpassFeedbackInfoEXT; - -typedef struct VkRenderPassSubpassFeedbackCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkRenderPassSubpassFeedbackInfoEXT* pSubpassFeedback; -} VkRenderPassSubpassFeedbackCreateInfoEXT; - - - -#define VK_KHR_acceleration_structure 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR) -#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 -#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure" - -typedef enum VkBuildAccelerationStructureModeKHR { - VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0, - VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1, - VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkBuildAccelerationStructureModeKHR; - -typedef enum VkAccelerationStructureBuildTypeKHR { - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkAccelerationStructureBuildTypeKHR; - -typedef enum VkAccelerationStructureCompatibilityKHR { - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0, - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1, - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 0x7FFFFFFF -} VkAccelerationStructureCompatibilityKHR; - -typedef enum VkAccelerationStructureCreateFlagBitsKHR { - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001, - VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0x00000004, - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkAccelerationStructureCreateFlagBitsKHR; -typedef VkFlags VkAccelerationStructureCreateFlagsKHR; -typedef union VkDeviceOrHostAddressKHR { - VkDeviceAddress deviceAddress; - void* hostAddress; -} VkDeviceOrHostAddressKHR; - -typedef struct VkAccelerationStructureBuildRangeInfoKHR { - uint32_t primitiveCount; - uint32_t primitiveOffset; - uint32_t firstVertex; - uint32_t transformOffset; -} VkAccelerationStructureBuildRangeInfoKHR; - -typedef struct VkAccelerationStructureGeometryTrianglesDataKHR { - VkStructureType sType; - const void* pNext; - VkFormat vertexFormat; - VkDeviceOrHostAddressConstKHR vertexData; - VkDeviceSize vertexStride; - uint32_t maxVertex; - VkIndexType indexType; - VkDeviceOrHostAddressConstKHR indexData; - VkDeviceOrHostAddressConstKHR transformData; -} VkAccelerationStructureGeometryTrianglesDataKHR; - -typedef struct VkAccelerationStructureGeometryAabbsDataKHR { - VkStructureType sType; - const void* pNext; - VkDeviceOrHostAddressConstKHR data; - VkDeviceSize stride; -} VkAccelerationStructureGeometryAabbsDataKHR; - -typedef struct VkAccelerationStructureGeometryInstancesDataKHR { - VkStructureType sType; - const void* pNext; - VkBool32 arrayOfPointers; - VkDeviceOrHostAddressConstKHR data; -} VkAccelerationStructureGeometryInstancesDataKHR; - -typedef union VkAccelerationStructureGeometryDataKHR { - VkAccelerationStructureGeometryTrianglesDataKHR triangles; - VkAccelerationStructureGeometryAabbsDataKHR aabbs; - VkAccelerationStructureGeometryInstancesDataKHR instances; -} VkAccelerationStructureGeometryDataKHR; - -typedef struct VkAccelerationStructureGeometryKHR { - VkStructureType sType; - const void* pNext; - VkGeometryTypeKHR geometryType; - VkAccelerationStructureGeometryDataKHR geometry; - VkGeometryFlagsKHR flags; -} VkAccelerationStructureGeometryKHR; - -typedef struct VkAccelerationStructureBuildGeometryInfoKHR { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureTypeKHR type; - VkBuildAccelerationStructureFlagsKHR flags; - VkBuildAccelerationStructureModeKHR mode; - VkAccelerationStructureKHR srcAccelerationStructure; - VkAccelerationStructureKHR dstAccelerationStructure; - uint32_t geometryCount; - const VkAccelerationStructureGeometryKHR* pGeometries; - const VkAccelerationStructureGeometryKHR* const* ppGeometries; - VkDeviceOrHostAddressKHR scratchData; -} VkAccelerationStructureBuildGeometryInfoKHR; - -typedef struct VkAccelerationStructureCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureCreateFlagsKHR createFlags; - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize size; - VkAccelerationStructureTypeKHR type; - VkDeviceAddress deviceAddress; -} VkAccelerationStructureCreateInfoKHR; - -typedef struct VkWriteDescriptorSetAccelerationStructureKHR { - VkStructureType sType; - const void* pNext; - uint32_t accelerationStructureCount; - const VkAccelerationStructureKHR* pAccelerationStructures; -} VkWriteDescriptorSetAccelerationStructureKHR; - -typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 accelerationStructure; - VkBool32 accelerationStructureCaptureReplay; - VkBool32 accelerationStructureIndirectBuild; - VkBool32 accelerationStructureHostCommands; - VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind; -} VkPhysicalDeviceAccelerationStructureFeaturesKHR; - -typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR { - VkStructureType sType; - void* pNext; - uint64_t maxGeometryCount; - uint64_t maxInstanceCount; - uint64_t maxPrimitiveCount; - uint32_t maxPerStageDescriptorAccelerationStructures; - uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures; - uint32_t maxDescriptorSetAccelerationStructures; - uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures; - uint32_t minAccelerationStructureScratchOffsetAlignment; -} VkPhysicalDeviceAccelerationStructurePropertiesKHR; - -typedef struct VkAccelerationStructureDeviceAddressInfoKHR { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureKHR accelerationStructure; -} VkAccelerationStructureDeviceAddressInfoKHR; - -typedef struct VkAccelerationStructureVersionInfoKHR { - VkStructureType sType; - const void* pNext; - const uint8_t* pVersionData; -} VkAccelerationStructureVersionInfoKHR; - -typedef struct VkCopyAccelerationStructureToMemoryInfoKHR { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureKHR src; - VkDeviceOrHostAddressKHR dst; - VkCopyAccelerationStructureModeKHR mode; -} VkCopyAccelerationStructureToMemoryInfoKHR; - -typedef struct VkCopyMemoryToAccelerationStructureInfoKHR { - VkStructureType sType; - const void* pNext; - VkDeviceOrHostAddressConstKHR src; - VkAccelerationStructureKHR dst; - VkCopyAccelerationStructureModeKHR mode; -} VkCopyMemoryToAccelerationStructureInfoKHR; - -typedef struct VkCopyAccelerationStructureInfoKHR { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureKHR src; - VkAccelerationStructureKHR dst; - VkCopyAccelerationStructureModeKHR mode; -} VkCopyAccelerationStructureInfoKHR; - -typedef struct VkAccelerationStructureBuildSizesInfoKHR { - VkStructureType sType; - const void* pNext; - VkDeviceSize accelerationStructureSize; - VkDeviceSize updateScratchSize; - VkDeviceSize buildScratchSize; -} VkAccelerationStructureBuildSizesInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure); -typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); -typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const* ppMaxPrimitiveCounts); -typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); -typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); -typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); -typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); -typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); -typedef void (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility); -typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR( - VkDevice device, - const VkAccelerationStructureCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkAccelerationStructureKHR* pAccelerationStructure); - -VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR( - VkDevice device, - VkAccelerationStructureKHR accelerationStructure, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresKHR( - VkCommandBuffer commandBuffer, - uint32_t infoCount, - const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, - const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); - -VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresIndirectKHR( - VkCommandBuffer commandBuffer, - uint32_t infoCount, - const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, - const VkDeviceAddress* pIndirectDeviceAddresses, - const uint32_t* pIndirectStrides, - const uint32_t* const* ppMaxPrimitiveCounts); - -VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - uint32_t infoCount, - const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, - const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); - -VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - const VkCopyAccelerationStructureInfoKHR* pInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR( - VkDevice device, - uint32_t accelerationStructureCount, - const VkAccelerationStructureKHR* pAccelerationStructures, - VkQueryType queryType, - size_t dataSize, - void* pData, - size_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR( - VkCommandBuffer commandBuffer, - const VkCopyAccelerationStructureInfoKHR* pInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR( - VkCommandBuffer commandBuffer, - const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR( - VkCommandBuffer commandBuffer, - const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); - -VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR( - VkDevice device, - const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR( - VkCommandBuffer commandBuffer, - uint32_t accelerationStructureCount, - const VkAccelerationStructureKHR* pAccelerationStructures, - VkQueryType queryType, - VkQueryPool queryPool, - uint32_t firstQuery); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR( - VkDevice device, - const VkAccelerationStructureVersionInfoKHR* pVersionInfo, - VkAccelerationStructureCompatibilityKHR* pCompatibility); - -VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR( - VkDevice device, - VkAccelerationStructureBuildTypeKHR buildType, - const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, - const uint32_t* pMaxPrimitiveCounts, - VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); -#endif - - -#define VK_KHR_ray_tracing_pipeline 1 -#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1 -#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline" - -typedef enum VkShaderGroupShaderKHR { - VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0, - VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1, - VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2, - VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3, - VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 0x7FFFFFFF -} VkShaderGroupShaderKHR; -typedef struct VkRayTracingShaderGroupCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkRayTracingShaderGroupTypeKHR type; - uint32_t generalShader; - uint32_t closestHitShader; - uint32_t anyHitShader; - uint32_t intersectionShader; - const void* pShaderGroupCaptureReplayHandle; -} VkRayTracingShaderGroupCreateInfoKHR; - -typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t maxPipelineRayPayloadSize; - uint32_t maxPipelineRayHitAttributeSize; -} VkRayTracingPipelineInterfaceCreateInfoKHR; - -typedef struct VkRayTracingPipelineCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkPipelineCreateFlags flags; - uint32_t stageCount; - const VkPipelineShaderStageCreateInfo* pStages; - uint32_t groupCount; - const VkRayTracingShaderGroupCreateInfoKHR* pGroups; - uint32_t maxPipelineRayRecursionDepth; - const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; - const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface; - const VkPipelineDynamicStateCreateInfo* pDynamicState; - VkPipelineLayout layout; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkRayTracingPipelineCreateInfoKHR; - -typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 rayTracingPipeline; - VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay; - VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed; - VkBool32 rayTracingPipelineTraceRaysIndirect; - VkBool32 rayTraversalPrimitiveCulling; -} VkPhysicalDeviceRayTracingPipelineFeaturesKHR; - -typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR { - VkStructureType sType; - void* pNext; - uint32_t shaderGroupHandleSize; - uint32_t maxRayRecursionDepth; - uint32_t maxShaderGroupStride; - uint32_t shaderGroupBaseAlignment; - uint32_t shaderGroupHandleCaptureReplaySize; - uint32_t maxRayDispatchInvocationCount; - uint32_t shaderGroupHandleAlignment; - uint32_t maxRayHitAttributeSize; -} VkPhysicalDeviceRayTracingPipelinePropertiesKHR; - -typedef struct VkStridedDeviceAddressRegionKHR { - VkDeviceAddress deviceAddress; - VkDeviceSize stride; - VkDeviceSize size; -} VkStridedDeviceAddressRegionKHR; - -typedef struct VkTraceRaysIndirectCommandKHR { - uint32_t width; - uint32_t height; - uint32_t depth; -} VkTraceRaysIndirectCommandKHR; - -typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth); -typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); -typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); -typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress); -typedef VkDeviceSize (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupStackSizeKHR)(VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader); -typedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysKHR( - VkCommandBuffer commandBuffer, - const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, - const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, - const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, - const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, - uint32_t width, - uint32_t height, - uint32_t depth); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - VkPipelineCache pipelineCache, - uint32_t createInfoCount, - const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkPipeline* pPipelines); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( - VkDevice device, - VkPipeline pipeline, - uint32_t firstGroup, - uint32_t groupCount, - size_t dataSize, - void* pData); - -VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR( - VkCommandBuffer commandBuffer, - const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, - const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, - const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, - const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, - VkDeviceAddress indirectDeviceAddress); - -VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetRayTracingShaderGroupStackSizeKHR( - VkDevice device, - VkPipeline pipeline, - uint32_t group, - VkShaderGroupShaderKHR groupShader); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR( - VkCommandBuffer commandBuffer, - uint32_t pipelineStackSize); -#endif - - -#define VK_KHR_ray_query 1 -#define VK_KHR_RAY_QUERY_SPEC_VERSION 1 -#define VK_KHR_RAY_QUERY_EXTENSION_NAME "VK_KHR_ray_query" -typedef struct VkPhysicalDeviceRayQueryFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 rayQuery; -} VkPhysicalDeviceRayQueryFeaturesKHR; - - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_CORE_H_ +#define VULKAN_CORE_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_VERSION_1_0 1 +#include "vk_platform.h" + +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + + +#ifndef VK_USE_64_BIT_PTR_DEFINES + #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) + #define VK_USE_64_BIT_PTR_DEFINES 1 + #else + #define VK_USE_64_BIT_PTR_DEFINES 0 + #endif +#endif + + +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) + #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L)) + #define VK_NULL_HANDLE nullptr + #else + #define VK_NULL_HANDLE ((void*)0) + #endif + #else + #define VK_NULL_HANDLE 0ULL + #endif +#endif +#ifndef VK_NULL_HANDLE + #define VK_NULL_HANDLE 0 +#endif + + +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; + #else + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; + #endif +#endif + +// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead. +#define VK_MAKE_VERSION(major, minor, patch) \ + ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) + +// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. +//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 + +#define VK_MAKE_API_VERSION(variant, major, minor, patch) \ + ((((uint32_t)(variant)) << 29) | (((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) + +// Vulkan 1.0 version number +#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0 + +// Version of this file +#define VK_HEADER_VERSION 216 + +// Complete version of this file +#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) + +// DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead. +#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) + +// DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead. +#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) + +// DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead. +#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) + +#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29) +#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22) & 0x7FU) +#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) +#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) +typedef uint32_t VkBool32; +typedef uint64_t VkDeviceAddress; +typedef uint64_t VkDeviceSize; +typedef uint32_t VkFlags; +typedef uint32_t VkSampleMask; +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_HANDLE(VkPhysicalDevice) +VK_DEFINE_HANDLE(VkDevice) +VK_DEFINE_HANDLE(VkQueue) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) +VK_DEFINE_HANDLE(VkCommandBuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) +#define VK_ATTACHMENT_UNUSED (~0U) +#define VK_FALSE 0U +#define VK_LOD_CLAMP_NONE 1000.0F +#define VK_QUEUE_FAMILY_IGNORED (~0U) +#define VK_REMAINING_ARRAY_LAYERS (~0U) +#define VK_REMAINING_MIP_LEVELS (~0U) +#define VK_SUBPASS_EXTERNAL (~0U) +#define VK_TRUE 1U +#define VK_WHOLE_SIZE (~0ULL) +#define VK_MAX_MEMORY_TYPES 32U +#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256U +#define VK_UUID_SIZE 16U +#define VK_MAX_EXTENSION_NAME_SIZE 256U +#define VK_MAX_DESCRIPTION_SIZE 256U +#define VK_MAX_MEMORY_HEAPS 16U + +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, + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000, + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, + VK_ERROR_FRAGMENTATION = -1000161000, + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, + VK_PIPELINE_COMPILE_REQUIRED = 1000297000, + VK_ERROR_SURFACE_LOST_KHR = -1000000000, + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, + VK_SUBOPTIMAL_KHR = 1000001003, + VK_ERROR_OUT_OF_DATE_KHR = -1000001004, + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, + VK_ERROR_INVALID_SHADER_NV = -1000012000, + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, + VK_ERROR_NOT_PERMITTED_KHR = -1000174001, + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000, + VK_THREAD_IDLE_KHR = 1000268000, + VK_THREAD_DONE_KHR = 1000268001, + VK_OPERATION_DEFERRED_KHR = 1000268002, + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003, + VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000, + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY, + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE, + VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION, + VK_ERROR_NOT_PERMITTED_EXT = VK_ERROR_NOT_PERMITTED_KHR, + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + VK_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, + VK_RESULT_MAX_ENUM = 0x7FFFFFFF +} VkResult; + +typedef enum VkStructureType { + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2, + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3, + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4, + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5, + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6, + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7, + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8, + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9, + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10, + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11, + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12, + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13, + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14, + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15, + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16, + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18, + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28, + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29, + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30, + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35, + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36, + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000, + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000, + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001, + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000, + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004, + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005, + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006, + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000, + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001, + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002, + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001, + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002, + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005, + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000, + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002, + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001, + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000, + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001, + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000, + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000, + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002, + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004, + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005, + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002, + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004, + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001, + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54, + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000, + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001, + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002, + VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003, + VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004, + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005, + VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006, + VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000, + VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001, + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001, + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003, + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009, + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010, + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011, + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012, + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001, + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000, + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR = 1000023000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR = 1000023002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR = 1000023003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR = 1000023004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR = 1000023011, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000023012, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR = 1000023013, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR = 1000023016, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR = 1000024001, +#endif + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, + VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000, + VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001, + VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002, + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT = 1000038005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT = 1000038006, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT = 1000038007, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT = 1000038008, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT = 1000038009, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT = 1000038010, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT = 1000039000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000039001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000039002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT = 1000039003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT = 1000039004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXT = 1000039005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT = 1000039006, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT = 1000039007, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT = 1000039008, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT = 1000039009, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT = 1000039010, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT = 1000040002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT = 1000040003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040006, +#endif + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, + VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006, + VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007, + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008, + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009, + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000, + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001, + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000, + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000, + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000, + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001, + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002, + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000, + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001, + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002, + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000, + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000, + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001, + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002, + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003, + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000, + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001, + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002, + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000, + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000, + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001, + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002, + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003, + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000, + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001, + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000, + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000, + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000, + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001, + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002, + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000, + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001, + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002, + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003, + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004, + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005, + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001, + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000, + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001, + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002, + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003, + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004, + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000, + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000, + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001, + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002, + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003, + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002, + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006, + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000, + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001, + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003, + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001, + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002, + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009, + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010, + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011, + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015, + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016, + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013, + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001, + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002, + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003, + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004, + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005, + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006, + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, +#endif + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005, + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001, + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003, + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004, + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005, + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009, + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000, + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000, + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000, + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000, + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000, + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT = 1000187003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187005, +#endif + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000, + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002, + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000, + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000, + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001, + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002, + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003, + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004, + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000, + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000, + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001, + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000, + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001, + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002, + VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000, + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000, + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001, + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000, + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001, + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002, + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002, + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001, + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000, + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001, + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002, + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000, + VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002, + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, + VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003, +#endif + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001, + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = 1000321000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = 1000203000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = 1000322000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001, + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001, + VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000, + VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001, + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002, + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003, + VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000, + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000, + VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000, + VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001, + VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000, + VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001, + VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002, + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000, + VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003, + VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005, + VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007, + VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009, + VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000, + VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001, + VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000, + VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000, + VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000, + VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001, + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000458002, + VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, + VK_STRUCTURE_TYPE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_INFO, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO, + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD, + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO, + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, + VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2, + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, + VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS, + VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkStructureType; + +typedef enum VkPipelineCacheHeaderVersion { + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheHeaderVersion; + +typedef enum VkImageLayout { + VK_IMAGE_LAYOUT_UNDEFINED = 0, + VK_IMAGE_LAYOUT_GENERAL = 1, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, + VK_IMAGE_LAYOUT_PREINITIALIZED = 8, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001, + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002, + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003, + VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000, + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001, + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002, +#endif + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, + VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002, +#endif + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF +} VkImageLayout; + +typedef enum VkObjectType { + VK_OBJECT_TYPE_UNKNOWN = 0, + VK_OBJECT_TYPE_INSTANCE = 1, + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2, + VK_OBJECT_TYPE_DEVICE = 3, + VK_OBJECT_TYPE_QUEUE = 4, + VK_OBJECT_TYPE_SEMAPHORE = 5, + VK_OBJECT_TYPE_COMMAND_BUFFER = 6, + VK_OBJECT_TYPE_FENCE = 7, + VK_OBJECT_TYPE_DEVICE_MEMORY = 8, + VK_OBJECT_TYPE_BUFFER = 9, + VK_OBJECT_TYPE_IMAGE = 10, + VK_OBJECT_TYPE_EVENT = 11, + VK_OBJECT_TYPE_QUERY_POOL = 12, + VK_OBJECT_TYPE_BUFFER_VIEW = 13, + VK_OBJECT_TYPE_IMAGE_VIEW = 14, + VK_OBJECT_TYPE_SHADER_MODULE = 15, + VK_OBJECT_TYPE_PIPELINE_CACHE = 16, + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17, + VK_OBJECT_TYPE_RENDER_PASS = 18, + VK_OBJECT_TYPE_PIPELINE = 19, + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20, + VK_OBJECT_TYPE_SAMPLER = 21, + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22, + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23, + VK_OBJECT_TYPE_FRAMEBUFFER = 24, + VK_OBJECT_TYPE_COMMAND_POOL = 25, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT = 1000295000, + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000, + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001, + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001, +#endif + VK_OBJECT_TYPE_CU_MODULE_NVX = 1000029000, + VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001, + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000, + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000, + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000, + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000, + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, + VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000, + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT, + VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkObjectType; + +typedef enum VkVendorId { + VK_VENDOR_ID_VIV = 0x10001, + VK_VENDOR_ID_VSI = 0x10002, + VK_VENDOR_ID_KAZAN = 0x10003, + VK_VENDOR_ID_CODEPLAY = 0x10004, + VK_VENDOR_ID_MESA = 0x10005, + VK_VENDOR_ID_POCL = 0x10006, + VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF +} VkVendorId; + +typedef enum VkSystemAllocationScope { + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0, + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1, + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2, + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3, + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4, + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF +} VkSystemAllocationScope; + +typedef enum VkInternalAllocationType { + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0, + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkInternalAllocationType; + +typedef enum VkFormat { + VK_FORMAT_UNDEFINED = 0, + VK_FORMAT_R4G4_UNORM_PACK8 = 1, + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2, + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3, + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4, + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5, + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6, + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7, + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8, + VK_FORMAT_R8_UNORM = 9, + VK_FORMAT_R8_SNORM = 10, + VK_FORMAT_R8_USCALED = 11, + VK_FORMAT_R8_SSCALED = 12, + VK_FORMAT_R8_UINT = 13, + VK_FORMAT_R8_SINT = 14, + VK_FORMAT_R8_SRGB = 15, + VK_FORMAT_R8G8_UNORM = 16, + VK_FORMAT_R8G8_SNORM = 17, + VK_FORMAT_R8G8_USCALED = 18, + VK_FORMAT_R8G8_SSCALED = 19, + VK_FORMAT_R8G8_UINT = 20, + VK_FORMAT_R8G8_SINT = 21, + VK_FORMAT_R8G8_SRGB = 22, + VK_FORMAT_R8G8B8_UNORM = 23, + VK_FORMAT_R8G8B8_SNORM = 24, + VK_FORMAT_R8G8B8_USCALED = 25, + VK_FORMAT_R8G8B8_SSCALED = 26, + VK_FORMAT_R8G8B8_UINT = 27, + VK_FORMAT_R8G8B8_SINT = 28, + VK_FORMAT_R8G8B8_SRGB = 29, + VK_FORMAT_B8G8R8_UNORM = 30, + VK_FORMAT_B8G8R8_SNORM = 31, + VK_FORMAT_B8G8R8_USCALED = 32, + VK_FORMAT_B8G8R8_SSCALED = 33, + VK_FORMAT_B8G8R8_UINT = 34, + VK_FORMAT_B8G8R8_SINT = 35, + VK_FORMAT_B8G8R8_SRGB = 36, + VK_FORMAT_R8G8B8A8_UNORM = 37, + VK_FORMAT_R8G8B8A8_SNORM = 38, + VK_FORMAT_R8G8B8A8_USCALED = 39, + VK_FORMAT_R8G8B8A8_SSCALED = 40, + VK_FORMAT_R8G8B8A8_UINT = 41, + VK_FORMAT_R8G8B8A8_SINT = 42, + VK_FORMAT_R8G8B8A8_SRGB = 43, + VK_FORMAT_B8G8R8A8_UNORM = 44, + VK_FORMAT_B8G8R8A8_SNORM = 45, + VK_FORMAT_B8G8R8A8_USCALED = 46, + VK_FORMAT_B8G8R8A8_SSCALED = 47, + VK_FORMAT_B8G8R8A8_UINT = 48, + VK_FORMAT_B8G8R8A8_SINT = 49, + VK_FORMAT_B8G8R8A8_SRGB = 50, + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51, + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52, + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53, + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54, + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55, + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56, + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57, + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58, + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59, + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60, + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61, + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62, + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63, + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64, + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65, + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66, + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67, + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68, + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69, + VK_FORMAT_R16_UNORM = 70, + VK_FORMAT_R16_SNORM = 71, + VK_FORMAT_R16_USCALED = 72, + VK_FORMAT_R16_SSCALED = 73, + VK_FORMAT_R16_UINT = 74, + VK_FORMAT_R16_SINT = 75, + VK_FORMAT_R16_SFLOAT = 76, + VK_FORMAT_R16G16_UNORM = 77, + VK_FORMAT_R16G16_SNORM = 78, + VK_FORMAT_R16G16_USCALED = 79, + VK_FORMAT_R16G16_SSCALED = 80, + VK_FORMAT_R16G16_UINT = 81, + VK_FORMAT_R16G16_SINT = 82, + VK_FORMAT_R16G16_SFLOAT = 83, + VK_FORMAT_R16G16B16_UNORM = 84, + VK_FORMAT_R16G16B16_SNORM = 85, + VK_FORMAT_R16G16B16_USCALED = 86, + VK_FORMAT_R16G16B16_SSCALED = 87, + VK_FORMAT_R16G16B16_UINT = 88, + VK_FORMAT_R16G16B16_SINT = 89, + VK_FORMAT_R16G16B16_SFLOAT = 90, + VK_FORMAT_R16G16B16A16_UNORM = 91, + VK_FORMAT_R16G16B16A16_SNORM = 92, + VK_FORMAT_R16G16B16A16_USCALED = 93, + VK_FORMAT_R16G16B16A16_SSCALED = 94, + VK_FORMAT_R16G16B16A16_UINT = 95, + VK_FORMAT_R16G16B16A16_SINT = 96, + VK_FORMAT_R16G16B16A16_SFLOAT = 97, + VK_FORMAT_R32_UINT = 98, + VK_FORMAT_R32_SINT = 99, + VK_FORMAT_R32_SFLOAT = 100, + VK_FORMAT_R32G32_UINT = 101, + VK_FORMAT_R32G32_SINT = 102, + VK_FORMAT_R32G32_SFLOAT = 103, + VK_FORMAT_R32G32B32_UINT = 104, + VK_FORMAT_R32G32B32_SINT = 105, + VK_FORMAT_R32G32B32_SFLOAT = 106, + VK_FORMAT_R32G32B32A32_UINT = 107, + VK_FORMAT_R32G32B32A32_SINT = 108, + VK_FORMAT_R32G32B32A32_SFLOAT = 109, + VK_FORMAT_R64_UINT = 110, + VK_FORMAT_R64_SINT = 111, + VK_FORMAT_R64_SFLOAT = 112, + VK_FORMAT_R64G64_UINT = 113, + VK_FORMAT_R64G64_SINT = 114, + VK_FORMAT_R64G64_SFLOAT = 115, + VK_FORMAT_R64G64B64_UINT = 116, + VK_FORMAT_R64G64B64_SINT = 117, + VK_FORMAT_R64G64B64_SFLOAT = 118, + VK_FORMAT_R64G64B64A64_UINT = 119, + VK_FORMAT_R64G64B64A64_SINT = 120, + VK_FORMAT_R64G64B64A64_SFLOAT = 121, + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122, + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123, + VK_FORMAT_D16_UNORM = 124, + VK_FORMAT_X8_D24_UNORM_PACK32 = 125, + VK_FORMAT_D32_SFLOAT = 126, + VK_FORMAT_S8_UINT = 127, + VK_FORMAT_D16_UNORM_S8_UINT = 128, + VK_FORMAT_D24_UNORM_S8_UINT = 129, + VK_FORMAT_D32_SFLOAT_S8_UINT = 130, + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131, + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132, + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133, + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134, + VK_FORMAT_BC2_UNORM_BLOCK = 135, + VK_FORMAT_BC2_SRGB_BLOCK = 136, + VK_FORMAT_BC3_UNORM_BLOCK = 137, + VK_FORMAT_BC3_SRGB_BLOCK = 138, + VK_FORMAT_BC4_UNORM_BLOCK = 139, + VK_FORMAT_BC4_SNORM_BLOCK = 140, + VK_FORMAT_BC5_UNORM_BLOCK = 141, + VK_FORMAT_BC5_SNORM_BLOCK = 142, + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143, + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144, + VK_FORMAT_BC7_UNORM_BLOCK = 145, + VK_FORMAT_BC7_SRGB_BLOCK = 146, + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147, + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148, + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149, + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150, + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151, + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152, + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153, + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154, + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155, + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156, + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157, + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158, + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159, + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160, + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161, + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162, + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163, + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164, + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165, + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166, + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167, + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168, + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169, + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170, + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171, + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172, + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173, + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174, + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175, + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176, + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177, + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178, + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179, + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180, + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181, + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182, + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183, + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184, + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000, + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001, + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002, + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003, + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004, + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005, + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006, + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007, + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008, + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009, + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010, + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016, + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017, + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018, + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019, + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020, + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026, + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027, + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028, + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029, + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030, + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031, + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032, + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033, + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002, + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003, + VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000, + VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001, + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000, + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001, + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013, + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003, + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004, + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005, + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK, + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM, + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM, + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, + VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16, + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16, + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, + VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16, + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16, + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM, + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM, + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16, + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16, + VK_FORMAT_MAX_ENUM = 0x7FFFFFFF +} VkFormat; + +typedef enum VkImageTiling { + VK_IMAGE_TILING_OPTIMAL = 0, + VK_IMAGE_TILING_LINEAR = 1, + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000, + VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF +} VkImageTiling; + +typedef enum VkImageType { + VK_IMAGE_TYPE_1D = 0, + VK_IMAGE_TYPE_2D = 1, + VK_IMAGE_TYPE_3D = 2, + VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkImageType; + +typedef enum VkPhysicalDeviceType { + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0, + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1, + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2, + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3, + VK_PHYSICAL_DEVICE_TYPE_CPU = 4, + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkPhysicalDeviceType; + +typedef enum VkQueryType { + VK_QUERY_TYPE_OCCLUSION = 0, + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, + VK_QUERY_TYPE_TIMESTAMP = 2, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000, +#endif + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000, +#endif + VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001, + VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkQueryType; + +typedef enum VkSharingMode { + VK_SHARING_MODE_EXCLUSIVE = 0, + VK_SHARING_MODE_CONCURRENT = 1, + VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSharingMode; + +typedef enum VkComponentSwizzle { + VK_COMPONENT_SWIZZLE_IDENTITY = 0, + VK_COMPONENT_SWIZZLE_ZERO = 1, + VK_COMPONENT_SWIZZLE_ONE = 2, + VK_COMPONENT_SWIZZLE_R = 3, + VK_COMPONENT_SWIZZLE_G = 4, + VK_COMPONENT_SWIZZLE_B = 5, + VK_COMPONENT_SWIZZLE_A = 6, + VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF +} VkComponentSwizzle; + +typedef enum VkImageViewType { + VK_IMAGE_VIEW_TYPE_1D = 0, + VK_IMAGE_VIEW_TYPE_2D = 1, + VK_IMAGE_VIEW_TYPE_3D = 2, + VK_IMAGE_VIEW_TYPE_CUBE = 3, + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkImageViewType; + +typedef enum VkBlendFactor { + VK_BLEND_FACTOR_ZERO = 0, + VK_BLEND_FACTOR_ONE = 1, + VK_BLEND_FACTOR_SRC_COLOR = 2, + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3, + VK_BLEND_FACTOR_DST_COLOR = 4, + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5, + VK_BLEND_FACTOR_SRC_ALPHA = 6, + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7, + VK_BLEND_FACTOR_DST_ALPHA = 8, + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9, + VK_BLEND_FACTOR_CONSTANT_COLOR = 10, + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11, + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12, + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13, + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14, + VK_BLEND_FACTOR_SRC1_COLOR = 15, + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16, + VK_BLEND_FACTOR_SRC1_ALPHA = 17, + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18, + VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF +} VkBlendFactor; + +typedef enum VkBlendOp { + VK_BLEND_OP_ADD = 0, + VK_BLEND_OP_SUBTRACT = 1, + VK_BLEND_OP_REVERSE_SUBTRACT = 2, + VK_BLEND_OP_MIN = 3, + VK_BLEND_OP_MAX = 4, + VK_BLEND_OP_ZERO_EXT = 1000148000, + VK_BLEND_OP_SRC_EXT = 1000148001, + VK_BLEND_OP_DST_EXT = 1000148002, + VK_BLEND_OP_SRC_OVER_EXT = 1000148003, + VK_BLEND_OP_DST_OVER_EXT = 1000148004, + VK_BLEND_OP_SRC_IN_EXT = 1000148005, + VK_BLEND_OP_DST_IN_EXT = 1000148006, + VK_BLEND_OP_SRC_OUT_EXT = 1000148007, + VK_BLEND_OP_DST_OUT_EXT = 1000148008, + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009, + VK_BLEND_OP_DST_ATOP_EXT = 1000148010, + VK_BLEND_OP_XOR_EXT = 1000148011, + VK_BLEND_OP_MULTIPLY_EXT = 1000148012, + VK_BLEND_OP_SCREEN_EXT = 1000148013, + VK_BLEND_OP_OVERLAY_EXT = 1000148014, + VK_BLEND_OP_DARKEN_EXT = 1000148015, + VK_BLEND_OP_LIGHTEN_EXT = 1000148016, + VK_BLEND_OP_COLORDODGE_EXT = 1000148017, + VK_BLEND_OP_COLORBURN_EXT = 1000148018, + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019, + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020, + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021, + VK_BLEND_OP_EXCLUSION_EXT = 1000148022, + VK_BLEND_OP_INVERT_EXT = 1000148023, + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024, + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025, + VK_BLEND_OP_LINEARBURN_EXT = 1000148026, + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027, + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028, + VK_BLEND_OP_PINLIGHT_EXT = 1000148029, + VK_BLEND_OP_HARDMIX_EXT = 1000148030, + VK_BLEND_OP_HSL_HUE_EXT = 1000148031, + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032, + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033, + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034, + VK_BLEND_OP_PLUS_EXT = 1000148035, + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036, + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037, + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038, + VK_BLEND_OP_MINUS_EXT = 1000148039, + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040, + VK_BLEND_OP_CONTRAST_EXT = 1000148041, + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042, + VK_BLEND_OP_RED_EXT = 1000148043, + VK_BLEND_OP_GREEN_EXT = 1000148044, + VK_BLEND_OP_BLUE_EXT = 1000148045, + VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF +} VkBlendOp; + +typedef enum VkCompareOp { + VK_COMPARE_OP_NEVER = 0, + VK_COMPARE_OP_LESS = 1, + VK_COMPARE_OP_EQUAL = 2, + VK_COMPARE_OP_LESS_OR_EQUAL = 3, + VK_COMPARE_OP_GREATER = 4, + VK_COMPARE_OP_NOT_EQUAL = 5, + VK_COMPARE_OP_GREATER_OR_EQUAL = 6, + VK_COMPARE_OP_ALWAYS = 7, + VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF +} VkCompareOp; + +typedef enum VkDynamicState { + VK_DYNAMIC_STATE_VIEWPORT = 0, + VK_DYNAMIC_STATE_SCISSOR = 1, + VK_DYNAMIC_STATE_LINE_WIDTH = 2, + VK_DYNAMIC_STATE_DEPTH_BIAS = 3, + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4, + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5, + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6, + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7, + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8, + VK_DYNAMIC_STATE_CULL_MODE = 1000267000, + VK_DYNAMIC_STATE_FRONT_FACE = 1000267001, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010, + VK_DYNAMIC_STATE_STENCIL_OP = 1000267011, + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001, + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002, + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004, + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000, + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000, + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000, + VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000, + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004, + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006, + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001, + VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000, + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000, + VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000, + VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000, + VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003, + VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000, + VK_DYNAMIC_STATE_CULL_MODE_EXT = VK_DYNAMIC_STATE_CULL_MODE, + VK_DYNAMIC_STATE_FRONT_FACE_EXT = VK_DYNAMIC_STATE_FRONT_FACE, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, + VK_DYNAMIC_STATE_STENCIL_OP_EXT = VK_DYNAMIC_STATE_STENCIL_OP, + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE, + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE, + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, + VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF +} VkDynamicState; + +typedef enum VkFrontFace { + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, + VK_FRONT_FACE_CLOCKWISE = 1, + VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF +} VkFrontFace; + +typedef enum VkVertexInputRate { + VK_VERTEX_INPUT_RATE_VERTEX = 0, + VK_VERTEX_INPUT_RATE_INSTANCE = 1, + VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF +} VkVertexInputRate; + +typedef enum VkPrimitiveTopology { + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF +} VkPrimitiveTopology; + +typedef enum VkPolygonMode { + VK_POLYGON_MODE_FILL = 0, + VK_POLYGON_MODE_LINE = 1, + VK_POLYGON_MODE_POINT = 2, + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000, + VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF +} VkPolygonMode; + +typedef enum VkStencilOp { + VK_STENCIL_OP_KEEP = 0, + VK_STENCIL_OP_ZERO = 1, + VK_STENCIL_OP_REPLACE = 2, + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, + VK_STENCIL_OP_INVERT = 5, + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7, + VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF +} VkStencilOp; + +typedef enum VkLogicOp { + VK_LOGIC_OP_CLEAR = 0, + VK_LOGIC_OP_AND = 1, + VK_LOGIC_OP_AND_REVERSE = 2, + VK_LOGIC_OP_COPY = 3, + VK_LOGIC_OP_AND_INVERTED = 4, + VK_LOGIC_OP_NO_OP = 5, + VK_LOGIC_OP_XOR = 6, + VK_LOGIC_OP_OR = 7, + VK_LOGIC_OP_NOR = 8, + VK_LOGIC_OP_EQUIVALENT = 9, + VK_LOGIC_OP_INVERT = 10, + VK_LOGIC_OP_OR_REVERSE = 11, + VK_LOGIC_OP_COPY_INVERTED = 12, + VK_LOGIC_OP_OR_INVERTED = 13, + VK_LOGIC_OP_NAND = 14, + VK_LOGIC_OP_SET = 15, + VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF +} VkLogicOp; + +typedef enum VkBorderColor { + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0, + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1, + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2, + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3, + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4, + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5, + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003, + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004, + VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF +} VkBorderColor; + +typedef enum VkFilter { + VK_FILTER_NEAREST = 0, + VK_FILTER_LINEAR = 1, + VK_FILTER_CUBIC_IMG = 1000015000, + VK_FILTER_CUBIC_EXT = VK_FILTER_CUBIC_IMG, + VK_FILTER_MAX_ENUM = 0x7FFFFFFF +} VkFilter; + +typedef enum VkSamplerAddressMode { + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0, + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1, + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2, + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3, + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4, + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerAddressMode; + +typedef enum VkSamplerMipmapMode { + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerMipmapMode; + +typedef enum VkDescriptorType { + VK_DESCRIPTOR_TYPE_SAMPLER = 0, + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1, + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2, + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3, + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4, + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9, + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10, + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK = 1000138000, + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, + VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000, + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, + VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorType; + +typedef enum VkAttachmentLoadOp { + VK_ATTACHMENT_LOAD_OP_LOAD = 0, + VK_ATTACHMENT_LOAD_OP_CLEAR = 1, + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2, + VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000, + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF +} VkAttachmentLoadOp; + +typedef enum VkAttachmentStoreOp { + VK_ATTACHMENT_STORE_OP_STORE = 0, + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1, + VK_ATTACHMENT_STORE_OP_NONE = 1000301000, + VK_ATTACHMENT_STORE_OP_NONE_KHR = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_NONE_QCOM = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_NONE_EXT = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF +} VkAttachmentStoreOp; + +typedef enum VkPipelineBindPoint { + VK_PIPELINE_BIND_POINT_GRAPHICS = 0, + VK_PIPELINE_BIND_POINT_COMPUTE = 1, + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000, + VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003, + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, + VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF +} VkPipelineBindPoint; + +typedef enum VkCommandBufferLevel { + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0, + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1, + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF +} VkCommandBufferLevel; + +typedef enum VkIndexType { + VK_INDEX_TYPE_UINT16 = 0, + VK_INDEX_TYPE_UINT32 = 1, + VK_INDEX_TYPE_NONE_KHR = 1000165000, + VK_INDEX_TYPE_UINT8_EXT = 1000265000, + VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR, + VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkIndexType; + +typedef enum VkSubpassContents { + VK_SUBPASS_CONTENTS_INLINE = 0, + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1, + VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF +} VkSubpassContents; + +typedef enum VkAccessFlagBits { + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, + VK_ACCESS_INDEX_READ_BIT = 0x00000002, + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, + VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, + VK_ACCESS_SHADER_READ_BIT = 0x00000020, + VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, + VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, + VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, + VK_ACCESS_HOST_READ_BIT = 0x00002000, + VK_ACCESS_HOST_WRITE_BIT = 0x00004000, + VK_ACCESS_MEMORY_READ_BIT = 0x00008000, + VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, + VK_ACCESS_NONE = 0, + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000, + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000, + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000, + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000, + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000, + VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000, + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000, + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000, + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR, + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, + VK_ACCESS_NONE_KHR = VK_ACCESS_NONE, + VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkAccessFlagBits; +typedef VkFlags VkAccessFlags; + +typedef enum VkImageAspectFlagBits { + VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, + VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, + VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, + VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, + VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010, + VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020, + VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040, + VK_IMAGE_ASPECT_NONE = 0, + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080, + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100, + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200, + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400, + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT, + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT, + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT, + VK_IMAGE_ASPECT_NONE_KHR = VK_IMAGE_ASPECT_NONE, + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageAspectFlagBits; +typedef VkFlags VkImageAspectFlags; + +typedef enum VkFormatFeatureFlagBits { + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, + VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000, + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000, + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000, + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000, + VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000, + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000, +#endif + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000, + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000, + VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000, +#endif + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT, + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT, + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG, + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFormatFeatureFlagBits; +typedef VkFlags VkFormatFeatureFlags; + +typedef enum VkImageCreateFlagBits { + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004, + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, + VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400, + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040, + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020, + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080, + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100, + VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800, + VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200, + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000, + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000, + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000, + VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 0x00020000, + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 0x00008000, + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT, + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT, + VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT, + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageCreateFlagBits; +typedef VkFlags VkImageCreateFlags; + +typedef enum VkSampleCountFlagBits { + VK_SAMPLE_COUNT_1_BIT = 0x00000001, + VK_SAMPLE_COUNT_2_BIT = 0x00000002, + VK_SAMPLE_COUNT_4_BIT = 0x00000004, + VK_SAMPLE_COUNT_8_BIT = 0x00000008, + VK_SAMPLE_COUNT_16_BIT = 0x00000010, + VK_SAMPLE_COUNT_32_BIT = 0x00000020, + VK_SAMPLE_COUNT_64_BIT = 0x00000040, + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSampleCountFlagBits; +typedef VkFlags VkSampleCountFlags; + +typedef enum VkImageUsageFlagBits { + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, + VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, + VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000, +#endif + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200, + VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00004000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0x00008000, +#endif + VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0x00040000, + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageUsageFlagBits; +typedef VkFlags VkImageUsageFlags; + +typedef enum VkInstanceCreateFlagBits { + VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 0x00000001, + VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkInstanceCreateFlagBits; +typedef VkFlags VkInstanceCreateFlags; + +typedef enum VkMemoryHeapFlagBits { + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002, + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryHeapFlagBits; +typedef VkFlags VkMemoryHeapFlags; + +typedef enum VkMemoryPropertyFlagBits { + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002, + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004, + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008, + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010, + VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020, + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040, + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080, + VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100, + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryPropertyFlagBits; +typedef VkFlags VkMemoryPropertyFlags; + +typedef enum VkQueueFlagBits { + VK_QUEUE_GRAPHICS_BIT = 0x00000001, + VK_QUEUE_COMPUTE_BIT = 0x00000002, + VK_QUEUE_TRANSFER_BIT = 0x00000004, + VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, + VK_QUEUE_PROTECTED_BIT = 0x00000010, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040, +#endif + VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueueFlagBits; +typedef VkFlags VkQueueFlags; +typedef VkFlags VkDeviceCreateFlags; + +typedef enum VkDeviceQueueCreateFlagBits { + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001, + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDeviceQueueCreateFlagBits; +typedef VkFlags VkDeviceQueueCreateFlags; + +typedef enum VkPipelineStageFlagBits { + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, + VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000, + VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, + VK_PIPELINE_STAGE_NONE = 0, + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000, + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000, + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000, + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000, + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000, + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000, + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000, + VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000, + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000, + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, + VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE, + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineStageFlagBits; +typedef VkFlags VkPipelineStageFlags; +typedef VkFlags VkMemoryMapFlags; + +typedef enum VkSparseMemoryBindFlagBits { + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSparseMemoryBindFlagBits; +typedef VkFlags VkSparseMemoryBindFlags; + +typedef enum VkSparseImageFormatFlagBits { + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002, + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSparseImageFormatFlagBits; +typedef VkFlags VkSparseImageFormatFlags; + +typedef enum VkFenceCreateFlagBits { + VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFenceCreateFlagBits; +typedef VkFlags VkFenceCreateFlags; +typedef VkFlags VkSemaphoreCreateFlags; + +typedef enum VkEventCreateFlagBits { + VK_EVENT_CREATE_DEVICE_ONLY_BIT = 0x00000001, + VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT, + VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkEventCreateFlagBits; +typedef VkFlags VkEventCreateFlags; + +typedef enum VkQueryPipelineStatisticFlagBits { + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryPipelineStatisticFlagBits; +typedef VkFlags VkQueryPipelineStatisticFlags; +typedef VkFlags VkQueryPoolCreateFlags; + +typedef enum VkQueryResultFlagBits { + VK_QUERY_RESULT_64_BIT = 0x00000001, + VK_QUERY_RESULT_WAIT_BIT = 0x00000002, + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, + VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010, +#endif + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryResultFlagBits; +typedef VkFlags VkQueryResultFlags; + +typedef enum VkBufferCreateFlagBits { + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, + VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkBufferCreateFlagBits; +typedef VkFlags VkBufferCreateFlags; + +typedef enum VkBufferUsageFlagBits { + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000, +#endif + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000, + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, + VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000, + VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000, + VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000, +#endif + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkBufferUsageFlagBits; +typedef VkFlags VkBufferUsageFlags; +typedef VkFlags VkBufferViewCreateFlags; + +typedef enum VkImageViewCreateFlagBits { + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001, + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0x00000002, + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageViewCreateFlagBits; +typedef VkFlags VkImageViewCreateFlags; +typedef VkFlags VkShaderModuleCreateFlags; + +typedef enum VkPipelineCacheCreateFlagBits { + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001, + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheCreateFlagBits; +typedef VkFlags VkPipelineCacheCreateFlags; + +typedef enum VkColorComponentFlagBits { + VK_COLOR_COMPONENT_R_BIT = 0x00000001, + VK_COLOR_COMPONENT_G_BIT = 0x00000002, + VK_COLOR_COMPONENT_B_BIT = 0x00000004, + VK_COLOR_COMPONENT_A_BIT = 0x00000008, + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkColorComponentFlagBits; +typedef VkFlags VkColorComponentFlags; + +typedef enum VkPipelineCreateFlagBits { + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004, + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008, + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010, + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0x00000100, + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 0x00000200, + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000, + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000, + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000, + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000, + VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000, + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020, + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040, + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080, + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00040000, + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0x00000800, + VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000, + VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400, + VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000, + VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE, + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT, + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT, + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCreateFlagBits; +typedef VkFlags VkPipelineCreateFlags; + +typedef enum VkPipelineShaderStageCreateFlagBits { + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 0x00000001, + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 0x00000002, + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT, + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineShaderStageCreateFlagBits; +typedef VkFlags VkPipelineShaderStageCreateFlags; + +typedef enum VkShaderStageFlagBits { + VK_SHADER_STAGE_VERTEX_BIT = 0x00000001, + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002, + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004, + VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008, + VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010, + VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020, + VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, + VK_SHADER_STAGE_ALL = 0x7FFFFFFF, + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0x00000100, + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200, + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400, + VK_SHADER_STAGE_MISS_BIT_KHR = 0x00000800, + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000, + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000, + VK_SHADER_STAGE_TASK_BIT_NV = 0x00000040, + VK_SHADER_STAGE_MESH_BIT_NV = 0x00000080, + VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000, + VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR, + VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR, + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, + VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR, + VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR, + VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR, + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkShaderStageFlagBits; + +typedef enum VkCullModeFlagBits { + VK_CULL_MODE_NONE = 0, + VK_CULL_MODE_FRONT_BIT = 0x00000001, + VK_CULL_MODE_BACK_BIT = 0x00000002, + VK_CULL_MODE_FRONT_AND_BACK = 0x00000003, + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCullModeFlagBits; +typedef VkFlags VkCullModeFlags; +typedef VkFlags VkPipelineVertexInputStateCreateFlags; +typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; +typedef VkFlags VkPipelineTessellationStateCreateFlags; +typedef VkFlags VkPipelineViewportStateCreateFlags; +typedef VkFlags VkPipelineRasterizationStateCreateFlags; +typedef VkFlags VkPipelineMultisampleStateCreateFlags; + +typedef enum VkPipelineDepthStencilStateCreateFlagBits { + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = 0x00000001, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = 0x00000002, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineDepthStencilStateCreateFlagBits; +typedef VkFlags VkPipelineDepthStencilStateCreateFlags; + +typedef enum VkPipelineColorBlendStateCreateFlagBits { + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM = 0x00000001, + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineColorBlendStateCreateFlagBits; +typedef VkFlags VkPipelineColorBlendStateCreateFlags; +typedef VkFlags VkPipelineDynamicStateCreateFlags; + +typedef enum VkPipelineLayoutCreateFlagBits { + VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = 0x00000002, + VK_PIPELINE_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineLayoutCreateFlagBits; +typedef VkFlags VkPipelineLayoutCreateFlags; +typedef VkFlags VkShaderStageFlags; + +typedef enum VkSamplerCreateFlagBits { + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0x00000001, + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002, + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSamplerCreateFlagBits; +typedef VkFlags VkSamplerCreateFlags; + +typedef enum VkDescriptorPoolCreateFlagBits { + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001, + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002, + VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 0x00000004, + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorPoolCreateFlagBits; +typedef VkFlags VkDescriptorPoolCreateFlags; +typedef VkFlags VkDescriptorPoolResetFlags; + +typedef enum VkDescriptorSetLayoutCreateFlagBits { + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = 0x00000004, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorSetLayoutCreateFlagBits; +typedef VkFlags VkDescriptorSetLayoutCreateFlags; + +typedef enum VkAttachmentDescriptionFlagBits { + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkAttachmentDescriptionFlagBits; +typedef VkFlags VkAttachmentDescriptionFlags; + +typedef enum VkDependencyFlagBits { + VK_DEPENDENCY_BY_REGION_BIT = 0x00000001, + VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004, + VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002, + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT, + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT, + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDependencyFlagBits; +typedef VkFlags VkDependencyFlags; + +typedef enum VkFramebufferCreateFlagBits { + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001, + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFramebufferCreateFlagBits; +typedef VkFlags VkFramebufferCreateFlags; + +typedef enum VkRenderPassCreateFlagBits { + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0x00000002, + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkRenderPassCreateFlagBits; +typedef VkFlags VkRenderPassCreateFlags; + +typedef enum VkSubpassDescriptionFlagBits { + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001, + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002, + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 0x00000004, + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0x00000008, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM = 0x00000010, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = 0x00000020, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = 0x00000040, + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubpassDescriptionFlagBits; +typedef VkFlags VkSubpassDescriptionFlags; + +typedef enum VkCommandPoolCreateFlagBits { + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004, + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandPoolCreateFlagBits; +typedef VkFlags VkCommandPoolCreateFlags; + +typedef enum VkCommandPoolResetFlagBits { + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandPoolResetFlagBits; +typedef VkFlags VkCommandPoolResetFlags; + +typedef enum VkCommandBufferUsageFlagBits { + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001, + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002, + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004, + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandBufferUsageFlagBits; +typedef VkFlags VkCommandBufferUsageFlags; + +typedef enum VkQueryControlFlagBits { + VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001, + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryControlFlagBits; +typedef VkFlags VkQueryControlFlags; + +typedef enum VkCommandBufferResetFlagBits { + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandBufferResetFlagBits; +typedef VkFlags VkCommandBufferResetFlags; + +typedef enum VkStencilFaceFlagBits { + VK_STENCIL_FACE_FRONT_BIT = 0x00000001, + VK_STENCIL_FACE_BACK_BIT = 0x00000002, + VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003, + VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK, + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkStencilFaceFlagBits; +typedef VkFlags VkStencilFaceFlags; +typedef struct VkExtent2D { + uint32_t width; + uint32_t height; +} VkExtent2D; + +typedef struct VkExtent3D { + uint32_t width; + uint32_t height; + uint32_t depth; +} VkExtent3D; + +typedef struct VkOffset2D { + int32_t x; + int32_t y; +} VkOffset2D; + +typedef struct VkOffset3D { + int32_t x; + int32_t y; + int32_t z; +} VkOffset3D; + +typedef struct VkRect2D { + VkOffset2D offset; + VkExtent2D extent; +} VkRect2D; + +typedef struct VkBaseInStructure { + VkStructureType sType; + const struct VkBaseInStructure* pNext; +} VkBaseInStructure; + +typedef struct VkBaseOutStructure { + VkStructureType sType; + struct VkBaseOutStructure* pNext; +} VkBaseOutStructure; + +typedef struct VkBufferMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier; + +typedef struct VkDispatchIndirectCommand { + uint32_t x; + uint32_t y; + uint32_t z; +} VkDispatchIndirectCommand; + +typedef struct VkDrawIndexedIndirectCommand { + uint32_t indexCount; + uint32_t instanceCount; + uint32_t firstIndex; + int32_t vertexOffset; + uint32_t firstInstance; +} VkDrawIndexedIndirectCommand; + +typedef struct VkDrawIndirectCommand { + uint32_t vertexCount; + uint32_t instanceCount; + uint32_t firstVertex; + uint32_t firstInstance; +} VkDrawIndirectCommand; + +typedef struct VkImageSubresourceRange { + VkImageAspectFlags aspectMask; + uint32_t baseMipLevel; + uint32_t levelCount; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkImageSubresourceRange; + +typedef struct VkImageMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier; + +typedef struct VkMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; +} VkMemoryBarrier; + +typedef struct VkPipelineCacheHeaderVersionOne { + uint32_t headerSize; + VkPipelineCacheHeaderVersion headerVersion; + uint32_t vendorID; + uint32_t deviceID; + uint8_t pipelineCacheUUID[VK_UUID_SIZE]; +} VkPipelineCacheHeaderVersionOne; + +typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( + void* pUserData, + size_t size, + size_t alignment, + VkSystemAllocationScope allocationScope); + +typedef void (VKAPI_PTR *PFN_vkFreeFunction)( + void* pUserData, + void* pMemory); + +typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( + void* pUserData, + size_t size, + VkInternalAllocationType allocationType, + VkSystemAllocationScope allocationScope); + +typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)( + void* pUserData, + size_t size, + VkInternalAllocationType allocationType, + VkSystemAllocationScope allocationScope); + +typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( + void* pUserData, + void* pOriginal, + size_t size, + size_t alignment, + VkSystemAllocationScope allocationScope); + +typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); +typedef struct VkAllocationCallbacks { + void* pUserData; + PFN_vkAllocationFunction pfnAllocation; + PFN_vkReallocationFunction pfnReallocation; + PFN_vkFreeFunction pfnFree; + PFN_vkInternalAllocationNotification pfnInternalAllocation; + PFN_vkInternalFreeNotification pfnInternalFree; +} VkAllocationCallbacks; + +typedef struct VkApplicationInfo { + VkStructureType sType; + const void* pNext; + const char* pApplicationName; + uint32_t applicationVersion; + const char* pEngineName; + uint32_t engineVersion; + uint32_t apiVersion; +} VkApplicationInfo; + +typedef struct VkFormatProperties { + VkFormatFeatureFlags linearTilingFeatures; + VkFormatFeatureFlags optimalTilingFeatures; + VkFormatFeatureFlags bufferFeatures; +} VkFormatProperties; + +typedef struct VkImageFormatProperties { + VkExtent3D maxExtent; + uint32_t maxMipLevels; + uint32_t maxArrayLayers; + VkSampleCountFlags sampleCounts; + VkDeviceSize maxResourceSize; +} VkImageFormatProperties; + +typedef struct VkInstanceCreateInfo { + VkStructureType sType; + const void* pNext; + VkInstanceCreateFlags flags; + const VkApplicationInfo* pApplicationInfo; + uint32_t enabledLayerCount; + const char* const* ppEnabledLayerNames; + uint32_t enabledExtensionCount; + const char* const* ppEnabledExtensionNames; +} VkInstanceCreateInfo; + +typedef struct VkMemoryHeap { + VkDeviceSize size; + VkMemoryHeapFlags flags; +} VkMemoryHeap; + +typedef struct VkMemoryType { + VkMemoryPropertyFlags propertyFlags; + uint32_t heapIndex; +} VkMemoryType; + +typedef struct VkPhysicalDeviceFeatures { + VkBool32 robustBufferAccess; + VkBool32 fullDrawIndexUint32; + VkBool32 imageCubeArray; + VkBool32 independentBlend; + VkBool32 geometryShader; + VkBool32 tessellationShader; + VkBool32 sampleRateShading; + VkBool32 dualSrcBlend; + VkBool32 logicOp; + VkBool32 multiDrawIndirect; + VkBool32 drawIndirectFirstInstance; + VkBool32 depthClamp; + VkBool32 depthBiasClamp; + VkBool32 fillModeNonSolid; + VkBool32 depthBounds; + VkBool32 wideLines; + VkBool32 largePoints; + VkBool32 alphaToOne; + VkBool32 multiViewport; + VkBool32 samplerAnisotropy; + VkBool32 textureCompressionETC2; + VkBool32 textureCompressionASTC_LDR; + VkBool32 textureCompressionBC; + VkBool32 occlusionQueryPrecise; + VkBool32 pipelineStatisticsQuery; + VkBool32 vertexPipelineStoresAndAtomics; + VkBool32 fragmentStoresAndAtomics; + VkBool32 shaderTessellationAndGeometryPointSize; + VkBool32 shaderImageGatherExtended; + VkBool32 shaderStorageImageExtendedFormats; + VkBool32 shaderStorageImageMultisample; + VkBool32 shaderStorageImageReadWithoutFormat; + VkBool32 shaderStorageImageWriteWithoutFormat; + VkBool32 shaderUniformBufferArrayDynamicIndexing; + VkBool32 shaderSampledImageArrayDynamicIndexing; + VkBool32 shaderStorageBufferArrayDynamicIndexing; + VkBool32 shaderStorageImageArrayDynamicIndexing; + VkBool32 shaderClipDistance; + VkBool32 shaderCullDistance; + VkBool32 shaderFloat64; + VkBool32 shaderInt64; + VkBool32 shaderInt16; + VkBool32 shaderResourceResidency; + VkBool32 shaderResourceMinLod; + VkBool32 sparseBinding; + VkBool32 sparseResidencyBuffer; + VkBool32 sparseResidencyImage2D; + VkBool32 sparseResidencyImage3D; + VkBool32 sparseResidency2Samples; + VkBool32 sparseResidency4Samples; + VkBool32 sparseResidency8Samples; + VkBool32 sparseResidency16Samples; + VkBool32 sparseResidencyAliased; + VkBool32 variableMultisampleRate; + VkBool32 inheritedQueries; +} VkPhysicalDeviceFeatures; + +typedef struct VkPhysicalDeviceLimits { + uint32_t maxImageDimension1D; + uint32_t maxImageDimension2D; + uint32_t maxImageDimension3D; + uint32_t maxImageDimensionCube; + uint32_t maxImageArrayLayers; + uint32_t maxTexelBufferElements; + uint32_t maxUniformBufferRange; + uint32_t maxStorageBufferRange; + uint32_t maxPushConstantsSize; + uint32_t maxMemoryAllocationCount; + uint32_t maxSamplerAllocationCount; + VkDeviceSize bufferImageGranularity; + VkDeviceSize sparseAddressSpaceSize; + uint32_t maxBoundDescriptorSets; + uint32_t maxPerStageDescriptorSamplers; + uint32_t maxPerStageDescriptorUniformBuffers; + uint32_t maxPerStageDescriptorStorageBuffers; + uint32_t maxPerStageDescriptorSampledImages; + uint32_t maxPerStageDescriptorStorageImages; + uint32_t maxPerStageDescriptorInputAttachments; + uint32_t maxPerStageResources; + uint32_t maxDescriptorSetSamplers; + uint32_t maxDescriptorSetUniformBuffers; + uint32_t maxDescriptorSetUniformBuffersDynamic; + uint32_t maxDescriptorSetStorageBuffers; + uint32_t maxDescriptorSetStorageBuffersDynamic; + uint32_t maxDescriptorSetSampledImages; + uint32_t maxDescriptorSetStorageImages; + uint32_t maxDescriptorSetInputAttachments; + uint32_t maxVertexInputAttributes; + uint32_t maxVertexInputBindings; + uint32_t maxVertexInputAttributeOffset; + uint32_t maxVertexInputBindingStride; + uint32_t maxVertexOutputComponents; + uint32_t maxTessellationGenerationLevel; + uint32_t maxTessellationPatchSize; + uint32_t maxTessellationControlPerVertexInputComponents; + uint32_t maxTessellationControlPerVertexOutputComponents; + uint32_t maxTessellationControlPerPatchOutputComponents; + uint32_t maxTessellationControlTotalOutputComponents; + uint32_t maxTessellationEvaluationInputComponents; + uint32_t maxTessellationEvaluationOutputComponents; + uint32_t maxGeometryShaderInvocations; + uint32_t maxGeometryInputComponents; + uint32_t maxGeometryOutputComponents; + uint32_t maxGeometryOutputVertices; + uint32_t maxGeometryTotalOutputComponents; + uint32_t maxFragmentInputComponents; + uint32_t maxFragmentOutputAttachments; + uint32_t maxFragmentDualSrcAttachments; + uint32_t maxFragmentCombinedOutputResources; + uint32_t maxComputeSharedMemorySize; + uint32_t maxComputeWorkGroupCount[3]; + uint32_t maxComputeWorkGroupInvocations; + uint32_t maxComputeWorkGroupSize[3]; + uint32_t subPixelPrecisionBits; + uint32_t subTexelPrecisionBits; + uint32_t mipmapPrecisionBits; + uint32_t maxDrawIndexedIndexValue; + uint32_t maxDrawIndirectCount; + float maxSamplerLodBias; + float maxSamplerAnisotropy; + uint32_t maxViewports; + uint32_t maxViewportDimensions[2]; + float viewportBoundsRange[2]; + uint32_t viewportSubPixelBits; + size_t minMemoryMapAlignment; + VkDeviceSize minTexelBufferOffsetAlignment; + VkDeviceSize minUniformBufferOffsetAlignment; + VkDeviceSize minStorageBufferOffsetAlignment; + int32_t minTexelOffset; + uint32_t maxTexelOffset; + int32_t minTexelGatherOffset; + uint32_t maxTexelGatherOffset; + float minInterpolationOffset; + float maxInterpolationOffset; + uint32_t subPixelInterpolationOffsetBits; + uint32_t maxFramebufferWidth; + uint32_t maxFramebufferHeight; + uint32_t maxFramebufferLayers; + VkSampleCountFlags framebufferColorSampleCounts; + VkSampleCountFlags framebufferDepthSampleCounts; + VkSampleCountFlags framebufferStencilSampleCounts; + VkSampleCountFlags framebufferNoAttachmentsSampleCounts; + uint32_t maxColorAttachments; + VkSampleCountFlags sampledImageColorSampleCounts; + VkSampleCountFlags sampledImageIntegerSampleCounts; + VkSampleCountFlags sampledImageDepthSampleCounts; + VkSampleCountFlags sampledImageStencilSampleCounts; + VkSampleCountFlags storageImageSampleCounts; + uint32_t maxSampleMaskWords; + VkBool32 timestampComputeAndGraphics; + float timestampPeriod; + uint32_t maxClipDistances; + uint32_t maxCullDistances; + uint32_t maxCombinedClipAndCullDistances; + uint32_t discreteQueuePriorities; + float pointSizeRange[2]; + float lineWidthRange[2]; + float pointSizeGranularity; + float lineWidthGranularity; + VkBool32 strictLines; + VkBool32 standardSampleLocations; + VkDeviceSize optimalBufferCopyOffsetAlignment; + VkDeviceSize optimalBufferCopyRowPitchAlignment; + VkDeviceSize nonCoherentAtomSize; +} VkPhysicalDeviceLimits; + +typedef struct VkPhysicalDeviceMemoryProperties { + uint32_t memoryTypeCount; + VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]; + uint32_t memoryHeapCount; + VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS]; +} VkPhysicalDeviceMemoryProperties; + +typedef struct VkPhysicalDeviceSparseProperties { + VkBool32 residencyStandard2DBlockShape; + VkBool32 residencyStandard2DMultisampleBlockShape; + VkBool32 residencyStandard3DBlockShape; + VkBool32 residencyAlignedMipSize; + VkBool32 residencyNonResidentStrict; +} VkPhysicalDeviceSparseProperties; + +typedef struct VkPhysicalDeviceProperties { + uint32_t apiVersion; + uint32_t driverVersion; + uint32_t vendorID; + uint32_t deviceID; + VkPhysicalDeviceType deviceType; + char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]; + uint8_t pipelineCacheUUID[VK_UUID_SIZE]; + VkPhysicalDeviceLimits limits; + VkPhysicalDeviceSparseProperties sparseProperties; +} VkPhysicalDeviceProperties; + +typedef struct VkQueueFamilyProperties { + VkQueueFlags queueFlags; + uint32_t queueCount; + uint32_t timestampValidBits; + VkExtent3D minImageTransferGranularity; +} VkQueueFamilyProperties; + +typedef struct VkDeviceQueueCreateInfo { + VkStructureType sType; + const void* pNext; + VkDeviceQueueCreateFlags flags; + uint32_t queueFamilyIndex; + uint32_t queueCount; + const float* pQueuePriorities; +} VkDeviceQueueCreateInfo; + +typedef struct VkDeviceCreateInfo { + VkStructureType sType; + const void* pNext; + VkDeviceCreateFlags flags; + uint32_t queueCreateInfoCount; + const VkDeviceQueueCreateInfo* pQueueCreateInfos; + uint32_t enabledLayerCount; + const char* const* ppEnabledLayerNames; + uint32_t enabledExtensionCount; + const char* const* ppEnabledExtensionNames; + const VkPhysicalDeviceFeatures* pEnabledFeatures; +} VkDeviceCreateInfo; + +typedef struct VkExtensionProperties { + char extensionName[VK_MAX_EXTENSION_NAME_SIZE]; + uint32_t specVersion; +} VkExtensionProperties; + +typedef struct VkLayerProperties { + char layerName[VK_MAX_EXTENSION_NAME_SIZE]; + uint32_t specVersion; + uint32_t implementationVersion; + char description[VK_MAX_DESCRIPTION_SIZE]; +} VkLayerProperties; + +typedef struct VkSubmitInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore* pWaitSemaphores; + const VkPipelineStageFlags* pWaitDstStageMask; + uint32_t commandBufferCount; + const VkCommandBuffer* pCommandBuffers; + uint32_t signalSemaphoreCount; + const VkSemaphore* pSignalSemaphores; +} VkSubmitInfo; + +typedef struct VkMappedMemoryRange { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkDeviceSize offset; + VkDeviceSize size; +} VkMappedMemoryRange; + +typedef struct VkMemoryAllocateInfo { + VkStructureType sType; + const void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeIndex; +} VkMemoryAllocateInfo; + +typedef struct VkMemoryRequirements { + VkDeviceSize size; + VkDeviceSize alignment; + uint32_t memoryTypeBits; +} VkMemoryRequirements; + +typedef struct VkSparseMemoryBind { + VkDeviceSize resourceOffset; + VkDeviceSize size; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkSparseMemoryBindFlags flags; +} VkSparseMemoryBind; + +typedef struct VkSparseBufferMemoryBindInfo { + VkBuffer buffer; + uint32_t bindCount; + const VkSparseMemoryBind* pBinds; +} VkSparseBufferMemoryBindInfo; + +typedef struct VkSparseImageOpaqueMemoryBindInfo { + VkImage image; + uint32_t bindCount; + const VkSparseMemoryBind* pBinds; +} VkSparseImageOpaqueMemoryBindInfo; + +typedef struct VkImageSubresource { + VkImageAspectFlags aspectMask; + uint32_t mipLevel; + uint32_t arrayLayer; +} VkImageSubresource; + +typedef struct VkSparseImageMemoryBind { + VkImageSubresource subresource; + VkOffset3D offset; + VkExtent3D extent; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkSparseMemoryBindFlags flags; +} VkSparseImageMemoryBind; + +typedef struct VkSparseImageMemoryBindInfo { + VkImage image; + uint32_t bindCount; + const VkSparseImageMemoryBind* pBinds; +} VkSparseImageMemoryBindInfo; + +typedef struct VkBindSparseInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore* pWaitSemaphores; + uint32_t bufferBindCount; + const VkSparseBufferMemoryBindInfo* pBufferBinds; + uint32_t imageOpaqueBindCount; + const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds; + uint32_t imageBindCount; + const VkSparseImageMemoryBindInfo* pImageBinds; + uint32_t signalSemaphoreCount; + const VkSemaphore* pSignalSemaphores; +} VkBindSparseInfo; + +typedef struct VkSparseImageFormatProperties { + VkImageAspectFlags aspectMask; + VkExtent3D imageGranularity; + VkSparseImageFormatFlags flags; +} VkSparseImageFormatProperties; + +typedef struct VkSparseImageMemoryRequirements { + VkSparseImageFormatProperties formatProperties; + uint32_t imageMipTailFirstLod; + VkDeviceSize imageMipTailSize; + VkDeviceSize imageMipTailOffset; + VkDeviceSize imageMipTailStride; +} VkSparseImageMemoryRequirements; + +typedef struct VkFenceCreateInfo { + VkStructureType sType; + const void* pNext; + VkFenceCreateFlags flags; +} VkFenceCreateInfo; + +typedef struct VkSemaphoreCreateInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreCreateFlags flags; +} VkSemaphoreCreateInfo; + +typedef struct VkEventCreateInfo { + VkStructureType sType; + const void* pNext; + VkEventCreateFlags flags; +} VkEventCreateInfo; + +typedef struct VkQueryPoolCreateInfo { + VkStructureType sType; + const void* pNext; + VkQueryPoolCreateFlags flags; + VkQueryType queryType; + uint32_t queryCount; + VkQueryPipelineStatisticFlags pipelineStatistics; +} VkQueryPoolCreateInfo; + +typedef struct VkBufferCreateInfo { + VkStructureType sType; + const void* pNext; + VkBufferCreateFlags flags; + VkDeviceSize size; + VkBufferUsageFlags usage; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; +} VkBufferCreateInfo; + +typedef struct VkBufferViewCreateInfo { + VkStructureType sType; + const void* pNext; + VkBufferViewCreateFlags flags; + VkBuffer buffer; + VkFormat format; + VkDeviceSize offset; + VkDeviceSize range; +} VkBufferViewCreateInfo; + +typedef struct VkImageCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageCreateFlags flags; + VkImageType imageType; + VkFormat format; + VkExtent3D extent; + uint32_t mipLevels; + uint32_t arrayLayers; + VkSampleCountFlagBits samples; + VkImageTiling tiling; + VkImageUsageFlags usage; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; + VkImageLayout initialLayout; +} VkImageCreateInfo; + +typedef struct VkSubresourceLayout { + VkDeviceSize offset; + VkDeviceSize size; + VkDeviceSize rowPitch; + VkDeviceSize arrayPitch; + VkDeviceSize depthPitch; +} VkSubresourceLayout; + +typedef struct VkComponentMapping { + VkComponentSwizzle r; + VkComponentSwizzle g; + VkComponentSwizzle b; + VkComponentSwizzle a; +} VkComponentMapping; + +typedef struct VkImageViewCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageViewCreateFlags flags; + VkImage image; + VkImageViewType viewType; + VkFormat format; + VkComponentMapping components; + VkImageSubresourceRange subresourceRange; +} VkImageViewCreateInfo; + +typedef struct VkShaderModuleCreateInfo { + VkStructureType sType; + const void* pNext; + VkShaderModuleCreateFlags flags; + size_t codeSize; + const uint32_t* pCode; +} VkShaderModuleCreateInfo; + +typedef struct VkPipelineCacheCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCacheCreateFlags flags; + size_t initialDataSize; + const void* pInitialData; +} VkPipelineCacheCreateInfo; + +typedef struct VkSpecializationMapEntry { + uint32_t constantID; + uint32_t offset; + size_t size; +} VkSpecializationMapEntry; + +typedef struct VkSpecializationInfo { + uint32_t mapEntryCount; + const VkSpecializationMapEntry* pMapEntries; + size_t dataSize; + const void* pData; +} VkSpecializationInfo; + +typedef struct VkPipelineShaderStageCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineShaderStageCreateFlags flags; + VkShaderStageFlagBits stage; + VkShaderModule module; + const char* pName; + const VkSpecializationInfo* pSpecializationInfo; +} VkPipelineShaderStageCreateInfo; + +typedef struct VkComputePipelineCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + VkPipelineShaderStageCreateInfo stage; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkComputePipelineCreateInfo; + +typedef struct VkVertexInputBindingDescription { + uint32_t binding; + uint32_t stride; + VkVertexInputRate inputRate; +} VkVertexInputBindingDescription; + +typedef struct VkVertexInputAttributeDescription { + uint32_t location; + uint32_t binding; + VkFormat format; + uint32_t offset; +} VkVertexInputAttributeDescription; + +typedef struct VkPipelineVertexInputStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineVertexInputStateCreateFlags flags; + uint32_t vertexBindingDescriptionCount; + const VkVertexInputBindingDescription* pVertexBindingDescriptions; + uint32_t vertexAttributeDescriptionCount; + const VkVertexInputAttributeDescription* pVertexAttributeDescriptions; +} VkPipelineVertexInputStateCreateInfo; + +typedef struct VkPipelineInputAssemblyStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineInputAssemblyStateCreateFlags flags; + VkPrimitiveTopology topology; + VkBool32 primitiveRestartEnable; +} VkPipelineInputAssemblyStateCreateInfo; + +typedef struct VkPipelineTessellationStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineTessellationStateCreateFlags flags; + uint32_t patchControlPoints; +} VkPipelineTessellationStateCreateInfo; + +typedef struct VkViewport { + float x; + float y; + float width; + float height; + float minDepth; + float maxDepth; +} VkViewport; + +typedef struct VkPipelineViewportStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineViewportStateCreateFlags flags; + uint32_t viewportCount; + const VkViewport* pViewports; + uint32_t scissorCount; + const VkRect2D* pScissors; +} VkPipelineViewportStateCreateInfo; + +typedef struct VkPipelineRasterizationStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationStateCreateFlags flags; + VkBool32 depthClampEnable; + VkBool32 rasterizerDiscardEnable; + VkPolygonMode polygonMode; + VkCullModeFlags cullMode; + VkFrontFace frontFace; + VkBool32 depthBiasEnable; + float depthBiasConstantFactor; + float depthBiasClamp; + float depthBiasSlopeFactor; + float lineWidth; +} VkPipelineRasterizationStateCreateInfo; + +typedef struct VkPipelineMultisampleStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineMultisampleStateCreateFlags flags; + VkSampleCountFlagBits rasterizationSamples; + VkBool32 sampleShadingEnable; + float minSampleShading; + const VkSampleMask* pSampleMask; + VkBool32 alphaToCoverageEnable; + VkBool32 alphaToOneEnable; +} VkPipelineMultisampleStateCreateInfo; + +typedef struct VkStencilOpState { + VkStencilOp failOp; + VkStencilOp passOp; + VkStencilOp depthFailOp; + VkCompareOp compareOp; + uint32_t compareMask; + uint32_t writeMask; + uint32_t reference; +} VkStencilOpState; + +typedef struct VkPipelineDepthStencilStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineDepthStencilStateCreateFlags flags; + VkBool32 depthTestEnable; + VkBool32 depthWriteEnable; + VkCompareOp depthCompareOp; + VkBool32 depthBoundsTestEnable; + VkBool32 stencilTestEnable; + VkStencilOpState front; + VkStencilOpState back; + float minDepthBounds; + float maxDepthBounds; +} VkPipelineDepthStencilStateCreateInfo; + +typedef struct VkPipelineColorBlendAttachmentState { + VkBool32 blendEnable; + VkBlendFactor srcColorBlendFactor; + VkBlendFactor dstColorBlendFactor; + VkBlendOp colorBlendOp; + VkBlendFactor srcAlphaBlendFactor; + VkBlendFactor dstAlphaBlendFactor; + VkBlendOp alphaBlendOp; + VkColorComponentFlags colorWriteMask; +} VkPipelineColorBlendAttachmentState; + +typedef struct VkPipelineColorBlendStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineColorBlendStateCreateFlags flags; + VkBool32 logicOpEnable; + VkLogicOp logicOp; + uint32_t attachmentCount; + const VkPipelineColorBlendAttachmentState* pAttachments; + float blendConstants[4]; +} VkPipelineColorBlendStateCreateInfo; + +typedef struct VkPipelineDynamicStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineDynamicStateCreateFlags flags; + uint32_t dynamicStateCount; + const VkDynamicState* pDynamicStates; +} VkPipelineDynamicStateCreateInfo; + +typedef struct VkGraphicsPipelineCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + const VkPipelineVertexInputStateCreateInfo* pVertexInputState; + const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState; + const VkPipelineTessellationStateCreateInfo* pTessellationState; + const VkPipelineViewportStateCreateInfo* pViewportState; + const VkPipelineRasterizationStateCreateInfo* pRasterizationState; + const VkPipelineMultisampleStateCreateInfo* pMultisampleState; + const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState; + const VkPipelineColorBlendStateCreateInfo* pColorBlendState; + const VkPipelineDynamicStateCreateInfo* pDynamicState; + VkPipelineLayout layout; + VkRenderPass renderPass; + uint32_t subpass; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkGraphicsPipelineCreateInfo; + +typedef struct VkPushConstantRange { + VkShaderStageFlags stageFlags; + uint32_t offset; + uint32_t size; +} VkPushConstantRange; + +typedef struct VkPipelineLayoutCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineLayoutCreateFlags flags; + uint32_t setLayoutCount; + const VkDescriptorSetLayout* pSetLayouts; + uint32_t pushConstantRangeCount; + const VkPushConstantRange* pPushConstantRanges; +} VkPipelineLayoutCreateInfo; + +typedef struct VkSamplerCreateInfo { + VkStructureType sType; + const void* pNext; + VkSamplerCreateFlags flags; + VkFilter magFilter; + VkFilter minFilter; + VkSamplerMipmapMode mipmapMode; + VkSamplerAddressMode addressModeU; + VkSamplerAddressMode addressModeV; + VkSamplerAddressMode addressModeW; + float mipLodBias; + VkBool32 anisotropyEnable; + float maxAnisotropy; + VkBool32 compareEnable; + VkCompareOp compareOp; + float minLod; + float maxLod; + VkBorderColor borderColor; + VkBool32 unnormalizedCoordinates; +} VkSamplerCreateInfo; + +typedef struct VkCopyDescriptorSet { + VkStructureType sType; + const void* pNext; + VkDescriptorSet srcSet; + uint32_t srcBinding; + uint32_t srcArrayElement; + VkDescriptorSet dstSet; + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; +} VkCopyDescriptorSet; + +typedef struct VkDescriptorBufferInfo { + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize range; +} VkDescriptorBufferInfo; + +typedef struct VkDescriptorImageInfo { + VkSampler sampler; + VkImageView imageView; + VkImageLayout imageLayout; +} VkDescriptorImageInfo; + +typedef struct VkDescriptorPoolSize { + VkDescriptorType type; + uint32_t descriptorCount; +} VkDescriptorPoolSize; + +typedef struct VkDescriptorPoolCreateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorPoolCreateFlags flags; + uint32_t maxSets; + uint32_t poolSizeCount; + const VkDescriptorPoolSize* pPoolSizes; +} VkDescriptorPoolCreateInfo; + +typedef struct VkDescriptorSetAllocateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorPool descriptorPool; + uint32_t descriptorSetCount; + const VkDescriptorSetLayout* pSetLayouts; +} VkDescriptorSetAllocateInfo; + +typedef struct VkDescriptorSetLayoutBinding { + uint32_t binding; + VkDescriptorType descriptorType; + uint32_t descriptorCount; + VkShaderStageFlags stageFlags; + const VkSampler* pImmutableSamplers; +} VkDescriptorSetLayoutBinding; + +typedef struct VkDescriptorSetLayoutCreateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorSetLayoutCreateFlags flags; + uint32_t bindingCount; + const VkDescriptorSetLayoutBinding* pBindings; +} VkDescriptorSetLayoutCreateInfo; + +typedef struct VkWriteDescriptorSet { + VkStructureType sType; + const void* pNext; + VkDescriptorSet dstSet; + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; + VkDescriptorType descriptorType; + const VkDescriptorImageInfo* pImageInfo; + const VkDescriptorBufferInfo* pBufferInfo; + const VkBufferView* pTexelBufferView; +} VkWriteDescriptorSet; + +typedef struct VkAttachmentDescription { + VkAttachmentDescriptionFlags flags; + VkFormat format; + VkSampleCountFlagBits samples; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkAttachmentLoadOp stencilLoadOp; + VkAttachmentStoreOp stencilStoreOp; + VkImageLayout initialLayout; + VkImageLayout finalLayout; +} VkAttachmentDescription; + +typedef struct VkAttachmentReference { + uint32_t attachment; + VkImageLayout layout; +} VkAttachmentReference; + +typedef struct VkFramebufferCreateInfo { + VkStructureType sType; + const void* pNext; + VkFramebufferCreateFlags flags; + VkRenderPass renderPass; + uint32_t attachmentCount; + const VkImageView* pAttachments; + uint32_t width; + uint32_t height; + uint32_t layers; +} VkFramebufferCreateInfo; + +typedef struct VkSubpassDescription { + VkSubpassDescriptionFlags flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t inputAttachmentCount; + const VkAttachmentReference* pInputAttachments; + uint32_t colorAttachmentCount; + const VkAttachmentReference* pColorAttachments; + const VkAttachmentReference* pResolveAttachments; + const VkAttachmentReference* pDepthStencilAttachment; + uint32_t preserveAttachmentCount; + const uint32_t* pPreserveAttachments; +} VkSubpassDescription; + +typedef struct VkSubpassDependency { + uint32_t srcSubpass; + uint32_t dstSubpass; + VkPipelineStageFlags srcStageMask; + VkPipelineStageFlags dstStageMask; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkDependencyFlags dependencyFlags; +} VkSubpassDependency; + +typedef struct VkRenderPassCreateInfo { + VkStructureType sType; + const void* pNext; + VkRenderPassCreateFlags flags; + uint32_t attachmentCount; + const VkAttachmentDescription* pAttachments; + uint32_t subpassCount; + const VkSubpassDescription* pSubpasses; + uint32_t dependencyCount; + const VkSubpassDependency* pDependencies; +} VkRenderPassCreateInfo; + +typedef struct VkCommandPoolCreateInfo { + VkStructureType sType; + const void* pNext; + VkCommandPoolCreateFlags flags; + uint32_t queueFamilyIndex; +} VkCommandPoolCreateInfo; + +typedef struct VkCommandBufferAllocateInfo { + VkStructureType sType; + const void* pNext; + VkCommandPool commandPool; + VkCommandBufferLevel level; + uint32_t commandBufferCount; +} VkCommandBufferAllocateInfo; + +typedef struct VkCommandBufferInheritanceInfo { + VkStructureType sType; + const void* pNext; + VkRenderPass renderPass; + uint32_t subpass; + VkFramebuffer framebuffer; + VkBool32 occlusionQueryEnable; + VkQueryControlFlags queryFlags; + VkQueryPipelineStatisticFlags pipelineStatistics; +} VkCommandBufferInheritanceInfo; + +typedef struct VkCommandBufferBeginInfo { + VkStructureType sType; + const void* pNext; + VkCommandBufferUsageFlags flags; + const VkCommandBufferInheritanceInfo* pInheritanceInfo; +} VkCommandBufferBeginInfo; + +typedef struct VkBufferCopy { + VkDeviceSize srcOffset; + VkDeviceSize dstOffset; + VkDeviceSize size; +} VkBufferCopy; + +typedef struct VkImageSubresourceLayers { + VkImageAspectFlags aspectMask; + uint32_t mipLevel; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkImageSubresourceLayers; + +typedef struct VkBufferImageCopy { + VkDeviceSize bufferOffset; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkBufferImageCopy; + +typedef union VkClearColorValue { + float float32[4]; + int32_t int32[4]; + uint32_t uint32[4]; +} VkClearColorValue; + +typedef struct VkClearDepthStencilValue { + float depth; + uint32_t stencil; +} VkClearDepthStencilValue; + +typedef union VkClearValue { + VkClearColorValue color; + VkClearDepthStencilValue depthStencil; +} VkClearValue; + +typedef struct VkClearAttachment { + VkImageAspectFlags aspectMask; + uint32_t colorAttachment; + VkClearValue clearValue; +} VkClearAttachment; + +typedef struct VkClearRect { + VkRect2D rect; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkClearRect; + +typedef struct VkImageBlit { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets[2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets[2]; +} VkImageBlit; + +typedef struct VkImageCopy { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy; + +typedef struct VkImageResolve { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageResolve; + +typedef struct VkRenderPassBeginInfo { + VkStructureType sType; + const void* pNext; + VkRenderPass renderPass; + VkFramebuffer framebuffer; + VkRect2D renderArea; + uint32_t clearValueCount; + const VkClearValue* pClearValues; +} VkRenderPassBeginInfo; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance); +typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice); +typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence); +typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue); +typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device); +typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory); +typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData); +typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory); +typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges); +typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges); +typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes); +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset); +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset); +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence); +typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); +typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences); +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence); +typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore); +typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent); +typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event); +typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event); +typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event); +typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool); +typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags); +typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer); +typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView); +typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage); +typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout); +typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView); +typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule); +typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache); +typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches); +typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler); +typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool); +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags); +typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets); +typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets); +typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies); +typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer); +typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity); +typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool); +typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags); +typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers); +typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); +typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo); +typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer); +typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags); +typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors); +typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor); +typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference); +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); +typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); +typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); +typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); +typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags); +typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query); +typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query); +typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); +typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( + const VkInstanceCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkInstance* pInstance); + +VKAPI_ATTR void VKAPI_CALL vkDestroyInstance( + VkInstance instance, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices( + VkInstance instance, + uint32_t* pPhysicalDeviceCount, + VkPhysicalDevice* pPhysicalDevices); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures* pFeatures); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties* pFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkImageFormatProperties* pImageFormatProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties( + VkPhysicalDevice physicalDevice, + uint32_t* pQueueFamilyPropertyCount, + VkQueueFamilyProperties* pQueueFamilyProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties* pMemoryProperties); + +VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr( + VkInstance instance, + const char* pName); + +VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr( + VkDevice device, + const char* pName); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice( + VkPhysicalDevice physicalDevice, + const VkDeviceCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDevice* pDevice); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDevice( + VkDevice device, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties( + const char* pLayerName, + uint32_t* pPropertyCount, + VkExtensionProperties* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties( + VkPhysicalDevice physicalDevice, + const char* pLayerName, + uint32_t* pPropertyCount, + VkExtensionProperties* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties( + uint32_t* pPropertyCount, + VkLayerProperties* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkLayerProperties* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue( + VkDevice device, + uint32_t queueFamilyIndex, + uint32_t queueIndex, + VkQueue* pQueue); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo* pSubmits, + VkFence fence); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle( + VkQueue queue); + +VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle( + VkDevice device); + +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory( + VkDevice device, + const VkMemoryAllocateInfo* pAllocateInfo, + const VkAllocationCallbacks* pAllocator, + VkDeviceMemory* pMemory); + +VKAPI_ATTR void VKAPI_CALL vkFreeMemory( + VkDevice device, + VkDeviceMemory memory, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory( + VkDevice device, + VkDeviceMemory memory, + VkDeviceSize offset, + VkDeviceSize size, + VkMemoryMapFlags flags, + void** ppData); + +VKAPI_ATTR void VKAPI_CALL vkUnmapMemory( + VkDevice device, + VkDeviceMemory memory); + +VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges( + VkDevice device, + uint32_t memoryRangeCount, + const VkMappedMemoryRange* pMemoryRanges); + +VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges( + VkDevice device, + uint32_t memoryRangeCount, + const VkMappedMemoryRange* pMemoryRanges); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment( + VkDevice device, + VkDeviceMemory memory, + VkDeviceSize* pCommittedMemoryInBytes); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory( + VkDevice device, + VkBuffer buffer, + VkDeviceMemory memory, + VkDeviceSize memoryOffset); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory( + VkDevice device, + VkImage image, + VkDeviceMemory memory, + VkDeviceSize memoryOffset); + +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements( + VkDevice device, + VkBuffer buffer, + VkMemoryRequirements* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements( + VkDevice device, + VkImage image, + VkMemoryRequirements* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements( + VkDevice device, + VkImage image, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements* pSparseMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkSampleCountFlagBits samples, + VkImageUsageFlags usage, + VkImageTiling tiling, + uint32_t* pPropertyCount, + VkSparseImageFormatProperties* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse( + VkQueue queue, + uint32_t bindInfoCount, + const VkBindSparseInfo* pBindInfo, + VkFence fence); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence( + VkDevice device, + const VkFenceCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkFence* pFence); + +VKAPI_ATTR void VKAPI_CALL vkDestroyFence( + VkDevice device, + VkFence fence, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetFences( + VkDevice device, + uint32_t fenceCount, + const VkFence* pFences); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus( + VkDevice device, + VkFence fence); + +VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences( + VkDevice device, + uint32_t fenceCount, + const VkFence* pFences, + VkBool32 waitAll, + uint64_t timeout); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore( + VkDevice device, + const VkSemaphoreCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSemaphore* pSemaphore); + +VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore( + VkDevice device, + VkSemaphore semaphore, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent( + VkDevice device, + const VkEventCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkEvent* pEvent); + +VKAPI_ATTR void VKAPI_CALL vkDestroyEvent( + VkDevice device, + VkEvent event, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus( + VkDevice device, + VkEvent event); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent( + VkDevice device, + VkEvent event); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent( + VkDevice device, + VkEvent event); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool( + VkDevice device, + const VkQueryPoolCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkQueryPool* pQueryPool); + +VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool( + VkDevice device, + VkQueryPool queryPool, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults( + VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + void* pData, + VkDeviceSize stride, + VkQueryResultFlags flags); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer( + VkDevice device, + const VkBufferCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkBuffer* pBuffer); + +VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer( + VkDevice device, + VkBuffer buffer, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView( + VkDevice device, + const VkBufferViewCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkBufferView* pView); + +VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView( + VkDevice device, + VkBufferView bufferView, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage( + VkDevice device, + const VkImageCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkImage* pImage); + +VKAPI_ATTR void VKAPI_CALL vkDestroyImage( + VkDevice device, + VkImage image, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout( + VkDevice device, + VkImage image, + const VkImageSubresource* pSubresource, + VkSubresourceLayout* pLayout); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView( + VkDevice device, + const VkImageViewCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkImageView* pView); + +VKAPI_ATTR void VKAPI_CALL vkDestroyImageView( + VkDevice device, + VkImageView imageView, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule( + VkDevice device, + const VkShaderModuleCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkShaderModule* pShaderModule); + +VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule( + VkDevice device, + VkShaderModule shaderModule, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache( + VkDevice device, + const VkPipelineCacheCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPipelineCache* pPipelineCache); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache( + VkDevice device, + VkPipelineCache pipelineCache, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData( + VkDevice device, + VkPipelineCache pipelineCache, + size_t* pDataSize, + void* pData); + +VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches( + VkDevice device, + VkPipelineCache dstCache, + uint32_t srcCacheCount, + const VkPipelineCache* pSrcCaches); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkGraphicsPipelineCreateInfo* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkComputePipelineCreateInfo* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline( + VkDevice device, + VkPipeline pipeline, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout( + VkDevice device, + const VkPipelineLayoutCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPipelineLayout* pPipelineLayout); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout( + VkDevice device, + VkPipelineLayout pipelineLayout, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler( + VkDevice device, + const VkSamplerCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSampler* pSampler); + +VKAPI_ATTR void VKAPI_CALL vkDestroySampler( + VkDevice device, + VkSampler sampler, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout( + VkDevice device, + const VkDescriptorSetLayoutCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDescriptorSetLayout* pSetLayout); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout( + VkDevice device, + VkDescriptorSetLayout descriptorSetLayout, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool( + VkDevice device, + const VkDescriptorPoolCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDescriptorPool* pDescriptorPool); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool( + VkDevice device, + VkDescriptorPool descriptorPool, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool( + VkDevice device, + VkDescriptorPool descriptorPool, + VkDescriptorPoolResetFlags flags); + +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets( + VkDevice device, + const VkDescriptorSetAllocateInfo* pAllocateInfo, + VkDescriptorSet* pDescriptorSets); + +VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets( + VkDevice device, + VkDescriptorPool descriptorPool, + uint32_t descriptorSetCount, + const VkDescriptorSet* pDescriptorSets); + +VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets( + VkDevice device, + uint32_t descriptorWriteCount, + const VkWriteDescriptorSet* pDescriptorWrites, + uint32_t descriptorCopyCount, + const VkCopyDescriptorSet* pDescriptorCopies); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer( + VkDevice device, + const VkFramebufferCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkFramebuffer* pFramebuffer); + +VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer( + VkDevice device, + VkFramebuffer framebuffer, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass( + VkDevice device, + const VkRenderPassCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkRenderPass* pRenderPass); + +VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass( + VkDevice device, + VkRenderPass renderPass, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity( + VkDevice device, + VkRenderPass renderPass, + VkExtent2D* pGranularity); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool( + VkDevice device, + const VkCommandPoolCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCommandPool* pCommandPool); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool( + VkDevice device, + VkCommandPool commandPool, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool( + VkDevice device, + VkCommandPool commandPool, + VkCommandPoolResetFlags flags); + +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers( + VkDevice device, + const VkCommandBufferAllocateInfo* pAllocateInfo, + VkCommandBuffer* pCommandBuffers); + +VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers( + VkDevice device, + VkCommandPool commandPool, + uint32_t commandBufferCount, + const VkCommandBuffer* pCommandBuffers); + +VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer( + VkCommandBuffer commandBuffer, + const VkCommandBufferBeginInfo* pBeginInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer( + VkCommandBuffer commandBuffer, + VkCommandBufferResetFlags flags); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport( + VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkViewport* pViewports); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor( + VkCommandBuffer commandBuffer, + uint32_t firstScissor, + uint32_t scissorCount, + const VkRect2D* pScissors); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth( + VkCommandBuffer commandBuffer, + float lineWidth); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias( + VkCommandBuffer commandBuffer, + float depthBiasConstantFactor, + float depthBiasClamp, + float depthBiasSlopeFactor); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants( + VkCommandBuffer commandBuffer, + const float blendConstants[4]); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds( + VkCommandBuffer commandBuffer, + float minDepthBounds, + float maxDepthBounds); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + uint32_t compareMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + uint32_t writeMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + uint32_t reference); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t firstSet, + uint32_t descriptorSetCount, + const VkDescriptorSet* pDescriptorSets, + uint32_t dynamicOffsetCount, + const uint32_t* pDynamicOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkIndexType indexType); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdDraw( + VkCommandBuffer commandBuffer, + uint32_t vertexCount, + uint32_t instanceCount, + uint32_t firstVertex, + uint32_t firstInstance); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed( + VkCommandBuffer commandBuffer, + uint32_t indexCount, + uint32_t instanceCount, + uint32_t firstIndex, + int32_t vertexOffset, + uint32_t firstInstance); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatch( + VkCommandBuffer commandBuffer, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer( + VkCommandBuffer commandBuffer, + VkBuffer srcBuffer, + VkBuffer dstBuffer, + uint32_t regionCount, + const VkBufferCopy* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage( + VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageCopy* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage( + VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageBlit* pRegions, + VkFilter filter); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage( + VkCommandBuffer commandBuffer, + VkBuffer srcBuffer, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkBufferImageCopy* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer( + VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkBuffer dstBuffer, + uint32_t regionCount, + const VkBufferImageCopy* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer( + VkCommandBuffer commandBuffer, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize dataSize, + const void* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer( + VkCommandBuffer commandBuffer, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize size, + uint32_t data); + +VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage( + VkCommandBuffer commandBuffer, + VkImage image, + VkImageLayout imageLayout, + const VkClearColorValue* pColor, + uint32_t rangeCount, + const VkImageSubresourceRange* pRanges); + +VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage( + VkCommandBuffer commandBuffer, + VkImage image, + VkImageLayout imageLayout, + const VkClearDepthStencilValue* pDepthStencil, + uint32_t rangeCount, + const VkImageSubresourceRange* pRanges); + +VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments( + VkCommandBuffer commandBuffer, + uint32_t attachmentCount, + const VkClearAttachment* pAttachments, + uint32_t rectCount, + const VkClearRect* pRects); + +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage( + VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageResolve* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags stageMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags stageMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents( + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent* pEvents, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, + const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier* pImageMemoryBarriers); + +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, + VkDependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, + const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier* pImageMemoryBarriers); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp( + VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize stride, + VkQueryResultFlags flags); + +VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants( + VkCommandBuffer commandBuffer, + VkPipelineLayout layout, + VkShaderStageFlags stageFlags, + uint32_t offset, + uint32_t size, + const void* pValues); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass( + VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin, + VkSubpassContents contents); + +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass( + VkCommandBuffer commandBuffer, + VkSubpassContents contents); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands( + VkCommandBuffer commandBuffer, + uint32_t commandBufferCount, + const VkCommandBuffer* pCommandBuffers); +#endif + + +#define VK_VERSION_1_1 1 +// Vulkan 1.1 version number +#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0 + +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) +#define VK_MAX_DEVICE_GROUP_SIZE 32U +#define VK_LUID_SIZE 8U +#define VK_QUEUE_FAMILY_EXTERNAL (~1U) + +typedef enum VkPointClippingBehavior { + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0, + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1, + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF +} VkPointClippingBehavior; + +typedef enum VkTessellationDomainOrigin { + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0, + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1, + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF +} VkTessellationDomainOrigin; + +typedef enum VkSamplerYcbcrModelConversion { + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF +} VkSamplerYcbcrModelConversion; + +typedef enum VkSamplerYcbcrRange { + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0, + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1, + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerYcbcrRange; + +typedef enum VkChromaLocation { + VK_CHROMA_LOCATION_COSITED_EVEN = 0, + VK_CHROMA_LOCATION_MIDPOINT = 1, + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN, + VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT, + VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF +} VkChromaLocation; + +typedef enum VkDescriptorUpdateTemplateType { + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0, + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1, + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorUpdateTemplateType; + +typedef enum VkSubgroupFeatureFlagBits { + VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001, + VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002, + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004, + VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008, + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010, + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020, + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040, + VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080, + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100, + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubgroupFeatureFlagBits; +typedef VkFlags VkSubgroupFeatureFlags; + +typedef enum VkPeerMemoryFeatureFlagBits { + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001, + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002, + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004, + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008, + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT, + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT, + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT, + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT, + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPeerMemoryFeatureFlagBits; +typedef VkFlags VkPeerMemoryFeatureFlags; + +typedef enum VkMemoryAllocateFlagBits { + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004, + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryAllocateFlagBits; +typedef VkFlags VkMemoryAllocateFlags; +typedef VkFlags VkCommandPoolTrimFlags; +typedef VkFlags VkDescriptorUpdateTemplateCreateFlags; + +typedef enum VkExternalMemoryHandleTypeFlagBits { + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalMemoryHandleTypeFlagBits; +typedef VkFlags VkExternalMemoryHandleTypeFlags; + +typedef enum VkExternalMemoryFeatureFlagBits { + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001, + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002, + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004, + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT, + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT, + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT, + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalMemoryFeatureFlagBits; +typedef VkFlags VkExternalMemoryFeatureFlags; + +typedef enum VkExternalFenceHandleTypeFlagBits { + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT, + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalFenceHandleTypeFlagBits; +typedef VkFlags VkExternalFenceHandleTypeFlags; + +typedef enum VkExternalFenceFeatureFlagBits { + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001, + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002, + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT, + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT, + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalFenceFeatureFlagBits; +typedef VkFlags VkExternalFenceFeatureFlags; + +typedef enum VkFenceImportFlagBits { + VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001, + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT, + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFenceImportFlagBits; +typedef VkFlags VkFenceImportFlags; + +typedef enum VkSemaphoreImportFlagBits { + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001, + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT, + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreImportFlagBits; +typedef VkFlags VkSemaphoreImportFlags; + +typedef enum VkExternalSemaphoreHandleTypeFlagBits { + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalSemaphoreHandleTypeFlagBits; +typedef VkFlags VkExternalSemaphoreHandleTypeFlags; + +typedef enum VkExternalSemaphoreFeatureFlagBits { + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001, + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002, + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT, + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT, + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalSemaphoreFeatureFlagBits; +typedef VkFlags VkExternalSemaphoreFeatureFlags; +typedef struct VkPhysicalDeviceSubgroupProperties { + VkStructureType sType; + void* pNext; + uint32_t subgroupSize; + VkShaderStageFlags supportedStages; + VkSubgroupFeatureFlags supportedOperations; + VkBool32 quadOperationsInAllStages; +} VkPhysicalDeviceSubgroupProperties; + +typedef struct VkBindBufferMemoryInfo { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; +} VkBindBufferMemoryInfo; + +typedef struct VkBindImageMemoryInfo { + VkStructureType sType; + const void* pNext; + VkImage image; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; +} VkBindImageMemoryInfo; + +typedef struct VkPhysicalDevice16BitStorageFeatures { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer16BitAccess; + VkBool32 uniformAndStorageBuffer16BitAccess; + VkBool32 storagePushConstant16; + VkBool32 storageInputOutput16; +} VkPhysicalDevice16BitStorageFeatures; + +typedef struct VkMemoryDedicatedRequirements { + VkStructureType sType; + void* pNext; + VkBool32 prefersDedicatedAllocation; + VkBool32 requiresDedicatedAllocation; +} VkMemoryDedicatedRequirements; + +typedef struct VkMemoryDedicatedAllocateInfo { + VkStructureType sType; + const void* pNext; + VkImage image; + VkBuffer buffer; +} VkMemoryDedicatedAllocateInfo; + +typedef struct VkMemoryAllocateFlagsInfo { + VkStructureType sType; + const void* pNext; + VkMemoryAllocateFlags flags; + uint32_t deviceMask; +} VkMemoryAllocateFlagsInfo; + +typedef struct VkDeviceGroupRenderPassBeginInfo { + VkStructureType sType; + const void* pNext; + uint32_t deviceMask; + uint32_t deviceRenderAreaCount; + const VkRect2D* pDeviceRenderAreas; +} VkDeviceGroupRenderPassBeginInfo; + +typedef struct VkDeviceGroupCommandBufferBeginInfo { + VkStructureType sType; + const void* pNext; + uint32_t deviceMask; +} VkDeviceGroupCommandBufferBeginInfo; + +typedef struct VkDeviceGroupSubmitInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreCount; + const uint32_t* pWaitSemaphoreDeviceIndices; + uint32_t commandBufferCount; + const uint32_t* pCommandBufferDeviceMasks; + uint32_t signalSemaphoreCount; + const uint32_t* pSignalSemaphoreDeviceIndices; +} VkDeviceGroupSubmitInfo; + +typedef struct VkDeviceGroupBindSparseInfo { + VkStructureType sType; + const void* pNext; + uint32_t resourceDeviceIndex; + uint32_t memoryDeviceIndex; +} VkDeviceGroupBindSparseInfo; + +typedef struct VkBindBufferMemoryDeviceGroupInfo { + VkStructureType sType; + const void* pNext; + uint32_t deviceIndexCount; + const uint32_t* pDeviceIndices; +} VkBindBufferMemoryDeviceGroupInfo; + +typedef struct VkBindImageMemoryDeviceGroupInfo { + VkStructureType sType; + const void* pNext; + uint32_t deviceIndexCount; + const uint32_t* pDeviceIndices; + uint32_t splitInstanceBindRegionCount; + const VkRect2D* pSplitInstanceBindRegions; +} VkBindImageMemoryDeviceGroupInfo; + +typedef struct VkPhysicalDeviceGroupProperties { + VkStructureType sType; + void* pNext; + uint32_t physicalDeviceCount; + VkPhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE]; + VkBool32 subsetAllocation; +} VkPhysicalDeviceGroupProperties; + +typedef struct VkDeviceGroupDeviceCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t physicalDeviceCount; + const VkPhysicalDevice* pPhysicalDevices; +} VkDeviceGroupDeviceCreateInfo; + +typedef struct VkBufferMemoryRequirementsInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkBufferMemoryRequirementsInfo2; + +typedef struct VkImageMemoryRequirementsInfo2 { + VkStructureType sType; + const void* pNext; + VkImage image; +} VkImageMemoryRequirementsInfo2; + +typedef struct VkImageSparseMemoryRequirementsInfo2 { + VkStructureType sType; + const void* pNext; + VkImage image; +} VkImageSparseMemoryRequirementsInfo2; + +typedef struct VkMemoryRequirements2 { + VkStructureType sType; + void* pNext; + VkMemoryRequirements memoryRequirements; +} VkMemoryRequirements2; + +typedef struct VkSparseImageMemoryRequirements2 { + VkStructureType sType; + void* pNext; + VkSparseImageMemoryRequirements memoryRequirements; +} VkSparseImageMemoryRequirements2; + +typedef struct VkPhysicalDeviceFeatures2 { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceFeatures features; +} VkPhysicalDeviceFeatures2; + +typedef struct VkPhysicalDeviceProperties2 { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceProperties properties; +} VkPhysicalDeviceProperties2; + +typedef struct VkFormatProperties2 { + VkStructureType sType; + void* pNext; + VkFormatProperties formatProperties; +} VkFormatProperties2; + +typedef struct VkImageFormatProperties2 { + VkStructureType sType; + void* pNext; + VkImageFormatProperties imageFormatProperties; +} VkImageFormatProperties2; + +typedef struct VkPhysicalDeviceImageFormatInfo2 { + VkStructureType sType; + const void* pNext; + VkFormat format; + VkImageType type; + VkImageTiling tiling; + VkImageUsageFlags usage; + VkImageCreateFlags flags; +} VkPhysicalDeviceImageFormatInfo2; + +typedef struct VkQueueFamilyProperties2 { + VkStructureType sType; + void* pNext; + VkQueueFamilyProperties queueFamilyProperties; +} VkQueueFamilyProperties2; + +typedef struct VkPhysicalDeviceMemoryProperties2 { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceMemoryProperties memoryProperties; +} VkPhysicalDeviceMemoryProperties2; + +typedef struct VkSparseImageFormatProperties2 { + VkStructureType sType; + void* pNext; + VkSparseImageFormatProperties properties; +} VkSparseImageFormatProperties2; + +typedef struct VkPhysicalDeviceSparseImageFormatInfo2 { + VkStructureType sType; + const void* pNext; + VkFormat format; + VkImageType type; + VkSampleCountFlagBits samples; + VkImageUsageFlags usage; + VkImageTiling tiling; +} VkPhysicalDeviceSparseImageFormatInfo2; + +typedef struct VkPhysicalDevicePointClippingProperties { + VkStructureType sType; + void* pNext; + VkPointClippingBehavior pointClippingBehavior; +} VkPhysicalDevicePointClippingProperties; + +typedef struct VkInputAttachmentAspectReference { + uint32_t subpass; + uint32_t inputAttachmentIndex; + VkImageAspectFlags aspectMask; +} VkInputAttachmentAspectReference; + +typedef struct VkRenderPassInputAttachmentAspectCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t aspectReferenceCount; + const VkInputAttachmentAspectReference* pAspectReferences; +} VkRenderPassInputAttachmentAspectCreateInfo; + +typedef struct VkImageViewUsageCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageUsageFlags usage; +} VkImageViewUsageCreateInfo; + +typedef struct VkPipelineTessellationDomainOriginStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkTessellationDomainOrigin domainOrigin; +} VkPipelineTessellationDomainOriginStateCreateInfo; + +typedef struct VkRenderPassMultiviewCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t subpassCount; + const uint32_t* pViewMasks; + uint32_t dependencyCount; + const int32_t* pViewOffsets; + uint32_t correlationMaskCount; + const uint32_t* pCorrelationMasks; +} VkRenderPassMultiviewCreateInfo; + +typedef struct VkPhysicalDeviceMultiviewFeatures { + VkStructureType sType; + void* pNext; + VkBool32 multiview; + VkBool32 multiviewGeometryShader; + VkBool32 multiviewTessellationShader; +} VkPhysicalDeviceMultiviewFeatures; + +typedef struct VkPhysicalDeviceMultiviewProperties { + VkStructureType sType; + void* pNext; + uint32_t maxMultiviewViewCount; + uint32_t maxMultiviewInstanceIndex; +} VkPhysicalDeviceMultiviewProperties; + +typedef struct VkPhysicalDeviceVariablePointersFeatures { + VkStructureType sType; + void* pNext; + VkBool32 variablePointersStorageBuffer; + VkBool32 variablePointers; +} VkPhysicalDeviceVariablePointersFeatures; + +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures; + +typedef struct VkPhysicalDeviceProtectedMemoryFeatures { + VkStructureType sType; + void* pNext; + VkBool32 protectedMemory; +} VkPhysicalDeviceProtectedMemoryFeatures; + +typedef struct VkPhysicalDeviceProtectedMemoryProperties { + VkStructureType sType; + void* pNext; + VkBool32 protectedNoFault; +} VkPhysicalDeviceProtectedMemoryProperties; + +typedef struct VkDeviceQueueInfo2 { + VkStructureType sType; + const void* pNext; + VkDeviceQueueCreateFlags flags; + uint32_t queueFamilyIndex; + uint32_t queueIndex; +} VkDeviceQueueInfo2; + +typedef struct VkProtectedSubmitInfo { + VkStructureType sType; + const void* pNext; + VkBool32 protectedSubmit; +} VkProtectedSubmitInfo; + +typedef struct VkSamplerYcbcrConversionCreateInfo { + VkStructureType sType; + const void* pNext; + VkFormat format; + VkSamplerYcbcrModelConversion ycbcrModel; + VkSamplerYcbcrRange ycbcrRange; + VkComponentMapping components; + VkChromaLocation xChromaOffset; + VkChromaLocation yChromaOffset; + VkFilter chromaFilter; + VkBool32 forceExplicitReconstruction; +} VkSamplerYcbcrConversionCreateInfo; + +typedef struct VkSamplerYcbcrConversionInfo { + VkStructureType sType; + const void* pNext; + VkSamplerYcbcrConversion conversion; +} VkSamplerYcbcrConversionInfo; + +typedef struct VkBindImagePlaneMemoryInfo { + VkStructureType sType; + const void* pNext; + VkImageAspectFlagBits planeAspect; +} VkBindImagePlaneMemoryInfo; + +typedef struct VkImagePlaneMemoryRequirementsInfo { + VkStructureType sType; + const void* pNext; + VkImageAspectFlagBits planeAspect; +} VkImagePlaneMemoryRequirementsInfo; + +typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures { + VkStructureType sType; + void* pNext; + VkBool32 samplerYcbcrConversion; +} VkPhysicalDeviceSamplerYcbcrConversionFeatures; + +typedef struct VkSamplerYcbcrConversionImageFormatProperties { + VkStructureType sType; + void* pNext; + uint32_t combinedImageSamplerDescriptorCount; +} VkSamplerYcbcrConversionImageFormatProperties; + +typedef struct VkDescriptorUpdateTemplateEntry { + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; + VkDescriptorType descriptorType; + size_t offset; + size_t stride; +} VkDescriptorUpdateTemplateEntry; + +typedef struct VkDescriptorUpdateTemplateCreateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorUpdateTemplateCreateFlags flags; + uint32_t descriptorUpdateEntryCount; + const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries; + VkDescriptorUpdateTemplateType templateType; + VkDescriptorSetLayout descriptorSetLayout; + VkPipelineBindPoint pipelineBindPoint; + VkPipelineLayout pipelineLayout; + uint32_t set; +} VkDescriptorUpdateTemplateCreateInfo; + +typedef struct VkExternalMemoryProperties { + VkExternalMemoryFeatureFlags externalMemoryFeatures; + VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes; + VkExternalMemoryHandleTypeFlags compatibleHandleTypes; +} VkExternalMemoryProperties; + +typedef struct VkPhysicalDeviceExternalImageFormatInfo { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalImageFormatInfo; + +typedef struct VkExternalImageFormatProperties { + VkStructureType sType; + void* pNext; + VkExternalMemoryProperties externalMemoryProperties; +} VkExternalImageFormatProperties; + +typedef struct VkPhysicalDeviceExternalBufferInfo { + VkStructureType sType; + const void* pNext; + VkBufferCreateFlags flags; + VkBufferUsageFlags usage; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalBufferInfo; + +typedef struct VkExternalBufferProperties { + VkStructureType sType; + void* pNext; + VkExternalMemoryProperties externalMemoryProperties; +} VkExternalBufferProperties; + +typedef struct VkPhysicalDeviceIDProperties { + VkStructureType sType; + void* pNext; + uint8_t deviceUUID[VK_UUID_SIZE]; + uint8_t driverUUID[VK_UUID_SIZE]; + uint8_t deviceLUID[VK_LUID_SIZE]; + uint32_t deviceNodeMask; + VkBool32 deviceLUIDValid; +} VkPhysicalDeviceIDProperties; + +typedef struct VkExternalMemoryImageCreateInfo { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExternalMemoryImageCreateInfo; + +typedef struct VkExternalMemoryBufferCreateInfo { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExternalMemoryBufferCreateInfo; + +typedef struct VkExportMemoryAllocateInfo { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExportMemoryAllocateInfo; + +typedef struct VkPhysicalDeviceExternalFenceInfo { + VkStructureType sType; + const void* pNext; + VkExternalFenceHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalFenceInfo; + +typedef struct VkExternalFenceProperties { + VkStructureType sType; + void* pNext; + VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes; + VkExternalFenceHandleTypeFlags compatibleHandleTypes; + VkExternalFenceFeatureFlags externalFenceFeatures; +} VkExternalFenceProperties; + +typedef struct VkExportFenceCreateInfo { + VkStructureType sType; + const void* pNext; + VkExternalFenceHandleTypeFlags handleTypes; +} VkExportFenceCreateInfo; + +typedef struct VkExportSemaphoreCreateInfo { + VkStructureType sType; + const void* pNext; + VkExternalSemaphoreHandleTypeFlags handleTypes; +} VkExportSemaphoreCreateInfo; + +typedef struct VkPhysicalDeviceExternalSemaphoreInfo { + VkStructureType sType; + const void* pNext; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalSemaphoreInfo; + +typedef struct VkExternalSemaphoreProperties { + VkStructureType sType; + void* pNext; + VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes; + VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes; + VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures; +} VkExternalSemaphoreProperties; + +typedef struct VkPhysicalDeviceMaintenance3Properties { + VkStructureType sType; + void* pNext; + uint32_t maxPerSetDescriptors; + VkDeviceSize maxMemoryAllocationSize; +} VkPhysicalDeviceMaintenance3Properties; + +typedef struct VkDescriptorSetLayoutSupport { + VkStructureType sType; + void* pNext; + VkBool32 supported; +} VkDescriptorSetLayoutSupport; + +typedef struct VkPhysicalDeviceShaderDrawParametersFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderDrawParameters; +} VkPhysicalDeviceShaderDrawParametersFeatures; + +typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion); +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); +typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); +typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties); +typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); +typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue); +typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion); +typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion( + uint32_t* pApiVersion); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2( + VkDevice device, + uint32_t bindInfoCount, + const VkBindBufferMemoryInfo* pBindInfos); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2( + VkDevice device, + uint32_t bindInfoCount, + const VkBindImageMemoryInfo* pBindInfos); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures( + VkDevice device, + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask( + VkCommandBuffer commandBuffer, + uint32_t deviceMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase( + VkCommandBuffer commandBuffer, + uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups( + VkInstance instance, + uint32_t* pPhysicalDeviceGroupCount, + VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2( + VkDevice device, + const VkImageMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2( + VkDevice device, + const VkBufferMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2( + VkDevice device, + const VkImageSparseMemoryRequirementsInfo2* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures2* pFeatures); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2* pFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, + VkImageFormatProperties2* pImageFormatProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2( + VkPhysicalDevice physicalDevice, + uint32_t* pQueueFamilyPropertyCount, + VkQueueFamilyProperties2* pQueueFamilyProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties2* pMemoryProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, + uint32_t* pPropertyCount, + VkSparseImageFormatProperties2* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkTrimCommandPool( + VkDevice device, + VkCommandPool commandPool, + VkCommandPoolTrimFlags flags); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2( + VkDevice device, + const VkDeviceQueueInfo2* pQueueInfo, + VkQueue* pQueue); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion( + VkDevice device, + const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSamplerYcbcrConversion* pYcbcrConversion); + +VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion( + VkDevice device, + VkSamplerYcbcrConversion ycbcrConversion, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate( + VkDevice device, + const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate( + VkDevice device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate( + VkDevice device, + VkDescriptorSet descriptorSet, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const void* pData); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, + VkExternalBufferProperties* pExternalBufferProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, + VkExternalFenceProperties* pExternalFenceProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, + VkExternalSemaphoreProperties* pExternalSemaphoreProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport( + VkDevice device, + const VkDescriptorSetLayoutCreateInfo* pCreateInfo, + VkDescriptorSetLayoutSupport* pSupport); +#endif + + +#define VK_VERSION_1_2 1 +// Vulkan 1.2 version number +#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0 + +#define VK_MAX_DRIVER_NAME_SIZE 256U +#define VK_MAX_DRIVER_INFO_SIZE 256U + +typedef enum VkDriverId { + VK_DRIVER_ID_AMD_PROPRIETARY = 1, + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2, + VK_DRIVER_ID_MESA_RADV = 3, + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4, + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5, + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6, + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7, + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8, + VK_DRIVER_ID_ARM_PROPRIETARY = 9, + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10, + VK_DRIVER_ID_GGP_PROPRIETARY = 11, + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12, + VK_DRIVER_ID_MESA_LLVMPIPE = 13, + VK_DRIVER_ID_MOLTENVK = 14, + VK_DRIVER_ID_COREAVI_PROPRIETARY = 15, + VK_DRIVER_ID_JUICE_PROPRIETARY = 16, + VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17, + VK_DRIVER_ID_MESA_TURNIP = 18, + VK_DRIVER_ID_MESA_V3DV = 19, + VK_DRIVER_ID_MESA_PANVK = 20, + VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21, + VK_DRIVER_ID_MESA_VENUS = 22, + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY, + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE, + VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV, + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY, + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA, + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY, + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY, + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY, + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER, + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY, + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY, + VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF +} VkDriverId; + +typedef enum VkShaderFloatControlsIndependence { + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF +} VkShaderFloatControlsIndependence; + +typedef enum VkSamplerReductionMode { + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0, + VK_SAMPLER_REDUCTION_MODE_MIN = 1, + VK_SAMPLER_REDUCTION_MODE_MAX = 2, + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN, + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX, + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerReductionMode; + +typedef enum VkSemaphoreType { + VK_SEMAPHORE_TYPE_BINARY = 0, + VK_SEMAPHORE_TYPE_TIMELINE = 1, + VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY, + VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE, + VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreType; + +typedef enum VkResolveModeFlagBits { + VK_RESOLVE_MODE_NONE = 0, + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001, + VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002, + VK_RESOLVE_MODE_MIN_BIT = 0x00000004, + VK_RESOLVE_MODE_MAX_BIT = 0x00000008, + VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE, + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT, + VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT, + VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT, + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkResolveModeFlagBits; +typedef VkFlags VkResolveModeFlags; + +typedef enum VkDescriptorBindingFlagBits { + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001, + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002, + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004, + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008, + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorBindingFlagBits; +typedef VkFlags VkDescriptorBindingFlags; + +typedef enum VkSemaphoreWaitFlagBits { + VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001, + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT, + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreWaitFlagBits; +typedef VkFlags VkSemaphoreWaitFlags; +typedef struct VkPhysicalDeviceVulkan11Features { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer16BitAccess; + VkBool32 uniformAndStorageBuffer16BitAccess; + VkBool32 storagePushConstant16; + VkBool32 storageInputOutput16; + VkBool32 multiview; + VkBool32 multiviewGeometryShader; + VkBool32 multiviewTessellationShader; + VkBool32 variablePointersStorageBuffer; + VkBool32 variablePointers; + VkBool32 protectedMemory; + VkBool32 samplerYcbcrConversion; + VkBool32 shaderDrawParameters; +} VkPhysicalDeviceVulkan11Features; + +typedef struct VkPhysicalDeviceVulkan11Properties { + VkStructureType sType; + void* pNext; + uint8_t deviceUUID[VK_UUID_SIZE]; + uint8_t driverUUID[VK_UUID_SIZE]; + uint8_t deviceLUID[VK_LUID_SIZE]; + uint32_t deviceNodeMask; + VkBool32 deviceLUIDValid; + uint32_t subgroupSize; + VkShaderStageFlags subgroupSupportedStages; + VkSubgroupFeatureFlags subgroupSupportedOperations; + VkBool32 subgroupQuadOperationsInAllStages; + VkPointClippingBehavior pointClippingBehavior; + uint32_t maxMultiviewViewCount; + uint32_t maxMultiviewInstanceIndex; + VkBool32 protectedNoFault; + uint32_t maxPerSetDescriptors; + VkDeviceSize maxMemoryAllocationSize; +} VkPhysicalDeviceVulkan11Properties; + +typedef struct VkPhysicalDeviceVulkan12Features { + VkStructureType sType; + void* pNext; + VkBool32 samplerMirrorClampToEdge; + VkBool32 drawIndirectCount; + VkBool32 storageBuffer8BitAccess; + VkBool32 uniformAndStorageBuffer8BitAccess; + VkBool32 storagePushConstant8; + VkBool32 shaderBufferInt64Atomics; + VkBool32 shaderSharedInt64Atomics; + VkBool32 shaderFloat16; + VkBool32 shaderInt8; + VkBool32 descriptorIndexing; + VkBool32 shaderInputAttachmentArrayDynamicIndexing; + VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; + VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; + VkBool32 shaderUniformBufferArrayNonUniformIndexing; + VkBool32 shaderSampledImageArrayNonUniformIndexing; + VkBool32 shaderStorageBufferArrayNonUniformIndexing; + VkBool32 shaderStorageImageArrayNonUniformIndexing; + VkBool32 shaderInputAttachmentArrayNonUniformIndexing; + VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; + VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; + VkBool32 descriptorBindingUniformBufferUpdateAfterBind; + VkBool32 descriptorBindingSampledImageUpdateAfterBind; + VkBool32 descriptorBindingStorageImageUpdateAfterBind; + VkBool32 descriptorBindingStorageBufferUpdateAfterBind; + VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingUpdateUnusedWhilePending; + VkBool32 descriptorBindingPartiallyBound; + VkBool32 descriptorBindingVariableDescriptorCount; + VkBool32 runtimeDescriptorArray; + VkBool32 samplerFilterMinmax; + VkBool32 scalarBlockLayout; + VkBool32 imagelessFramebuffer; + VkBool32 uniformBufferStandardLayout; + VkBool32 shaderSubgroupExtendedTypes; + VkBool32 separateDepthStencilLayouts; + VkBool32 hostQueryReset; + VkBool32 timelineSemaphore; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; + VkBool32 vulkanMemoryModel; + VkBool32 vulkanMemoryModelDeviceScope; + VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; + VkBool32 shaderOutputViewportIndex; + VkBool32 shaderOutputLayer; + VkBool32 subgroupBroadcastDynamicId; +} VkPhysicalDeviceVulkan12Features; + +typedef struct VkConformanceVersion { + uint8_t major; + uint8_t minor; + uint8_t subminor; + uint8_t patch; +} VkConformanceVersion; + +typedef struct VkPhysicalDeviceVulkan12Properties { + VkStructureType sType; + void* pNext; + VkDriverId driverID; + char driverName[VK_MAX_DRIVER_NAME_SIZE]; + char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; + VkConformanceVersion conformanceVersion; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 shaderSignedZeroInfNanPreserveFloat16; + VkBool32 shaderSignedZeroInfNanPreserveFloat32; + VkBool32 shaderSignedZeroInfNanPreserveFloat64; + VkBool32 shaderDenormPreserveFloat16; + VkBool32 shaderDenormPreserveFloat32; + VkBool32 shaderDenormPreserveFloat64; + VkBool32 shaderDenormFlushToZeroFloat16; + VkBool32 shaderDenormFlushToZeroFloat32; + VkBool32 shaderDenormFlushToZeroFloat64; + VkBool32 shaderRoundingModeRTEFloat16; + VkBool32 shaderRoundingModeRTEFloat32; + VkBool32 shaderRoundingModeRTEFloat64; + VkBool32 shaderRoundingModeRTZFloat16; + VkBool32 shaderRoundingModeRTZFloat32; + VkBool32 shaderRoundingModeRTZFloat64; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; + uint64_t maxTimelineSemaphoreValueDifference; + VkSampleCountFlags framebufferIntegerColorSampleCounts; +} VkPhysicalDeviceVulkan12Properties; + +typedef struct VkImageFormatListCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t viewFormatCount; + const VkFormat* pViewFormats; +} VkImageFormatListCreateInfo; + +typedef struct VkAttachmentDescription2 { + VkStructureType sType; + const void* pNext; + VkAttachmentDescriptionFlags flags; + VkFormat format; + VkSampleCountFlagBits samples; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkAttachmentLoadOp stencilLoadOp; + VkAttachmentStoreOp stencilStoreOp; + VkImageLayout initialLayout; + VkImageLayout finalLayout; +} VkAttachmentDescription2; + +typedef struct VkAttachmentReference2 { + VkStructureType sType; + const void* pNext; + uint32_t attachment; + VkImageLayout layout; + VkImageAspectFlags aspectMask; +} VkAttachmentReference2; + +typedef struct VkSubpassDescription2 { + VkStructureType sType; + const void* pNext; + VkSubpassDescriptionFlags flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t viewMask; + uint32_t inputAttachmentCount; + const VkAttachmentReference2* pInputAttachments; + uint32_t colorAttachmentCount; + const VkAttachmentReference2* pColorAttachments; + const VkAttachmentReference2* pResolveAttachments; + const VkAttachmentReference2* pDepthStencilAttachment; + uint32_t preserveAttachmentCount; + const uint32_t* pPreserveAttachments; +} VkSubpassDescription2; + +typedef struct VkSubpassDependency2 { + VkStructureType sType; + const void* pNext; + uint32_t srcSubpass; + uint32_t dstSubpass; + VkPipelineStageFlags srcStageMask; + VkPipelineStageFlags dstStageMask; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkDependencyFlags dependencyFlags; + int32_t viewOffset; +} VkSubpassDependency2; + +typedef struct VkRenderPassCreateInfo2 { + VkStructureType sType; + const void* pNext; + VkRenderPassCreateFlags flags; + uint32_t attachmentCount; + const VkAttachmentDescription2* pAttachments; + uint32_t subpassCount; + const VkSubpassDescription2* pSubpasses; + uint32_t dependencyCount; + const VkSubpassDependency2* pDependencies; + uint32_t correlatedViewMaskCount; + const uint32_t* pCorrelatedViewMasks; +} VkRenderPassCreateInfo2; + +typedef struct VkSubpassBeginInfo { + VkStructureType sType; + const void* pNext; + VkSubpassContents contents; +} VkSubpassBeginInfo; + +typedef struct VkSubpassEndInfo { + VkStructureType sType; + const void* pNext; +} VkSubpassEndInfo; + +typedef struct VkPhysicalDevice8BitStorageFeatures { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer8BitAccess; + VkBool32 uniformAndStorageBuffer8BitAccess; + VkBool32 storagePushConstant8; +} VkPhysicalDevice8BitStorageFeatures; + +typedef struct VkPhysicalDeviceDriverProperties { + VkStructureType sType; + void* pNext; + VkDriverId driverID; + char driverName[VK_MAX_DRIVER_NAME_SIZE]; + char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; + VkConformanceVersion conformanceVersion; +} VkPhysicalDeviceDriverProperties; + +typedef struct VkPhysicalDeviceShaderAtomicInt64Features { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferInt64Atomics; + VkBool32 shaderSharedInt64Atomics; +} VkPhysicalDeviceShaderAtomicInt64Features; + +typedef struct VkPhysicalDeviceShaderFloat16Int8Features { + VkStructureType sType; + void* pNext; + VkBool32 shaderFloat16; + VkBool32 shaderInt8; +} VkPhysicalDeviceShaderFloat16Int8Features; + +typedef struct VkPhysicalDeviceFloatControlsProperties { + VkStructureType sType; + void* pNext; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 shaderSignedZeroInfNanPreserveFloat16; + VkBool32 shaderSignedZeroInfNanPreserveFloat32; + VkBool32 shaderSignedZeroInfNanPreserveFloat64; + VkBool32 shaderDenormPreserveFloat16; + VkBool32 shaderDenormPreserveFloat32; + VkBool32 shaderDenormPreserveFloat64; + VkBool32 shaderDenormFlushToZeroFloat16; + VkBool32 shaderDenormFlushToZeroFloat32; + VkBool32 shaderDenormFlushToZeroFloat64; + VkBool32 shaderRoundingModeRTEFloat16; + VkBool32 shaderRoundingModeRTEFloat32; + VkBool32 shaderRoundingModeRTEFloat64; + VkBool32 shaderRoundingModeRTZFloat16; + VkBool32 shaderRoundingModeRTZFloat32; + VkBool32 shaderRoundingModeRTZFloat64; +} VkPhysicalDeviceFloatControlsProperties; + +typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t bindingCount; + const VkDescriptorBindingFlags* pBindingFlags; +} VkDescriptorSetLayoutBindingFlagsCreateInfo; + +typedef struct VkPhysicalDeviceDescriptorIndexingFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderInputAttachmentArrayDynamicIndexing; + VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; + VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; + VkBool32 shaderUniformBufferArrayNonUniformIndexing; + VkBool32 shaderSampledImageArrayNonUniformIndexing; + VkBool32 shaderStorageBufferArrayNonUniformIndexing; + VkBool32 shaderStorageImageArrayNonUniformIndexing; + VkBool32 shaderInputAttachmentArrayNonUniformIndexing; + VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; + VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; + VkBool32 descriptorBindingUniformBufferUpdateAfterBind; + VkBool32 descriptorBindingSampledImageUpdateAfterBind; + VkBool32 descriptorBindingStorageImageUpdateAfterBind; + VkBool32 descriptorBindingStorageBufferUpdateAfterBind; + VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingUpdateUnusedWhilePending; + VkBool32 descriptorBindingPartiallyBound; + VkBool32 descriptorBindingVariableDescriptorCount; + VkBool32 runtimeDescriptorArray; +} VkPhysicalDeviceDescriptorIndexingFeatures; + +typedef struct VkPhysicalDeviceDescriptorIndexingProperties { + VkStructureType sType; + void* pNext; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; +} VkPhysicalDeviceDescriptorIndexingProperties; + +typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo { + VkStructureType sType; + const void* pNext; + uint32_t descriptorSetCount; + const uint32_t* pDescriptorCounts; +} VkDescriptorSetVariableDescriptorCountAllocateInfo; + +typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport { + VkStructureType sType; + void* pNext; + uint32_t maxVariableDescriptorCount; +} VkDescriptorSetVariableDescriptorCountLayoutSupport; + +typedef struct VkSubpassDescriptionDepthStencilResolve { + VkStructureType sType; + const void* pNext; + VkResolveModeFlagBits depthResolveMode; + VkResolveModeFlagBits stencilResolveMode; + const VkAttachmentReference2* pDepthStencilResolveAttachment; +} VkSubpassDescriptionDepthStencilResolve; + +typedef struct VkPhysicalDeviceDepthStencilResolveProperties { + VkStructureType sType; + void* pNext; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; +} VkPhysicalDeviceDepthStencilResolveProperties; + +typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures { + VkStructureType sType; + void* pNext; + VkBool32 scalarBlockLayout; +} VkPhysicalDeviceScalarBlockLayoutFeatures; + +typedef struct VkImageStencilUsageCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageUsageFlags stencilUsage; +} VkImageStencilUsageCreateInfo; + +typedef struct VkSamplerReductionModeCreateInfo { + VkStructureType sType; + const void* pNext; + VkSamplerReductionMode reductionMode; +} VkSamplerReductionModeCreateInfo; + +typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties { + VkStructureType sType; + void* pNext; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; +} VkPhysicalDeviceSamplerFilterMinmaxProperties; + +typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures { + VkStructureType sType; + void* pNext; + VkBool32 vulkanMemoryModel; + VkBool32 vulkanMemoryModelDeviceScope; + VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; +} VkPhysicalDeviceVulkanMemoryModelFeatures; + +typedef struct VkPhysicalDeviceImagelessFramebufferFeatures { + VkStructureType sType; + void* pNext; + VkBool32 imagelessFramebuffer; +} VkPhysicalDeviceImagelessFramebufferFeatures; + +typedef struct VkFramebufferAttachmentImageInfo { + VkStructureType sType; + const void* pNext; + VkImageCreateFlags flags; + VkImageUsageFlags usage; + uint32_t width; + uint32_t height; + uint32_t layerCount; + uint32_t viewFormatCount; + const VkFormat* pViewFormats; +} VkFramebufferAttachmentImageInfo; + +typedef struct VkFramebufferAttachmentsCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t attachmentImageInfoCount; + const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos; +} VkFramebufferAttachmentsCreateInfo; + +typedef struct VkRenderPassAttachmentBeginInfo { + VkStructureType sType; + const void* pNext; + uint32_t attachmentCount; + const VkImageView* pAttachments; +} VkRenderPassAttachmentBeginInfo; + +typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures { + VkStructureType sType; + void* pNext; + VkBool32 uniformBufferStandardLayout; +} VkPhysicalDeviceUniformBufferStandardLayoutFeatures; + +typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupExtendedTypes; +} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; + +typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures { + VkStructureType sType; + void* pNext; + VkBool32 separateDepthStencilLayouts; +} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; + +typedef struct VkAttachmentReferenceStencilLayout { + VkStructureType sType; + void* pNext; + VkImageLayout stencilLayout; +} VkAttachmentReferenceStencilLayout; + +typedef struct VkAttachmentDescriptionStencilLayout { + VkStructureType sType; + void* pNext; + VkImageLayout stencilInitialLayout; + VkImageLayout stencilFinalLayout; +} VkAttachmentDescriptionStencilLayout; + +typedef struct VkPhysicalDeviceHostQueryResetFeatures { + VkStructureType sType; + void* pNext; + VkBool32 hostQueryReset; +} VkPhysicalDeviceHostQueryResetFeatures; + +typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures { + VkStructureType sType; + void* pNext; + VkBool32 timelineSemaphore; +} VkPhysicalDeviceTimelineSemaphoreFeatures; + +typedef struct VkPhysicalDeviceTimelineSemaphoreProperties { + VkStructureType sType; + void* pNext; + uint64_t maxTimelineSemaphoreValueDifference; +} VkPhysicalDeviceTimelineSemaphoreProperties; + +typedef struct VkSemaphoreTypeCreateInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreType semaphoreType; + uint64_t initialValue; +} VkSemaphoreTypeCreateInfo; + +typedef struct VkTimelineSemaphoreSubmitInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreValueCount; + const uint64_t* pWaitSemaphoreValues; + uint32_t signalSemaphoreValueCount; + const uint64_t* pSignalSemaphoreValues; +} VkTimelineSemaphoreSubmitInfo; + +typedef struct VkSemaphoreWaitInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreWaitFlags flags; + uint32_t semaphoreCount; + const VkSemaphore* pSemaphores; + const uint64_t* pValues; +} VkSemaphoreWaitInfo; + +typedef struct VkSemaphoreSignalInfo { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + uint64_t value; +} VkSemaphoreSignalInfo; + +typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures { + VkStructureType sType; + void* pNext; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; +} VkPhysicalDeviceBufferDeviceAddressFeatures; + +typedef struct VkBufferDeviceAddressInfo { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkBufferDeviceAddressInfo; + +typedef struct VkBufferOpaqueCaptureAddressCreateInfo { + VkStructureType sType; + const void* pNext; + uint64_t opaqueCaptureAddress; +} VkBufferOpaqueCaptureAddressCreateInfo; + +typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo { + VkStructureType sType; + const void* pNext; + uint64_t opaqueCaptureAddress; +} VkMemoryOpaqueCaptureAddressAllocateInfo; + +typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; +} VkDeviceMemoryOpaqueCaptureAddressInfo; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); +typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2( + VkDevice device, + const VkRenderPassCreateInfo2* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkRenderPass* pRenderPass); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2( + VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin, + const VkSubpassBeginInfo* pSubpassBeginInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2( + VkCommandBuffer commandBuffer, + const VkSubpassBeginInfo* pSubpassBeginInfo, + const VkSubpassEndInfo* pSubpassEndInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2( + VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo); + +VKAPI_ATTR void VKAPI_CALL vkResetQueryPool( + VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue( + VkDevice device, + VkSemaphore semaphore, + uint64_t* pValue); + +VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores( + VkDevice device, + const VkSemaphoreWaitInfo* pWaitInfo, + uint64_t timeout); + +VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore( + VkDevice device, + const VkSemaphoreSignalInfo* pSignalInfo); + +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress( + VkDevice device, + const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); +#endif + + +#define VK_VERSION_1_3 1 +// Vulkan 1.3 version number +#define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0)// Patch version should always be set to 0 + +typedef uint64_t VkFlags64; +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlot) + +typedef enum VkPipelineCreationFeedbackFlagBits { + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 0x00000001, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 0x00000002, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 0x00000004, + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT, + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCreationFeedbackFlagBits; +typedef VkFlags VkPipelineCreationFeedbackFlags; + +typedef enum VkToolPurposeFlagBits { + VK_TOOL_PURPOSE_VALIDATION_BIT = 0x00000001, + VK_TOOL_PURPOSE_PROFILING_BIT = 0x00000002, + VK_TOOL_PURPOSE_TRACING_BIT = 0x00000004, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 0x00000008, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 0x00000010, + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020, + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040, + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = VK_TOOL_PURPOSE_VALIDATION_BIT, + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = VK_TOOL_PURPOSE_PROFILING_BIT, + VK_TOOL_PURPOSE_TRACING_BIT_EXT = VK_TOOL_PURPOSE_TRACING_BIT, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT, + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkToolPurposeFlagBits; +typedef VkFlags VkToolPurposeFlags; +typedef VkFlags VkPrivateDataSlotCreateFlags; +typedef VkFlags64 VkPipelineStageFlags2; + +// Flag bits for VkPipelineStageFlagBits2 +typedef VkFlags64 VkPipelineStageFlagBits2; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0x00000001ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0x00000002ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 0x00000004ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 0x00000008ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 0x00000040ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 0x00000080ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 0x00000100ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 0x00000200ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 0x00000800ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 0x00002000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT = 0x00004000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 0x00008000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 0x00010000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = 0x100000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = 0x200000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT = 0x400000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT = 0x800000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = 0x1000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = 0x2000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 0x4000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000ULL; +#endif +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ULL; + +typedef VkFlags64 VkAccessFlags2; + +// Flag bits for VkAccessFlagBits2 +typedef VkFlags64 VkAccessFlagBits2; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE = 0ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 0x00000001ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT = 0x00000002ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT = 0x00000008ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 0x00000010ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT = 0x00000020ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT = 0x00000040ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 0x00000080ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT = 0x00000800ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT = 0x00001000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT = 0x00002000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT = 0x00004000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT = 0x00008000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT = 0x00010000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = 0x100000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 0x200000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 0x400000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x800000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0x4000000000ULL; +#endif +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = 0x10000000000ULL; + + +typedef enum VkSubmitFlagBits { + VK_SUBMIT_PROTECTED_BIT = 0x00000001, + VK_SUBMIT_PROTECTED_BIT_KHR = VK_SUBMIT_PROTECTED_BIT, + VK_SUBMIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubmitFlagBits; +typedef VkFlags VkSubmitFlags; + +typedef enum VkRenderingFlagBits { + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 0x00000001, + VK_RENDERING_SUSPENDING_BIT = 0x00000002, + VK_RENDERING_RESUMING_BIT = 0x00000004, + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, + VK_RENDERING_SUSPENDING_BIT_KHR = VK_RENDERING_SUSPENDING_BIT, + VK_RENDERING_RESUMING_BIT_KHR = VK_RENDERING_RESUMING_BIT, + VK_RENDERING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkRenderingFlagBits; +typedef VkFlags VkRenderingFlags; +typedef VkFlags64 VkFormatFeatureFlags2; + +// Flag bits for VkFormatFeatureFlagBits2 +typedef VkFlags64 VkFormatFeatureFlagBits2; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 0x00000001ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 0x00000002ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000010ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 0x00000040ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 0x00000080ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 0x00000400ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 0x00000800ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 0x00002000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 0x00004000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 0x00008000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 0x00400000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 0x00800000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 0x80000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 0x100000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 0x200000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000ULL; +#endif +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000ULL; +#endif +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = 0x4000000000ULL; + +typedef struct VkPhysicalDeviceVulkan13Features { + VkStructureType sType; + void* pNext; + VkBool32 robustImageAccess; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; + VkBool32 pipelineCreationCacheControl; + VkBool32 privateData; + VkBool32 shaderDemoteToHelperInvocation; + VkBool32 shaderTerminateInvocation; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; + VkBool32 synchronization2; + VkBool32 textureCompressionASTC_HDR; + VkBool32 shaderZeroInitializeWorkgroupMemory; + VkBool32 dynamicRendering; + VkBool32 shaderIntegerDotProduct; + VkBool32 maintenance4; +} VkPhysicalDeviceVulkan13Features; + +typedef struct VkPhysicalDeviceVulkan13Properties { + VkStructureType sType; + void* pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; + uint32_t maxInlineUniformTotalSize; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceVulkan13Properties; + +typedef struct VkPipelineCreationFeedback { + VkPipelineCreationFeedbackFlags flags; + uint64_t duration; +} VkPipelineCreationFeedback; + +typedef struct VkPipelineCreationFeedbackCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreationFeedback* pPipelineCreationFeedback; + uint32_t pipelineStageCreationFeedbackCount; + VkPipelineCreationFeedback* pPipelineStageCreationFeedbacks; +} VkPipelineCreationFeedbackCreateInfo; + +typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderTerminateInvocation; +} VkPhysicalDeviceShaderTerminateInvocationFeatures; + +typedef struct VkPhysicalDeviceToolProperties { + VkStructureType sType; + void* pNext; + char name[VK_MAX_EXTENSION_NAME_SIZE]; + char version[VK_MAX_EXTENSION_NAME_SIZE]; + VkToolPurposeFlags purposes; + char description[VK_MAX_DESCRIPTION_SIZE]; + char layer[VK_MAX_EXTENSION_NAME_SIZE]; +} VkPhysicalDeviceToolProperties; + +typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderDemoteToHelperInvocation; +} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures; + +typedef struct VkPhysicalDevicePrivateDataFeatures { + VkStructureType sType; + void* pNext; + VkBool32 privateData; +} VkPhysicalDevicePrivateDataFeatures; + +typedef struct VkDevicePrivateDataCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t privateDataSlotRequestCount; +} VkDevicePrivateDataCreateInfo; + +typedef struct VkPrivateDataSlotCreateInfo { + VkStructureType sType; + const void* pNext; + VkPrivateDataSlotCreateFlags flags; +} VkPrivateDataSlotCreateInfo; + +typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures { + VkStructureType sType; + void* pNext; + VkBool32 pipelineCreationCacheControl; +} VkPhysicalDevicePipelineCreationCacheControlFeatures; + +typedef struct VkMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; +} VkMemoryBarrier2; + +typedef struct VkBufferMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier2; + +typedef struct VkImageMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier2; + +typedef struct VkDependencyInfo { + VkStructureType sType; + const void* pNext; + VkDependencyFlags dependencyFlags; + uint32_t memoryBarrierCount; + const VkMemoryBarrier2* pMemoryBarriers; + uint32_t bufferMemoryBarrierCount; + const VkBufferMemoryBarrier2* pBufferMemoryBarriers; + uint32_t imageMemoryBarrierCount; + const VkImageMemoryBarrier2* pImageMemoryBarriers; +} VkDependencyInfo; + +typedef struct VkSemaphoreSubmitInfo { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + uint64_t value; + VkPipelineStageFlags2 stageMask; + uint32_t deviceIndex; +} VkSemaphoreSubmitInfo; + +typedef struct VkCommandBufferSubmitInfo { + VkStructureType sType; + const void* pNext; + VkCommandBuffer commandBuffer; + uint32_t deviceMask; +} VkCommandBufferSubmitInfo; + +typedef struct VkSubmitInfo2 { + VkStructureType sType; + const void* pNext; + VkSubmitFlags flags; + uint32_t waitSemaphoreInfoCount; + const VkSemaphoreSubmitInfo* pWaitSemaphoreInfos; + uint32_t commandBufferInfoCount; + const VkCommandBufferSubmitInfo* pCommandBufferInfos; + uint32_t signalSemaphoreInfoCount; + const VkSemaphoreSubmitInfo* pSignalSemaphoreInfos; +} VkSubmitInfo2; + +typedef struct VkPhysicalDeviceSynchronization2Features { + VkStructureType sType; + void* pNext; + VkBool32 synchronization2; +} VkPhysicalDeviceSynchronization2Features; + +typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderZeroInitializeWorkgroupMemory; +} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + +typedef struct VkPhysicalDeviceImageRobustnessFeatures { + VkStructureType sType; + void* pNext; + VkBool32 robustImageAccess; +} VkPhysicalDeviceImageRobustnessFeatures; + +typedef struct VkBufferCopy2 { + VkStructureType sType; + const void* pNext; + VkDeviceSize srcOffset; + VkDeviceSize dstOffset; + VkDeviceSize size; +} VkBufferCopy2; + +typedef struct VkCopyBufferInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferCopy2* pRegions; +} VkCopyBufferInfo2; + +typedef struct VkImageCopy2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy2; + +typedef struct VkCopyImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageCopy2* pRegions; +} VkCopyImageInfo2; + +typedef struct VkBufferImageCopy2 { + VkStructureType sType; + const void* pNext; + VkDeviceSize bufferOffset; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkBufferImageCopy2; + +typedef struct VkCopyBufferToImageInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkBufferImageCopy2* pRegions; +} VkCopyBufferToImageInfo2; + +typedef struct VkCopyImageToBufferInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferImageCopy2* pRegions; +} VkCopyImageToBufferInfo2; + +typedef struct VkImageBlit2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets[2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets[2]; +} VkImageBlit2; + +typedef struct VkBlitImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageBlit2* pRegions; + VkFilter filter; +} VkBlitImageInfo2; + +typedef struct VkImageResolve2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageResolve2; + +typedef struct VkResolveImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageResolve2* pRegions; +} VkResolveImageInfo2; + +typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures { + VkStructureType sType; + void* pNext; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; +} VkPhysicalDeviceSubgroupSizeControlFeatures; + +typedef struct VkPhysicalDeviceSubgroupSizeControlProperties { + VkStructureType sType; + void* pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; +} VkPhysicalDeviceSubgroupSizeControlProperties; + +typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo { + VkStructureType sType; + void* pNext; + uint32_t requiredSubgroupSize; +} VkPipelineShaderStageRequiredSubgroupSizeCreateInfo; + +typedef struct VkPhysicalDeviceInlineUniformBlockFeatures { + VkStructureType sType; + void* pNext; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; +} VkPhysicalDeviceInlineUniformBlockFeatures; + +typedef struct VkPhysicalDeviceInlineUniformBlockProperties { + VkStructureType sType; + void* pNext; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; +} VkPhysicalDeviceInlineUniformBlockProperties; + +typedef struct VkWriteDescriptorSetInlineUniformBlock { + VkStructureType sType; + const void* pNext; + uint32_t dataSize; + const void* pData; +} VkWriteDescriptorSetInlineUniformBlock; + +typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t maxInlineUniformBlockBindings; +} VkDescriptorPoolInlineUniformBlockCreateInfo; + +typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures { + VkStructureType sType; + void* pNext; + VkBool32 textureCompressionASTC_HDR; +} VkPhysicalDeviceTextureCompressionASTCHDRFeatures; + +typedef struct VkRenderingAttachmentInfo { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; + VkResolveModeFlagBits resolveMode; + VkImageView resolveImageView; + VkImageLayout resolveImageLayout; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkClearValue clearValue; +} VkRenderingAttachmentInfo; + +typedef struct VkRenderingInfo { + VkStructureType sType; + const void* pNext; + VkRenderingFlags flags; + VkRect2D renderArea; + uint32_t layerCount; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkRenderingAttachmentInfo* pColorAttachments; + const VkRenderingAttachmentInfo* pDepthAttachment; + const VkRenderingAttachmentInfo* pStencilAttachment; +} VkRenderingInfo; + +typedef struct VkPipelineRenderingCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; +} VkPipelineRenderingCreateInfo; + +typedef struct VkPhysicalDeviceDynamicRenderingFeatures { + VkStructureType sType; + void* pNext; + VkBool32 dynamicRendering; +} VkPhysicalDeviceDynamicRenderingFeatures; + +typedef struct VkCommandBufferInheritanceRenderingInfo { + VkStructureType sType; + const void* pNext; + VkRenderingFlags flags; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; + VkSampleCountFlagBits rasterizationSamples; +} VkCommandBufferInheritanceRenderingInfo; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderIntegerDotProduct; +} VkPhysicalDeviceShaderIntegerDotProductFeatures; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties { + VkStructureType sType; + void* pNext; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; +} VkPhysicalDeviceShaderIntegerDotProductProperties; + +typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties { + VkStructureType sType; + void* pNext; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; +} VkPhysicalDeviceTexelBufferAlignmentProperties; + +typedef struct VkFormatProperties3 { + VkStructureType sType; + void* pNext; + VkFormatFeatureFlags2 linearTilingFeatures; + VkFormatFeatureFlags2 optimalTilingFeatures; + VkFormatFeatureFlags2 bufferFeatures; +} VkFormatProperties3; + +typedef struct VkPhysicalDeviceMaintenance4Features { + VkStructureType sType; + void* pNext; + VkBool32 maintenance4; +} VkPhysicalDeviceMaintenance4Features; + +typedef struct VkPhysicalDeviceMaintenance4Properties { + VkStructureType sType; + void* pNext; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceMaintenance4Properties; + +typedef struct VkDeviceBufferMemoryRequirements { + VkStructureType sType; + const void* pNext; + const VkBufferCreateInfo* pCreateInfo; +} VkDeviceBufferMemoryRequirements; + +typedef struct VkDeviceImageMemoryRequirements { + VkStructureType sType; + const void* pNext; + const VkImageCreateInfo* pCreateInfo; + VkImageAspectFlagBits planeAspect; +} VkDeviceImageMemoryRequirements; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolProperties)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlot)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); +typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlot)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); +typedef void (VKAPI_PTR *PFN_vkGetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRendering)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRendering)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFace)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopology)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCount)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCount)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnable)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOp)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnable)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOp)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnable)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnable)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); +typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirements)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolProperties( + VkPhysicalDevice physicalDevice, + uint32_t* pToolCount, + VkPhysicalDeviceToolProperties* pToolProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlot( + VkDevice device, + const VkPrivateDataSlotCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPrivateDataSlot* pPrivateDataSlot); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlot( + VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateData( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data); + +VKAPI_ATTR void VKAPI_CALL vkGetPrivateData( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2( + VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags2 stageMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2( + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent* pEvents, + const VkDependencyInfo* pDependencyInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2( + VkCommandBuffer commandBuffer, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2* pSubmits, + VkFence fence); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2* pCopyBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2( + VkCommandBuffer commandBuffer, + const VkCopyImageInfo2* pCopyImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2( + VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2( + VkCommandBuffer commandBuffer, + const VkBlitImageInfo2* pBlitImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2( + VkCommandBuffer commandBuffer, + const VkResolveImageInfo2* pResolveImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRendering( + VkCommandBuffer commandBuffer, + const VkRenderingInfo* pRenderingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullMode( + VkCommandBuffer commandBuffer, + VkCullModeFlags cullMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFace( + VkCommandBuffer commandBuffer, + VkFrontFace frontFace); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopology( + VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCount( + VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport* pViewports); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCount( + VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D* pScissors); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes, + const VkDeviceSize* pStrides); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthWriteEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOp( + VkCommandBuffer commandBuffer, + VkCompareOp depthCompareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOp( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnable( + VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthBiasEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnable( + VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirements( + VkDevice device, + const VkDeviceBufferMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirements( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirements( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +#endif + + +#define VK_KHR_surface 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) +#define VK_KHR_SURFACE_SPEC_VERSION 25 +#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" + +typedef enum VkPresentModeKHR { + VK_PRESENT_MODE_IMMEDIATE_KHR = 0, + VK_PRESENT_MODE_MAILBOX_KHR = 1, + VK_PRESENT_MODE_FIFO_KHR = 2, + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000, + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001, + VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPresentModeKHR; + +typedef enum VkColorSpaceKHR { + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001, + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002, + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003, + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004, + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005, + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006, + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007, + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008, + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009, + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010, + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011, + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012, + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013, + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014, + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000, + VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, + VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkColorSpaceKHR; + +typedef enum VkSurfaceTransformFlagBitsKHR { + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002, + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004, + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080, + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100, + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkSurfaceTransformFlagBitsKHR; + +typedef enum VkCompositeAlphaFlagBitsKHR { + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002, + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004, + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008, + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkCompositeAlphaFlagBitsKHR; +typedef VkFlags VkCompositeAlphaFlagsKHR; +typedef VkFlags VkSurfaceTransformFlagsKHR; +typedef struct VkSurfaceCapabilitiesKHR { + uint32_t minImageCount; + uint32_t maxImageCount; + VkExtent2D currentExtent; + VkExtent2D minImageExtent; + VkExtent2D maxImageExtent; + uint32_t maxImageArrayLayers; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkSurfaceTransformFlagBitsKHR currentTransform; + VkCompositeAlphaFlagsKHR supportedCompositeAlpha; + VkImageUsageFlags supportedUsageFlags; +} VkSurfaceCapabilitiesKHR; + +typedef struct VkSurfaceFormatKHR { + VkFormat format; + VkColorSpaceKHR colorSpace; +} VkSurfaceFormatKHR; + +typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR( + VkInstance instance, + VkSurfaceKHR surface, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + VkSurfaceKHR surface, + VkBool32* pSupported); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t* pSurfaceFormatCount, + VkSurfaceFormatKHR* pSurfaceFormats); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t* pPresentModeCount, + VkPresentModeKHR* pPresentModes); +#endif + + +#define VK_KHR_swapchain 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) +#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70 +#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" + +typedef enum VkSwapchainCreateFlagBitsKHR { + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001, + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002, + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004, + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkSwapchainCreateFlagBitsKHR; +typedef VkFlags VkSwapchainCreateFlagsKHR; + +typedef enum VkDeviceGroupPresentModeFlagBitsKHR { + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001, + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002, + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004, + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008, + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDeviceGroupPresentModeFlagBitsKHR; +typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; +typedef struct VkSwapchainCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainCreateFlagsKHR flags; + VkSurfaceKHR surface; + uint32_t minImageCount; + VkFormat imageFormat; + VkColorSpaceKHR imageColorSpace; + VkExtent2D imageExtent; + uint32_t imageArrayLayers; + VkImageUsageFlags imageUsage; + VkSharingMode imageSharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; + VkSurfaceTransformFlagBitsKHR preTransform; + VkCompositeAlphaFlagBitsKHR compositeAlpha; + VkPresentModeKHR presentMode; + VkBool32 clipped; + VkSwapchainKHR oldSwapchain; +} VkSwapchainCreateInfoKHR; + +typedef struct VkPresentInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore* pWaitSemaphores; + uint32_t swapchainCount; + const VkSwapchainKHR* pSwapchains; + const uint32_t* pImageIndices; + VkResult* pResults; +} VkPresentInfoKHR; + +typedef struct VkImageSwapchainCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; +} VkImageSwapchainCreateInfoKHR; + +typedef struct VkBindImageMemorySwapchainInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; + uint32_t imageIndex; +} VkBindImageMemorySwapchainInfoKHR; + +typedef struct VkAcquireNextImageInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; + uint64_t timeout; + VkSemaphore semaphore; + VkFence fence; + uint32_t deviceMask; +} VkAcquireNextImageInfoKHR; + +typedef struct VkDeviceGroupPresentCapabilitiesKHR { + VkStructureType sType; + void* pNext; + uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE]; + VkDeviceGroupPresentModeFlagsKHR modes; +} VkDeviceGroupPresentCapabilitiesKHR; + +typedef struct VkDeviceGroupPresentInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const uint32_t* pDeviceMasks; + VkDeviceGroupPresentModeFlagBitsKHR mode; +} VkDeviceGroupPresentInfoKHR; + +typedef struct VkDeviceGroupSwapchainCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceGroupPresentModeFlagsKHR modes; +} VkDeviceGroupSwapchainCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain); +typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex); +typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( + VkDevice device, + const VkSwapchainCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSwapchainKHR* pSwapchain); + +VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR( + VkDevice device, + VkSwapchainKHR swapchain, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint32_t* pSwapchainImageCount, + VkImage* pSwapchainImages); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint64_t timeout, + VkSemaphore semaphore, + VkFence fence, + uint32_t* pImageIndex); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR( + VkQueue queue, + const VkPresentInfoKHR* pPresentInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR( + VkDevice device, + VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR( + VkDevice device, + VkSurfaceKHR surface, + VkDeviceGroupPresentModeFlagsKHR* pModes); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t* pRectCount, + VkRect2D* pRects); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR( + VkDevice device, + const VkAcquireNextImageInfoKHR* pAcquireInfo, + uint32_t* pImageIndex); +#endif + + +#define VK_KHR_display 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR) +#define VK_KHR_DISPLAY_SPEC_VERSION 23 +#define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display" +typedef VkFlags VkDisplayModeCreateFlagsKHR; + +typedef enum VkDisplayPlaneAlphaFlagBitsKHR { + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002, + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004, + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008, + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDisplayPlaneAlphaFlagBitsKHR; +typedef VkFlags VkDisplayPlaneAlphaFlagsKHR; +typedef VkFlags VkDisplaySurfaceCreateFlagsKHR; +typedef struct VkDisplayModeParametersKHR { + VkExtent2D visibleRegion; + uint32_t refreshRate; +} VkDisplayModeParametersKHR; + +typedef struct VkDisplayModeCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDisplayModeCreateFlagsKHR flags; + VkDisplayModeParametersKHR parameters; +} VkDisplayModeCreateInfoKHR; + +typedef struct VkDisplayModePropertiesKHR { + VkDisplayModeKHR displayMode; + VkDisplayModeParametersKHR parameters; +} VkDisplayModePropertiesKHR; + +typedef struct VkDisplayPlaneCapabilitiesKHR { + VkDisplayPlaneAlphaFlagsKHR supportedAlpha; + VkOffset2D minSrcPosition; + VkOffset2D maxSrcPosition; + VkExtent2D minSrcExtent; + VkExtent2D maxSrcExtent; + VkOffset2D minDstPosition; + VkOffset2D maxDstPosition; + VkExtent2D minDstExtent; + VkExtent2D maxDstExtent; +} VkDisplayPlaneCapabilitiesKHR; + +typedef struct VkDisplayPlanePropertiesKHR { + VkDisplayKHR currentDisplay; + uint32_t currentStackIndex; +} VkDisplayPlanePropertiesKHR; + +typedef struct VkDisplayPropertiesKHR { + VkDisplayKHR display; + const char* displayName; + VkExtent2D physicalDimensions; + VkExtent2D physicalResolution; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkBool32 planeReorderPossible; + VkBool32 persistentContent; +} VkDisplayPropertiesKHR; + +typedef struct VkDisplaySurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDisplaySurfaceCreateFlagsKHR flags; + VkDisplayModeKHR displayMode; + uint32_t planeIndex; + uint32_t planeStackIndex; + VkSurfaceTransformFlagBitsKHR transform; + float globalAlpha; + VkDisplayPlaneAlphaFlagBitsKHR alphaMode; + VkExtent2D imageExtent; +} VkDisplaySurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayPropertiesKHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayPlanePropertiesKHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR( + VkPhysicalDevice physicalDevice, + uint32_t planeIndex, + uint32_t* pDisplayCount, + VkDisplayKHR* pDisplays); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + uint32_t* pPropertyCount, + VkDisplayModePropertiesKHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + const VkDisplayModeCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDisplayModeKHR* pMode); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + VkDisplayModeKHR mode, + uint32_t planeIndex, + VkDisplayPlaneCapabilitiesKHR* pCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR( + VkInstance instance, + const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + + +#define VK_KHR_display_swapchain 1 +#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10 +#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" +typedef struct VkDisplayPresentInfoKHR { + VkStructureType sType; + const void* pNext; + VkRect2D srcRect; + VkRect2D dstRect; + VkBool32 persistent; +} VkDisplayPresentInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( + VkDevice device, + uint32_t swapchainCount, + const VkSwapchainCreateInfoKHR* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkSwapchainKHR* pSwapchains); +#endif + + +#define VK_KHR_sampler_mirror_clamp_to_edge 1 +#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3 +#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge" + + +#define VK_KHR_dynamic_rendering 1 +#define VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION 1 +#define VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME "VK_KHR_dynamic_rendering" +typedef VkRenderingFlags VkRenderingFlagsKHR; + +typedef VkRenderingFlagBits VkRenderingFlagBitsKHR; + +typedef VkRenderingInfo VkRenderingInfoKHR; + +typedef VkRenderingAttachmentInfo VkRenderingAttachmentInfoKHR; + +typedef VkPipelineRenderingCreateInfo VkPipelineRenderingCreateInfoKHR; + +typedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR; + +typedef VkCommandBufferInheritanceRenderingInfo VkCommandBufferInheritanceRenderingInfoKHR; + +typedef struct VkRenderingFragmentShadingRateAttachmentInfoKHR { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; + VkExtent2D shadingRateAttachmentTexelSize; +} VkRenderingFragmentShadingRateAttachmentInfoKHR; + +typedef struct VkRenderingFragmentDensityMapAttachmentInfoEXT { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; +} VkRenderingFragmentDensityMapAttachmentInfoEXT; + +typedef struct VkAttachmentSampleCountInfoAMD { + VkStructureType sType; + const void* pNext; + uint32_t colorAttachmentCount; + const VkSampleCountFlagBits* pColorAttachmentSamples; + VkSampleCountFlagBits depthStencilAttachmentSamples; +} VkAttachmentSampleCountInfoAMD; + +typedef VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoNV; + +typedef struct VkMultiviewPerViewAttributesInfoNVX { + VkStructureType sType; + const void* pNext; + VkBool32 perViewAttributes; + VkBool32 perViewAttributesPositionXOnly; +} VkMultiviewPerViewAttributesInfoNVX; + +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderingKHR)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderingKHR)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderingKHR( + VkCommandBuffer commandBuffer, + const VkRenderingInfo* pRenderingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderingKHR( + VkCommandBuffer commandBuffer); +#endif + + +#define VK_KHR_multiview 1 +#define VK_KHR_MULTIVIEW_SPEC_VERSION 1 +#define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview" +typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR; + +typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR; + +typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR; + + + +#define VK_KHR_get_physical_device_properties2 1 +#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2 +#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2" +typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR; + +typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR; + +typedef VkFormatProperties2 VkFormatProperties2KHR; + +typedef VkImageFormatProperties2 VkImageFormatProperties2KHR; + +typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR; + +typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR; + +typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR; + +typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR; + +typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures2* pFeatures); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2* pFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, + VkImageFormatProperties2* pImageFormatProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR( + VkPhysicalDevice physicalDevice, + uint32_t* pQueueFamilyPropertyCount, + VkQueueFamilyProperties2* pQueueFamilyProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties2* pMemoryProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, + uint32_t* pPropertyCount, + VkSparseImageFormatProperties2* pProperties); +#endif + + +#define VK_KHR_device_group 1 +#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4 +#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group" +typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR; + +typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR; + +typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR; + +typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR; + +typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR; + +typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR; + +typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR; + +typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR; + +typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR; + +typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR; + +typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); +typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR( + VkDevice device, + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR( + VkCommandBuffer commandBuffer, + uint32_t deviceMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR( + VkCommandBuffer commandBuffer, + uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); +#endif + + +#define VK_KHR_shader_draw_parameters 1 +#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1 +#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters" + + +#define VK_KHR_maintenance1 1 +#define VK_KHR_MAINTENANCE_1_SPEC_VERSION 2 +#define VK_KHR_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_maintenance1" +#define VK_KHR_MAINTENANCE1_SPEC_VERSION VK_KHR_MAINTENANCE_1_SPEC_VERSION +#define VK_KHR_MAINTENANCE1_EXTENSION_NAME VK_KHR_MAINTENANCE_1_EXTENSION_NAME +typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR; + +typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR( + VkDevice device, + VkCommandPool commandPool, + VkCommandPoolTrimFlags flags); +#endif + + +#define VK_KHR_device_group_creation 1 +#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1 +#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation" +#define VK_MAX_DEVICE_GROUP_SIZE_KHR VK_MAX_DEVICE_GROUP_SIZE +typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR; + +typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR( + VkInstance instance, + uint32_t* pPhysicalDeviceGroupCount, + VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); +#endif + + +#define VK_KHR_external_memory_capabilities 1 +#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities" +#define VK_LUID_SIZE_KHR VK_LUID_SIZE +typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR; + +typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR; + +typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR; + +typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR; + +typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR; + +typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR; + +typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR; + +typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR; + +typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR; + +typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, + VkExternalBufferProperties* pExternalBufferProperties); +#endif + + +#define VK_KHR_external_memory 1 +#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory" +#define VK_QUEUE_FAMILY_EXTERNAL_KHR VK_QUEUE_FAMILY_EXTERNAL +typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR; + +typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR; + +typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR; + + + +#define VK_KHR_external_memory_fd 1 +#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd" +typedef struct VkImportMemoryFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + int fd; +} VkImportMemoryFdInfoKHR; + +typedef struct VkMemoryFdPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryFdPropertiesKHR; + +typedef struct VkMemoryGetFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetFdInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR( + VkDevice device, + const VkMemoryGetFdInfoKHR* pGetFdInfo, + int* pFd); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + int fd, + VkMemoryFdPropertiesKHR* pMemoryFdProperties); +#endif + + +#define VK_KHR_external_semaphore_capabilities 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities" +typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR; + +typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR; + +typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR; + +typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR; + +typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR; + +typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, + VkExternalSemaphoreProperties* pExternalSemaphoreProperties); +#endif + + +#define VK_KHR_external_semaphore 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore" +typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR; + +typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR; + +typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR; + + + +#define VK_KHR_external_semaphore_fd 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd" +typedef struct VkImportSemaphoreFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkSemaphoreImportFlags flags; + VkExternalSemaphoreHandleTypeFlagBits handleType; + int fd; +} VkImportSemaphoreFdInfoKHR; + +typedef struct VkSemaphoreGetFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkSemaphoreGetFdInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR( + VkDevice device, + const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR( + VkDevice device, + const VkSemaphoreGetFdInfoKHR* pGetFdInfo, + int* pFd); +#endif + + +#define VK_KHR_push_descriptor 1 +#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2 +#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor" +typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t maxPushDescriptors; +} VkPhysicalDevicePushDescriptorPropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites); +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + const VkWriteDescriptorSet* pDescriptorWrites); + +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR( + VkCommandBuffer commandBuffer, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VkPipelineLayout layout, + uint32_t set, + const void* pData); +#endif + + +#define VK_KHR_shader_float16_int8 1 +#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1 +#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8" +typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR; + +typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR; + + + +#define VK_KHR_16bit_storage 1 +#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1 +#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage" +typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR; + + + +#define VK_KHR_incremental_present 1 +#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2 +#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present" +typedef struct VkRectLayerKHR { + VkOffset2D offset; + VkExtent2D extent; + uint32_t layer; +} VkRectLayerKHR; + +typedef struct VkPresentRegionKHR { + uint32_t rectangleCount; + const VkRectLayerKHR* pRectangles; +} VkPresentRegionKHR; + +typedef struct VkPresentRegionsKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkPresentRegionKHR* pRegions; +} VkPresentRegionsKHR; + + + +#define VK_KHR_descriptor_update_template 1 +typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR; + +#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1 +#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template" +typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR; + +typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR; + +typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR; + +typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR( + VkDevice device, + const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR( + VkDevice device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR( + VkDevice device, + VkDescriptorSet descriptorSet, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const void* pData); +#endif + + +#define VK_KHR_imageless_framebuffer 1 +#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1 +#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer" +typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR; + +typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR; + +typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR; + +typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR; + + + +#define VK_KHR_create_renderpass2 1 +#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1 +#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2" +typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR; + +typedef VkAttachmentDescription2 VkAttachmentDescription2KHR; + +typedef VkAttachmentReference2 VkAttachmentReference2KHR; + +typedef VkSubpassDescription2 VkSubpassDescription2KHR; + +typedef VkSubpassDependency2 VkSubpassDependency2KHR; + +typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR; + +typedef VkSubpassEndInfo VkSubpassEndInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR( + VkDevice device, + const VkRenderPassCreateInfo2* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkRenderPass* pRenderPass); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR( + VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin, + const VkSubpassBeginInfo* pSubpassBeginInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR( + VkCommandBuffer commandBuffer, + const VkSubpassBeginInfo* pSubpassBeginInfo, + const VkSubpassEndInfo* pSubpassEndInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR( + VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo); +#endif + + +#define VK_KHR_shared_presentable_image 1 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" +typedef struct VkSharedPresentSurfaceCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkImageUsageFlags sharedPresentSupportedUsageFlags; +} VkSharedPresentSurfaceCapabilitiesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( + VkDevice device, + VkSwapchainKHR swapchain); +#endif + + +#define VK_KHR_external_fence_capabilities 1 +#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities" +typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR; + +typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR; + +typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR; + +typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR; + +typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR; + +typedef VkExternalFenceProperties VkExternalFencePropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, + VkExternalFenceProperties* pExternalFenceProperties); +#endif + + +#define VK_KHR_external_fence 1 +#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence" +typedef VkFenceImportFlags VkFenceImportFlagsKHR; + +typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR; + +typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR; + + + +#define VK_KHR_external_fence_fd 1 +#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd" +typedef struct VkImportFenceFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkFenceImportFlags flags; + VkExternalFenceHandleTypeFlagBits handleType; + int fd; +} VkImportFenceFdInfoKHR; + +typedef struct VkFenceGetFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkExternalFenceHandleTypeFlagBits handleType; +} VkFenceGetFdInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR( + VkDevice device, + const VkImportFenceFdInfoKHR* pImportFenceFdInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR( + VkDevice device, + const VkFenceGetFdInfoKHR* pGetFdInfo, + int* pFd); +#endif + + +#define VK_KHR_performance_query 1 +#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1 +#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query" + +typedef enum VkPerformanceCounterUnitKHR { + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0, + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1, + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2, + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3, + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4, + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5, + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6, + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7, + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8, + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9, + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10, + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterUnitKHR; + +typedef enum VkPerformanceCounterScopeKHR { + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0, + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1, + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2, + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, + VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, + VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR, + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterScopeKHR; + +typedef enum VkPerformanceCounterStorageKHR { + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0, + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1, + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2, + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3, + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4, + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5, + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterStorageKHR; + +typedef enum VkPerformanceCounterDescriptionFlagBitsKHR { + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001, + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002, + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR, + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterDescriptionFlagBitsKHR; +typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR; + +typedef enum VkAcquireProfilingLockFlagBitsKHR { + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAcquireProfilingLockFlagBitsKHR; +typedef VkFlags VkAcquireProfilingLockFlagsKHR; +typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 performanceCounterQueryPools; + VkBool32 performanceCounterMultipleQueryPools; +} VkPhysicalDevicePerformanceQueryFeaturesKHR; + +typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 allowCommandBufferQueryCopies; +} VkPhysicalDevicePerformanceQueryPropertiesKHR; + +typedef struct VkPerformanceCounterKHR { + VkStructureType sType; + void* pNext; + VkPerformanceCounterUnitKHR unit; + VkPerformanceCounterScopeKHR scope; + VkPerformanceCounterStorageKHR storage; + uint8_t uuid[VK_UUID_SIZE]; +} VkPerformanceCounterKHR; + +typedef struct VkPerformanceCounterDescriptionKHR { + VkStructureType sType; + void* pNext; + VkPerformanceCounterDescriptionFlagsKHR flags; + char name[VK_MAX_DESCRIPTION_SIZE]; + char category[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; +} VkPerformanceCounterDescriptionKHR; + +typedef struct VkQueryPoolPerformanceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t queueFamilyIndex; + uint32_t counterIndexCount; + const uint32_t* pCounterIndices; +} VkQueryPoolPerformanceCreateInfoKHR; + +typedef union VkPerformanceCounterResultKHR { + int32_t int32; + int64_t int64; + uint32_t uint32; + uint64_t uint64; + float float32; + double float64; +} VkPerformanceCounterResultKHR; + +typedef struct VkAcquireProfilingLockInfoKHR { + VkStructureType sType; + const void* pNext; + VkAcquireProfilingLockFlagsKHR flags; + uint64_t timeout; +} VkAcquireProfilingLockInfoKHR; + +typedef struct VkPerformanceQuerySubmitInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t counterPassIndex; +} VkPerformanceQuerySubmitInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t* pCounterCount, + VkPerformanceCounterKHR* pCounters, + VkPerformanceCounterDescriptionKHR* pCounterDescriptions); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + VkPhysicalDevice physicalDevice, + const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, + uint32_t* pNumPasses); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR( + VkDevice device, + const VkAcquireProfilingLockInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR( + VkDevice device); +#endif + + +#define VK_KHR_maintenance2 1 +#define VK_KHR_MAINTENANCE_2_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_2_EXTENSION_NAME "VK_KHR_maintenance2" +#define VK_KHR_MAINTENANCE2_SPEC_VERSION VK_KHR_MAINTENANCE_2_SPEC_VERSION +#define VK_KHR_MAINTENANCE2_EXTENSION_NAME VK_KHR_MAINTENANCE_2_EXTENSION_NAME +typedef VkPointClippingBehavior VkPointClippingBehaviorKHR; + +typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR; + +typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR; + +typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR; + +typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR; + +typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR; + +typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR; + + + +#define VK_KHR_get_surface_capabilities2 1 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2" +typedef struct VkPhysicalDeviceSurfaceInfo2KHR { + VkStructureType sType; + const void* pNext; + VkSurfaceKHR surface; +} VkPhysicalDeviceSurfaceInfo2KHR; + +typedef struct VkSurfaceCapabilities2KHR { + VkStructureType sType; + void* pNext; + VkSurfaceCapabilitiesKHR surfaceCapabilities; +} VkSurfaceCapabilities2KHR; + +typedef struct VkSurfaceFormat2KHR { + VkStructureType sType; + void* pNext; + VkSurfaceFormatKHR surfaceFormat; +} VkSurfaceFormat2KHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + VkSurfaceCapabilities2KHR* pSurfaceCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + uint32_t* pSurfaceFormatCount, + VkSurfaceFormat2KHR* pSurfaceFormats); +#endif + + +#define VK_KHR_variable_pointers 1 +#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1 +#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers" +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR; + +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR; + + + +#define VK_KHR_get_display_properties2 1 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2" +typedef struct VkDisplayProperties2KHR { + VkStructureType sType; + void* pNext; + VkDisplayPropertiesKHR displayProperties; +} VkDisplayProperties2KHR; + +typedef struct VkDisplayPlaneProperties2KHR { + VkStructureType sType; + void* pNext; + VkDisplayPlanePropertiesKHR displayPlaneProperties; +} VkDisplayPlaneProperties2KHR; + +typedef struct VkDisplayModeProperties2KHR { + VkStructureType sType; + void* pNext; + VkDisplayModePropertiesKHR displayModeProperties; +} VkDisplayModeProperties2KHR; + +typedef struct VkDisplayPlaneInfo2KHR { + VkStructureType sType; + const void* pNext; + VkDisplayModeKHR mode; + uint32_t planeIndex; +} VkDisplayPlaneInfo2KHR; + +typedef struct VkDisplayPlaneCapabilities2KHR { + VkStructureType sType; + void* pNext; + VkDisplayPlaneCapabilitiesKHR capabilities; +} VkDisplayPlaneCapabilities2KHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayProperties2KHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayPlaneProperties2KHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + uint32_t* pPropertyCount, + VkDisplayModeProperties2KHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR( + VkPhysicalDevice physicalDevice, + const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, + VkDisplayPlaneCapabilities2KHR* pCapabilities); +#endif + + +#define VK_KHR_dedicated_allocation 1 +#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3 +#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation" +typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR; + +typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR; + + + +#define VK_KHR_storage_buffer_storage_class 1 +#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1 +#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class" + + +#define VK_KHR_relaxed_block_layout 1 +#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout" + + +#define VK_KHR_get_memory_requirements2 1 +#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1 +#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2" +typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR; + +typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR; + +typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR; + +typedef VkMemoryRequirements2 VkMemoryRequirements2KHR; + +typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR; + +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR( + VkDevice device, + const VkImageMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR( + VkDevice device, + const VkBufferMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR( + VkDevice device, + const VkImageSparseMemoryRequirementsInfo2* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +#endif + + +#define VK_KHR_image_format_list 1 +#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1 +#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list" +typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR; + + + +#define VK_KHR_sampler_ycbcr_conversion 1 +typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR; + +#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14 +#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion" +typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR; + +typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR; + +typedef VkChromaLocation VkChromaLocationKHR; + +typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR; + +typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR; + +typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR; + +typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR; + +typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR; + +typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion); +typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR( + VkDevice device, + const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSamplerYcbcrConversion* pYcbcrConversion); + +VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR( + VkDevice device, + VkSamplerYcbcrConversion ycbcrConversion, + const VkAllocationCallbacks* pAllocator); +#endif + + +#define VK_KHR_bind_memory2 1 +#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1 +#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2" +typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR; + +typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR( + VkDevice device, + uint32_t bindInfoCount, + const VkBindBufferMemoryInfo* pBindInfos); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR( + VkDevice device, + uint32_t bindInfoCount, + const VkBindImageMemoryInfo* pBindInfos); +#endif + + +#define VK_KHR_maintenance3 1 +#define VK_KHR_MAINTENANCE_3_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_3_EXTENSION_NAME "VK_KHR_maintenance3" +#define VK_KHR_MAINTENANCE3_SPEC_VERSION VK_KHR_MAINTENANCE_3_SPEC_VERSION +#define VK_KHR_MAINTENANCE3_EXTENSION_NAME VK_KHR_MAINTENANCE_3_EXTENSION_NAME +typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR; + +typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR; + +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR( + VkDevice device, + const VkDescriptorSetLayoutCreateInfo* pCreateInfo, + VkDescriptorSetLayoutSupport* pSupport); +#endif + + +#define VK_KHR_draw_indirect_count 1 +#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 +#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count" +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif + + +#define VK_KHR_shader_subgroup_extended_types 1 +#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1 +#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types" +typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR; + + + +#define VK_KHR_8bit_storage 1 +#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1 +#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage" +typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR; + + + +#define VK_KHR_shader_atomic_int64 1 +#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1 +#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64" +typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR; + + + +#define VK_KHR_shader_clock 1 +#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1 +#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock" +typedef struct VkPhysicalDeviceShaderClockFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupClock; + VkBool32 shaderDeviceClock; +} VkPhysicalDeviceShaderClockFeaturesKHR; + + + +#define VK_KHR_global_priority 1 +#define VK_MAX_GLOBAL_PRIORITY_SIZE_KHR 16U +#define VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION 1 +#define VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME "VK_KHR_global_priority" + +typedef enum VkQueueGlobalPriorityKHR { + VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128, + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256, + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512, + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024, + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR, + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR, + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR, + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR, + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_KHR = 0x7FFFFFFF +} VkQueueGlobalPriorityKHR; +typedef struct VkDeviceQueueGlobalPriorityCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkQueueGlobalPriorityKHR globalPriority; +} VkDeviceQueueGlobalPriorityCreateInfoKHR; + +typedef struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 globalPriorityQuery; +} VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR; + +typedef struct VkQueueFamilyGlobalPriorityPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t priorityCount; + VkQueueGlobalPriorityKHR priorities[VK_MAX_GLOBAL_PRIORITY_SIZE_KHR]; +} VkQueueFamilyGlobalPriorityPropertiesKHR; + + + +#define VK_KHR_driver_properties 1 +#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1 +#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties" +#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE +#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE +typedef VkDriverId VkDriverIdKHR; + +typedef VkConformanceVersion VkConformanceVersionKHR; + +typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR; + + + +#define VK_KHR_shader_float_controls 1 +#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4 +#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls" +typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR; + +typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR; + + + +#define VK_KHR_depth_stencil_resolve 1 +#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1 +#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve" +typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR; + +typedef VkResolveModeFlags VkResolveModeFlagsKHR; + +typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR; + +typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR; + + + +#define VK_KHR_swapchain_mutable_format 1 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format" + + +#define VK_KHR_timeline_semaphore 1 +#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2 +#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore" +typedef VkSemaphoreType VkSemaphoreTypeKHR; + +typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR; + +typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR; + +typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR; + +typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR; + +typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR; + +typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR; + +typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR; + +typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); +typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR( + VkDevice device, + VkSemaphore semaphore, + uint64_t* pValue); + +VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR( + VkDevice device, + const VkSemaphoreWaitInfo* pWaitInfo, + uint64_t timeout); + +VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR( + VkDevice device, + const VkSemaphoreSignalInfo* pSignalInfo); +#endif + + +#define VK_KHR_vulkan_memory_model 1 +#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3 +#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model" +typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR; + + + +#define VK_KHR_shader_terminate_invocation 1 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation" +typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR; + + + +#define VK_KHR_fragment_shading_rate 1 +#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 2 +#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate" + +typedef enum VkFragmentShadingRateCombinerOpKHR { + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF +} VkFragmentShadingRateCombinerOpKHR; +typedef struct VkFragmentShadingRateAttachmentInfoKHR { + VkStructureType sType; + const void* pNext; + const VkAttachmentReference2* pFragmentShadingRateAttachment; + VkExtent2D shadingRateAttachmentTexelSize; +} VkFragmentShadingRateAttachmentInfoKHR; + +typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkExtent2D fragmentSize; + VkFragmentShadingRateCombinerOpKHR combinerOps[2]; +} VkPipelineFragmentShadingRateStateCreateInfoKHR; + +typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 pipelineFragmentShadingRate; + VkBool32 primitiveFragmentShadingRate; + VkBool32 attachmentFragmentShadingRate; +} VkPhysicalDeviceFragmentShadingRateFeaturesKHR; + +typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR { + VkStructureType sType; + void* pNext; + VkExtent2D minFragmentShadingRateAttachmentTexelSize; + VkExtent2D maxFragmentShadingRateAttachmentTexelSize; + uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio; + VkBool32 primitiveFragmentShadingRateWithMultipleViewports; + VkBool32 layeredShadingRateAttachments; + VkBool32 fragmentShadingRateNonTrivialCombinerOps; + VkExtent2D maxFragmentSize; + uint32_t maxFragmentSizeAspectRatio; + uint32_t maxFragmentShadingRateCoverageSamples; + VkSampleCountFlagBits maxFragmentShadingRateRasterizationSamples; + VkBool32 fragmentShadingRateWithShaderDepthStencilWrites; + VkBool32 fragmentShadingRateWithSampleMask; + VkBool32 fragmentShadingRateWithShaderSampleMask; + VkBool32 fragmentShadingRateWithConservativeRasterization; + VkBool32 fragmentShadingRateWithFragmentShaderInterlock; + VkBool32 fragmentShadingRateWithCustomSampleLocations; + VkBool32 fragmentShadingRateStrictMultiplyCombiner; +} VkPhysicalDeviceFragmentShadingRatePropertiesKHR; + +typedef struct VkPhysicalDeviceFragmentShadingRateKHR { + VkStructureType sType; + void* pNext; + VkSampleCountFlags sampleCounts; + VkExtent2D fragmentSize; +} VkPhysicalDeviceFragmentShadingRateKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pFragmentShadingRateCount, + VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR( + VkCommandBuffer commandBuffer, + const VkExtent2D* pFragmentSize, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); +#endif + + +#define VK_KHR_spirv_1_4 1 +#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1 +#define VK_KHR_SPIRV_1_4_EXTENSION_NAME "VK_KHR_spirv_1_4" + + +#define VK_KHR_surface_protected_capabilities 1 +#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities" +typedef struct VkSurfaceProtectedCapabilitiesKHR { + VkStructureType sType; + const void* pNext; + VkBool32 supportsProtected; +} VkSurfaceProtectedCapabilitiesKHR; + + + +#define VK_KHR_separate_depth_stencil_layouts 1 +#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1 +#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts" +typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR; + +typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR; + +typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR; + + + +#define VK_KHR_present_wait 1 +#define VK_KHR_PRESENT_WAIT_SPEC_VERSION 1 +#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait" +typedef struct VkPhysicalDevicePresentWaitFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentWait; +} VkPhysicalDevicePresentWaitFeaturesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkWaitForPresentKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresentKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout); +#endif + + +#define VK_KHR_uniform_buffer_standard_layout 1 +#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout" +typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR; + + + +#define VK_KHR_buffer_device_address 1 +#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1 +#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address" +typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR; + +typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR; + +typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR; + +typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR; + +typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR; + +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR( + VkDevice device, + const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); +#endif + + +#define VK_KHR_deferred_host_operations 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR) +#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4 +#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations" +typedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation); +typedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator); +typedef uint32_t (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation); +typedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR( + VkDevice device, + const VkAllocationCallbacks* pAllocator, + VkDeferredOperationKHR* pDeferredOperation); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR( + VkDevice device, + VkDeferredOperationKHR operation, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR( + VkDevice device, + VkDeferredOperationKHR operation); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR( + VkDevice device, + VkDeferredOperationKHR operation); + +VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR( + VkDevice device, + VkDeferredOperationKHR operation); +#endif + + +#define VK_KHR_pipeline_executable_properties 1 +#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1 +#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties" + +typedef enum VkPipelineExecutableStatisticFormatKHR { + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPipelineExecutableStatisticFormatKHR; +typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 pipelineExecutableInfo; +} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + +typedef struct VkPipelineInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipeline pipeline; +} VkPipelineInfoKHR; + +typedef struct VkPipelineExecutablePropertiesKHR { + VkStructureType sType; + void* pNext; + VkShaderStageFlags stages; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + uint32_t subgroupSize; +} VkPipelineExecutablePropertiesKHR; + +typedef struct VkPipelineExecutableInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipeline pipeline; + uint32_t executableIndex; +} VkPipelineExecutableInfoKHR; + +typedef union VkPipelineExecutableStatisticValueKHR { + VkBool32 b32; + int64_t i64; + uint64_t u64; + double f64; +} VkPipelineExecutableStatisticValueKHR; + +typedef struct VkPipelineExecutableStatisticKHR { + VkStructureType sType; + void* pNext; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkPipelineExecutableStatisticFormatKHR format; + VkPipelineExecutableStatisticValueKHR value; +} VkPipelineExecutableStatisticKHR; + +typedef struct VkPipelineExecutableInternalRepresentationKHR { + VkStructureType sType; + void* pNext; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkBool32 isText; + size_t dataSize; + void* pData; +} VkPipelineExecutableInternalRepresentationKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR( + VkDevice device, + const VkPipelineInfoKHR* pPipelineInfo, + uint32_t* pExecutableCount, + VkPipelineExecutablePropertiesKHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR( + VkDevice device, + const VkPipelineExecutableInfoKHR* pExecutableInfo, + uint32_t* pStatisticCount, + VkPipelineExecutableStatisticKHR* pStatistics); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR( + VkDevice device, + const VkPipelineExecutableInfoKHR* pExecutableInfo, + uint32_t* pInternalRepresentationCount, + VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); +#endif + + +#define VK_KHR_shader_integer_dot_product 1 +#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1 +#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product" +typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR; + +typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR; + + + +#define VK_KHR_pipeline_library 1 +#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1 +#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library" +typedef struct VkPipelineLibraryCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t libraryCount; + const VkPipeline* pLibraries; +} VkPipelineLibraryCreateInfoKHR; + + + +#define VK_KHR_shader_non_semantic_info 1 +#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1 +#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME "VK_KHR_shader_non_semantic_info" + + +#define VK_KHR_present_id 1 +#define VK_KHR_PRESENT_ID_SPEC_VERSION 1 +#define VK_KHR_PRESENT_ID_EXTENSION_NAME "VK_KHR_present_id" +typedef struct VkPresentIdKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const uint64_t* pPresentIds; +} VkPresentIdKHR; + +typedef struct VkPhysicalDevicePresentIdFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentId; +} VkPhysicalDevicePresentIdFeaturesKHR; + + + +#define VK_KHR_synchronization2 1 +#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1 +#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2" +typedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR; + +typedef VkPipelineStageFlagBits2 VkPipelineStageFlagBits2KHR; + +typedef VkAccessFlags2 VkAccessFlags2KHR; + +typedef VkAccessFlagBits2 VkAccessFlagBits2KHR; + +typedef VkSubmitFlagBits VkSubmitFlagBitsKHR; + +typedef VkSubmitFlags VkSubmitFlagsKHR; + +typedef VkMemoryBarrier2 VkMemoryBarrier2KHR; + +typedef VkBufferMemoryBarrier2 VkBufferMemoryBarrier2KHR; + +typedef VkImageMemoryBarrier2 VkImageMemoryBarrier2KHR; + +typedef VkDependencyInfo VkDependencyInfoKHR; + +typedef VkSubmitInfo2 VkSubmitInfo2KHR; + +typedef VkSemaphoreSubmitInfo VkSemaphoreSubmitInfoKHR; + +typedef VkCommandBufferSubmitInfo VkCommandBufferSubmitInfoKHR; + +typedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR; + +typedef struct VkQueueFamilyCheckpointProperties2NV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags2 checkpointExecutionStageMask; +} VkQueueFamilyCheckpointProperties2NV; + +typedef struct VkCheckpointData2NV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags2 stage; + void* pCheckpointMarker; +} VkCheckpointData2NV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); +typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); +typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR( + VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags2 stageMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR( + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent* pEvents, + const VkDependencyInfo* pDependencyInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR( + VkCommandBuffer commandBuffer, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2* pSubmits, + VkFence fence); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker); + +VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV( + VkQueue queue, + uint32_t* pCheckpointDataCount, + VkCheckpointData2NV* pCheckpointData); +#endif + + +#define VK_KHR_fragment_shader_barycentric 1 +#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 +#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_KHR_fragment_shader_barycentric" +typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShaderBarycentric; +} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + +typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 triStripVertexOrderIndependentOfProvokingVertex; +} VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + + + +#define VK_KHR_shader_subgroup_uniform_control_flow 1 +#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1 +#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME "VK_KHR_shader_subgroup_uniform_control_flow" +typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupUniformControlFlow; +} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + + + +#define VK_KHR_zero_initialize_workgroup_memory 1 +#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1 +#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME "VK_KHR_zero_initialize_workgroup_memory" +typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; + + + +#define VK_KHR_workgroup_memory_explicit_layout 1 +#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME "VK_KHR_workgroup_memory_explicit_layout" +typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 workgroupMemoryExplicitLayout; + VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout; + VkBool32 workgroupMemoryExplicitLayout8BitAccess; + VkBool32 workgroupMemoryExplicitLayout16BitAccess; +} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + + + +#define VK_KHR_copy_commands2 1 +#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1 +#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2" +typedef VkCopyBufferInfo2 VkCopyBufferInfo2KHR; + +typedef VkCopyImageInfo2 VkCopyImageInfo2KHR; + +typedef VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2KHR; + +typedef VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2KHR; + +typedef VkBlitImageInfo2 VkBlitImageInfo2KHR; + +typedef VkResolveImageInfo2 VkResolveImageInfo2KHR; + +typedef VkBufferCopy2 VkBufferCopy2KHR; + +typedef VkImageCopy2 VkImageCopy2KHR; + +typedef VkImageBlit2 VkImageBlit2KHR; + +typedef VkBufferImageCopy2 VkBufferImageCopy2KHR; + +typedef VkImageResolve2 VkImageResolve2KHR; + +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR( + VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2* pCopyBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR( + VkCommandBuffer commandBuffer, + const VkCopyImageInfo2* pCopyImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR( + VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR( + VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR( + VkCommandBuffer commandBuffer, + const VkBlitImageInfo2* pBlitImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR( + VkCommandBuffer commandBuffer, + const VkResolveImageInfo2* pResolveImageInfo); +#endif + + +#define VK_KHR_format_feature_flags2 1 +#define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 1 +#define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME "VK_KHR_format_feature_flags2" +typedef VkFormatFeatureFlags2 VkFormatFeatureFlags2KHR; + +typedef VkFormatFeatureFlagBits2 VkFormatFeatureFlagBits2KHR; + +typedef VkFormatProperties3 VkFormatProperties3KHR; + + + +#define VK_KHR_ray_tracing_maintenance1 1 +#define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1" +typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingMaintenance1; + VkBool32 rayTracingPipelineTraceRaysIndirect2; +} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR; + +typedef struct VkTraceRaysIndirectCommand2KHR { + VkDeviceAddress raygenShaderRecordAddress; + VkDeviceSize raygenShaderRecordSize; + VkDeviceAddress missShaderBindingTableAddress; + VkDeviceSize missShaderBindingTableSize; + VkDeviceSize missShaderBindingTableStride; + VkDeviceAddress hitShaderBindingTableAddress; + VkDeviceSize hitShaderBindingTableSize; + VkDeviceSize hitShaderBindingTableStride; + VkDeviceAddress callableShaderBindingTableAddress; + VkDeviceSize callableShaderBindingTableSize; + VkDeviceSize callableShaderBindingTableStride; + uint32_t width; + uint32_t height; + uint32_t depth; +} VkTraceRaysIndirectCommand2KHR; + +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirect2KHR)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirect2KHR( + VkCommandBuffer commandBuffer, + VkDeviceAddress indirectDeviceAddress); +#endif + + +#define VK_KHR_portability_enumeration 1 +#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1 +#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration" + + +#define VK_KHR_maintenance4 1 +#define VK_KHR_MAINTENANCE_4_SPEC_VERSION 2 +#define VK_KHR_MAINTENANCE_4_EXTENSION_NAME "VK_KHR_maintenance4" +typedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR; + +typedef VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesKHR; + +typedef VkDeviceBufferMemoryRequirements VkDeviceBufferMemoryRequirementsKHR; + +typedef VkDeviceImageMemoryRequirements VkDeviceImageMemoryRequirementsKHR; + +typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirementsKHR)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirementsKHR( + VkDevice device, + const VkDeviceBufferMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirementsKHR( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirementsKHR( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +#endif + + +#define VK_EXT_debug_report 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) +#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10 +#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" + +typedef enum VkDebugReportObjectTypeEXT { + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28, + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29, + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30, + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33, + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000, + VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT = 1000029000, + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001, + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000, + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000, + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugReportObjectTypeEXT; + +typedef enum VkDebugReportFlagBitsEXT { + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001, + VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002, + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004, + VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008, + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010, + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugReportFlagBitsEXT; +typedef VkFlags VkDebugReportFlagsEXT; +typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( + VkDebugReportFlagsEXT flags, + VkDebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const char* pLayerPrefix, + const char* pMessage, + void* pUserData); + +typedef struct VkDebugReportCallbackCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportFlagsEXT flags; + PFN_vkDebugReportCallbackEXT pfnCallback; + void* pUserData; +} VkDebugReportCallbackCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback); +typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT( + VkInstance instance, + const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDebugReportCallbackEXT* pCallback); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT( + VkInstance instance, + VkDebugReportCallbackEXT callback, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( + VkInstance instance, + VkDebugReportFlagsEXT flags, + VkDebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const char* pLayerPrefix, + const char* pMessage); +#endif + + +#define VK_NV_glsl_shader 1 +#define VK_NV_GLSL_SHADER_SPEC_VERSION 1 +#define VK_NV_GLSL_SHADER_EXTENSION_NAME "VK_NV_glsl_shader" + + +#define VK_EXT_depth_range_unrestricted 1 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted" + + +#define VK_IMG_filter_cubic 1 +#define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1 +#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic" + + +#define VK_AMD_rasterization_order 1 +#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 +#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order" + +typedef enum VkRasterizationOrderAMD { + VK_RASTERIZATION_ORDER_STRICT_AMD = 0, + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF +} VkRasterizationOrderAMD; +typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { + VkStructureType sType; + const void* pNext; + VkRasterizationOrderAMD rasterizationOrder; +} VkPipelineRasterizationStateRasterizationOrderAMD; + + + +#define VK_AMD_shader_trinary_minmax 1 +#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1 +#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax" + + +#define VK_AMD_shader_explicit_vertex_parameter 1 +#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1 +#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter" + + +#define VK_EXT_debug_marker 1 +#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4 +#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker" +typedef struct VkDebugMarkerObjectNameInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + const char* pObjectName; +} VkDebugMarkerObjectNameInfoEXT; + +typedef struct VkDebugMarkerObjectTagInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkDebugMarkerObjectTagInfoEXT; + +typedef struct VkDebugMarkerMarkerInfoEXT { + VkStructureType sType; + const void* pNext; + const char* pMarkerName; + float color[4]; +} VkDebugMarkerMarkerInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo); +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT( + VkDevice device, + const VkDebugMarkerObjectTagInfoEXT* pTagInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT( + VkDevice device, + const VkDebugMarkerObjectNameInfoEXT* pNameInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT( + VkCommandBuffer commandBuffer, + const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( + VkCommandBuffer commandBuffer, + const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +#endif + + +#define VK_AMD_gcn_shader 1 +#define VK_AMD_GCN_SHADER_SPEC_VERSION 1 +#define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader" + + +#define VK_NV_dedicated_allocation 1 +#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 +#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation" +typedef struct VkDedicatedAllocationImageCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 dedicatedAllocation; +} VkDedicatedAllocationImageCreateInfoNV; + +typedef struct VkDedicatedAllocationBufferCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 dedicatedAllocation; +} VkDedicatedAllocationBufferCreateInfoNV; + +typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { + VkStructureType sType; + const void* pNext; + VkImage image; + VkBuffer buffer; +} VkDedicatedAllocationMemoryAllocateInfoNV; + + + +#define VK_EXT_transform_feedback 1 +#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback" +typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT; +typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 transformFeedback; + VkBool32 geometryStreams; +} VkPhysicalDeviceTransformFeedbackFeaturesEXT; + +typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxTransformFeedbackStreams; + uint32_t maxTransformFeedbackBuffers; + VkDeviceSize maxTransformFeedbackBufferSize; + uint32_t maxTransformFeedbackStreamDataSize; + uint32_t maxTransformFeedbackBufferDataSize; + uint32_t maxTransformFeedbackBufferDataStride; + VkBool32 transformFeedbackQueries; + VkBool32 transformFeedbackStreamsLinesTriangles; + VkBool32 transformFeedbackRasterizationStreamSelect; + VkBool32 transformFeedbackDraw; +} VkPhysicalDeviceTransformFeedbackPropertiesEXT; + +typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationStateStreamCreateFlagsEXT flags; + uint32_t rasterizationStream; +} VkPipelineRasterizationStateStreamCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes); +typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags, + uint32_t index); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + uint32_t index); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT( + VkCommandBuffer commandBuffer, + uint32_t instanceCount, + uint32_t firstInstance, + VkBuffer counterBuffer, + VkDeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride); +#endif + + +#define VK_NVX_binary_import 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX) +#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 1 +#define VK_NVX_BINARY_IMPORT_EXTENSION_NAME "VK_NVX_binary_import" +typedef struct VkCuModuleCreateInfoNVX { + VkStructureType sType; + const void* pNext; + size_t dataSize; + const void* pData; +} VkCuModuleCreateInfoNVX; + +typedef struct VkCuFunctionCreateInfoNVX { + VkStructureType sType; + const void* pNext; + VkCuModuleNVX module; + const char* pName; +} VkCuFunctionCreateInfoNVX; + +typedef struct VkCuLaunchInfoNVX { + VkStructureType sType; + const void* pNext; + VkCuFunctionNVX function; + uint32_t gridDimX; + uint32_t gridDimY; + uint32_t gridDimZ; + uint32_t blockDimX; + uint32_t blockDimY; + uint32_t blockDimZ; + uint32_t sharedMemBytes; + size_t paramCount; + const void* const * pParams; + size_t extraCount; + const void* const * pExtras; +} VkCuLaunchInfoNVX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateCuModuleNVX)(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule); +typedef VkResult (VKAPI_PTR *PFN_vkCreateCuFunctionNVX)(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction); +typedef void (VKAPI_PTR *PFN_vkDestroyCuModuleNVX)(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkDestroyCuFunctionNVX)(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuModuleNVX( + VkDevice device, + const VkCuModuleCreateInfoNVX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCuModuleNVX* pModule); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuFunctionNVX( + VkDevice device, + const VkCuFunctionCreateInfoNVX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCuFunctionNVX* pFunction); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCuModuleNVX( + VkDevice device, + VkCuModuleNVX module, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCuFunctionNVX( + VkDevice device, + VkCuFunctionNVX function, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdCuLaunchKernelNVX( + VkCommandBuffer commandBuffer, + const VkCuLaunchInfoNVX* pLaunchInfo); +#endif + + +#define VK_NVX_image_view_handle 1 +#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 2 +#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle" +typedef struct VkImageViewHandleInfoNVX { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkDescriptorType descriptorType; + VkSampler sampler; +} VkImageViewHandleInfoNVX; + +typedef struct VkImageViewAddressPropertiesNVX { + VkStructureType sType; + void* pNext; + VkDeviceAddress deviceAddress; + VkDeviceSize size; +} VkImageViewAddressPropertiesNVX; + +typedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX( + VkDevice device, + const VkImageViewHandleInfoNVX* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX( + VkDevice device, + VkImageView imageView, + VkImageViewAddressPropertiesNVX* pProperties); +#endif + + +#define VK_AMD_draw_indirect_count 1 +#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2 +#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif + + +#define VK_AMD_negative_viewport_height 1 +#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 +#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height" + + +#define VK_AMD_gpu_shader_half_float 1 +#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2 +#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float" + + +#define VK_AMD_shader_ballot 1 +#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1 +#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot" + + +#define VK_AMD_texture_gather_bias_lod 1 +#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1 +#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod" +typedef struct VkTextureLODGatherFormatPropertiesAMD { + VkStructureType sType; + void* pNext; + VkBool32 supportsTextureGatherLODBiasAMD; +} VkTextureLODGatherFormatPropertiesAMD; + + + +#define VK_AMD_shader_info 1 +#define VK_AMD_SHADER_INFO_SPEC_VERSION 1 +#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info" + +typedef enum VkShaderInfoTypeAMD { + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0, + VK_SHADER_INFO_TYPE_BINARY_AMD = 1, + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2, + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF +} VkShaderInfoTypeAMD; +typedef struct VkShaderResourceUsageAMD { + uint32_t numUsedVgprs; + uint32_t numUsedSgprs; + uint32_t ldsSizePerLocalWorkGroup; + size_t ldsUsageSizeInBytes; + size_t scratchMemUsageInBytes; +} VkShaderResourceUsageAMD; + +typedef struct VkShaderStatisticsInfoAMD { + VkShaderStageFlags shaderStageMask; + VkShaderResourceUsageAMD resourceUsage; + uint32_t numPhysicalVgprs; + uint32_t numPhysicalSgprs; + uint32_t numAvailableVgprs; + uint32_t numAvailableSgprs; + uint32_t computeWorkGroupSize[3]; +} VkShaderStatisticsInfoAMD; + +typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( + VkDevice device, + VkPipeline pipeline, + VkShaderStageFlagBits shaderStage, + VkShaderInfoTypeAMD infoType, + size_t* pInfoSize, + void* pInfo); +#endif + + +#define VK_AMD_shader_image_load_store_lod 1 +#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1 +#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod" + + +#define VK_NV_corner_sampled_image 1 +#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2 +#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image" +typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cornerSampledImage; +} VkPhysicalDeviceCornerSampledImageFeaturesNV; + + + +#define VK_IMG_format_pvrtc 1 +#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1 +#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc" + + +#define VK_NV_external_memory_capabilities 1 +#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities" + +typedef enum VkExternalMemoryHandleTypeFlagBitsNV { + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkExternalMemoryHandleTypeFlagBitsNV; +typedef VkFlags VkExternalMemoryHandleTypeFlagsNV; + +typedef enum VkExternalMemoryFeatureFlagBitsNV { + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001, + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002, + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004, + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkExternalMemoryFeatureFlagBitsNV; +typedef VkFlags VkExternalMemoryFeatureFlagsNV; +typedef struct VkExternalImageFormatPropertiesNV { + VkImageFormatProperties imageFormatProperties; + VkExternalMemoryFeatureFlagsNV externalMemoryFeatures; + VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes; + VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes; +} VkExternalImageFormatPropertiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkExternalMemoryHandleTypeFlagsNV externalHandleType, + VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); +#endif + + +#define VK_NV_external_memory 1 +#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory" +typedef struct VkExternalMemoryImageCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagsNV handleTypes; +} VkExternalMemoryImageCreateInfoNV; + +typedef struct VkExportMemoryAllocateInfoNV { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagsNV handleTypes; +} VkExportMemoryAllocateInfoNV; + + + +#define VK_EXT_validation_flags 1 +#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2 +#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags" + +typedef enum VkValidationCheckEXT { + VK_VALIDATION_CHECK_ALL_EXT = 0, + VK_VALIDATION_CHECK_SHADERS_EXT = 1, + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationCheckEXT; +typedef struct VkValidationFlagsEXT { + VkStructureType sType; + const void* pNext; + uint32_t disabledValidationCheckCount; + const VkValidationCheckEXT* pDisabledValidationChecks; +} VkValidationFlagsEXT; + + + +#define VK_EXT_shader_subgroup_ballot 1 +#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1 +#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot" + + +#define VK_EXT_shader_subgroup_vote 1 +#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1 +#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote" + + +#define VK_EXT_texture_compression_astc_hdr 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr" +typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; + + + +#define VK_EXT_astc_decode_mode 1 +#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1 +#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode" +typedef struct VkImageViewASTCDecodeModeEXT { + VkStructureType sType; + const void* pNext; + VkFormat decodeMode; +} VkImageViewASTCDecodeModeEXT; + +typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 decodeModeSharedExponent; +} VkPhysicalDeviceASTCDecodeFeaturesEXT; + + + +#define VK_EXT_conditional_rendering 1 +#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2 +#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering" + +typedef enum VkConditionalRenderingFlagBitsEXT { + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001, + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkConditionalRenderingFlagBitsEXT; +typedef VkFlags VkConditionalRenderingFlagsEXT; +typedef struct VkConditionalRenderingBeginInfoEXT { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; + VkDeviceSize offset; + VkConditionalRenderingFlagsEXT flags; +} VkConditionalRenderingBeginInfoEXT; + +typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 conditionalRendering; + VkBool32 inheritedConditionalRendering; +} VkPhysicalDeviceConditionalRenderingFeaturesEXT; + +typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 conditionalRenderingEnable; +} VkCommandBufferInheritanceConditionalRenderingInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); +typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT( + VkCommandBuffer commandBuffer, + const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT( + VkCommandBuffer commandBuffer); +#endif + + +#define VK_NV_clip_space_w_scaling 1 +#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1 +#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling" +typedef struct VkViewportWScalingNV { + float xcoeff; + float ycoeff; +} VkViewportWScalingNV; + +typedef struct VkPipelineViewportWScalingStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 viewportWScalingEnable; + uint32_t viewportCount; + const VkViewportWScalingNV* pViewportWScalings; +} VkPipelineViewportWScalingStateCreateInfoNV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV( + VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkViewportWScalingNV* pViewportWScalings); +#endif + + +#define VK_EXT_direct_mode_display 1 +#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1 +#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display" +typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display); +#endif + + +#define VK_EXT_display_surface_counter 1 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter" + +typedef enum VkSurfaceCounterFlagBitsEXT { + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001, + VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT, + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkSurfaceCounterFlagBitsEXT; +typedef VkFlags VkSurfaceCounterFlagsEXT; +typedef struct VkSurfaceCapabilities2EXT { + VkStructureType sType; + void* pNext; + uint32_t minImageCount; + uint32_t maxImageCount; + VkExtent2D currentExtent; + VkExtent2D minImageExtent; + VkExtent2D maxImageExtent; + uint32_t maxImageArrayLayers; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkSurfaceTransformFlagBitsKHR currentTransform; + VkCompositeAlphaFlagsKHR supportedCompositeAlpha; + VkImageUsageFlags supportedUsageFlags; + VkSurfaceCounterFlagsEXT supportedSurfaceCounters; +} VkSurfaceCapabilities2EXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilities2EXT* pSurfaceCapabilities); +#endif + + +#define VK_EXT_display_control 1 +#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control" + +typedef enum VkDisplayPowerStateEXT { + VK_DISPLAY_POWER_STATE_OFF_EXT = 0, + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1, + VK_DISPLAY_POWER_STATE_ON_EXT = 2, + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDisplayPowerStateEXT; + +typedef enum VkDeviceEventTypeEXT { + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0, + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceEventTypeEXT; + +typedef enum VkDisplayEventTypeEXT { + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0, + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDisplayEventTypeEXT; +typedef struct VkDisplayPowerInfoEXT { + VkStructureType sType; + const void* pNext; + VkDisplayPowerStateEXT powerState; +} VkDisplayPowerInfoEXT; + +typedef struct VkDeviceEventInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceEventTypeEXT deviceEvent; +} VkDeviceEventInfoEXT; + +typedef struct VkDisplayEventInfoEXT { + VkStructureType sType; + const void* pNext; + VkDisplayEventTypeEXT displayEvent; +} VkDisplayEventInfoEXT; + +typedef struct VkSwapchainCounterCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkSurfaceCounterFlagsEXT surfaceCounters; +} VkSwapchainCounterCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT( + VkDevice device, + VkDisplayKHR display, + const VkDisplayPowerInfoEXT* pDisplayPowerInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT( + VkDevice device, + const VkDeviceEventInfoEXT* pDeviceEventInfo, + const VkAllocationCallbacks* pAllocator, + VkFence* pFence); + +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT( + VkDevice device, + VkDisplayKHR display, + const VkDisplayEventInfoEXT* pDisplayEventInfo, + const VkAllocationCallbacks* pAllocator, + VkFence* pFence); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT( + VkDevice device, + VkSwapchainKHR swapchain, + VkSurfaceCounterFlagBitsEXT counter, + uint64_t* pCounterValue); +#endif + + +#define VK_GOOGLE_display_timing 1 +#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1 +#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing" +typedef struct VkRefreshCycleDurationGOOGLE { + uint64_t refreshDuration; +} VkRefreshCycleDurationGOOGLE; + +typedef struct VkPastPresentationTimingGOOGLE { + uint32_t presentID; + uint64_t desiredPresentTime; + uint64_t actualPresentTime; + uint64_t earliestPresentTime; + uint64_t presentMargin; +} VkPastPresentationTimingGOOGLE; + +typedef struct VkPresentTimeGOOGLE { + uint32_t presentID; + uint64_t desiredPresentTime; +} VkPresentTimeGOOGLE; + +typedef struct VkPresentTimesInfoGOOGLE { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkPresentTimeGOOGLE* pTimes; +} VkPresentTimesInfoGOOGLE; + +typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE( + VkDevice device, + VkSwapchainKHR swapchain, + VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( + VkDevice device, + VkSwapchainKHR swapchain, + uint32_t* pPresentationTimingCount, + VkPastPresentationTimingGOOGLE* pPresentationTimings); +#endif + + +#define VK_NV_sample_mask_override_coverage 1 +#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1 +#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage" + + +#define VK_NV_geometry_shader_passthrough 1 +#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1 +#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough" + + +#define VK_NV_viewport_array2 1 +#define VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION 1 +#define VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME "VK_NV_viewport_array2" +#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION +#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME + + +#define VK_NVX_multiview_per_view_attributes 1 +#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1 +#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes" +typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { + VkStructureType sType; + void* pNext; + VkBool32 perViewPositionAllComponents; +} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + + + +#define VK_NV_viewport_swizzle 1 +#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1 +#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle" + +typedef enum VkViewportCoordinateSwizzleNV { + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0, + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1, + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2, + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3, + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4, + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5, + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6, + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7, + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF +} VkViewportCoordinateSwizzleNV; +typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV; +typedef struct VkViewportSwizzleNV { + VkViewportCoordinateSwizzleNV x; + VkViewportCoordinateSwizzleNV y; + VkViewportCoordinateSwizzleNV z; + VkViewportCoordinateSwizzleNV w; +} VkViewportSwizzleNV; + +typedef struct VkPipelineViewportSwizzleStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineViewportSwizzleStateCreateFlagsNV flags; + uint32_t viewportCount; + const VkViewportSwizzleNV* pViewportSwizzles; +} VkPipelineViewportSwizzleStateCreateInfoNV; + + + +#define VK_EXT_discard_rectangles 1 +#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1 +#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles" + +typedef enum VkDiscardRectangleModeEXT { + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDiscardRectangleModeEXT; +typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxDiscardRectangles; +} VkPhysicalDeviceDiscardRectanglePropertiesEXT; + +typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineDiscardRectangleStateCreateFlagsEXT flags; + VkDiscardRectangleModeEXT discardRectangleMode; + uint32_t discardRectangleCount; + const VkRect2D* pDiscardRectangles; +} VkPipelineDiscardRectangleStateCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( + VkCommandBuffer commandBuffer, + uint32_t firstDiscardRectangle, + uint32_t discardRectangleCount, + const VkRect2D* pDiscardRectangles); +#endif + + +#define VK_EXT_conservative_rasterization 1 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization" + +typedef enum VkConservativeRasterizationModeEXT { + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0, + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1, + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2, + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkConservativeRasterizationModeEXT; +typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT { + VkStructureType sType; + void* pNext; + float primitiveOverestimationSize; + float maxExtraPrimitiveOverestimationSize; + float extraPrimitiveOverestimationSizeGranularity; + VkBool32 primitiveUnderestimation; + VkBool32 conservativePointAndLineRasterization; + VkBool32 degenerateTrianglesRasterized; + VkBool32 degenerateLinesRasterized; + VkBool32 fullyCoveredFragmentShaderInputVariable; + VkBool32 conservativeRasterizationPostDepthCoverage; +} VkPhysicalDeviceConservativeRasterizationPropertiesEXT; + +typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationConservativeStateCreateFlagsEXT flags; + VkConservativeRasterizationModeEXT conservativeRasterizationMode; + float extraPrimitiveOverestimationSize; +} VkPipelineRasterizationConservativeStateCreateInfoEXT; + + + +#define VK_EXT_depth_clip_enable 1 +#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable" +typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClipEnable; +} VkPhysicalDeviceDepthClipEnableFeaturesEXT; + +typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationDepthClipStateCreateFlagsEXT flags; + VkBool32 depthClipEnable; +} VkPipelineRasterizationDepthClipStateCreateInfoEXT; + + + +#define VK_EXT_swapchain_colorspace 1 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace" + + +#define VK_EXT_hdr_metadata 1 +#define VK_EXT_HDR_METADATA_SPEC_VERSION 2 +#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" +typedef struct VkXYColorEXT { + float x; + float y; +} VkXYColorEXT; + +typedef struct VkHdrMetadataEXT { + VkStructureType sType; + const void* pNext; + VkXYColorEXT displayPrimaryRed; + VkXYColorEXT displayPrimaryGreen; + VkXYColorEXT displayPrimaryBlue; + VkXYColorEXT whitePoint; + float maxLuminance; + float minLuminance; + float maxContentLightLevel; + float maxFrameAverageLightLevel; +} VkHdrMetadataEXT; + +typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( + VkDevice device, + uint32_t swapchainCount, + const VkSwapchainKHR* pSwapchains, + const VkHdrMetadataEXT* pMetadata); +#endif + + +#define VK_EXT_external_memory_dma_buf 1 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf" + + +#define VK_EXT_queue_family_foreign 1 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign" +#define VK_QUEUE_FAMILY_FOREIGN_EXT (~2U) + + +#define VK_EXT_debug_utils 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT) +#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2 +#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils" +typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT; + +typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT { + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugUtilsMessageSeverityFlagBitsEXT; + +typedef enum VkDebugUtilsMessageTypeFlagBitsEXT { + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001, + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002, + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004, + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugUtilsMessageTypeFlagBitsEXT; +typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT; +typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT; +typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT; +typedef struct VkDebugUtilsLabelEXT { + VkStructureType sType; + const void* pNext; + const char* pLabelName; + float color[4]; +} VkDebugUtilsLabelEXT; + +typedef struct VkDebugUtilsObjectNameInfoEXT { + VkStructureType sType; + const void* pNext; + VkObjectType objectType; + uint64_t objectHandle; + const char* pObjectName; +} VkDebugUtilsObjectNameInfoEXT; + +typedef struct VkDebugUtilsMessengerCallbackDataEXT { + VkStructureType sType; + const void* pNext; + VkDebugUtilsMessengerCallbackDataFlagsEXT flags; + const char* pMessageIdName; + int32_t messageIdNumber; + const char* pMessage; + uint32_t queueLabelCount; + const VkDebugUtilsLabelEXT* pQueueLabels; + uint32_t cmdBufLabelCount; + const VkDebugUtilsLabelEXT* pCmdBufLabels; + uint32_t objectCount; + const VkDebugUtilsObjectNameInfoEXT* pObjects; +} VkDebugUtilsMessengerCallbackDataEXT; + +typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)( + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, + void* pUserData); + +typedef struct VkDebugUtilsMessengerCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugUtilsMessengerCreateFlagsEXT flags; + VkDebugUtilsMessageSeverityFlagsEXT messageSeverity; + VkDebugUtilsMessageTypeFlagsEXT messageType; + PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback; + void* pUserData; +} VkDebugUtilsMessengerCreateInfoEXT; + +typedef struct VkDebugUtilsObjectTagInfoEXT { + VkStructureType sType; + const void* pNext; + VkObjectType objectType; + uint64_t objectHandle; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkDebugUtilsObjectTagInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo); +typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo); +typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue); +typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger); +typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT( + VkDevice device, + const VkDebugUtilsObjectNameInfoEXT* pNameInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT( + VkDevice device, + const VkDebugUtilsObjectTagInfoEXT* pTagInfo); + +VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT( + VkQueue queue, + const VkDebugUtilsLabelEXT* pLabelInfo); + +VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT( + VkQueue queue); + +VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT( + VkQueue queue, + const VkDebugUtilsLabelEXT* pLabelInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT( + VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT* pLabelInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT( + VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT* pLabelInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT( + VkInstance instance, + const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDebugUtilsMessengerEXT* pMessenger); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT( + VkInstance instance, + VkDebugUtilsMessengerEXT messenger, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT( + VkInstance instance, + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); +#endif + + +#define VK_EXT_sampler_filter_minmax 1 +#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2 +#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" +typedef VkSamplerReductionMode VkSamplerReductionModeEXT; + +typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT; + +typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT; + + + +#define VK_AMD_gpu_shader_int16 1 +#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2 +#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16" + + +#define VK_AMD_mixed_attachment_samples 1 +#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1 +#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples" + + +#define VK_AMD_shader_fragment_mask 1 +#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1 +#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask" + + +#define VK_EXT_inline_uniform_block 1 +#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1 +#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block" +typedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT; + +typedef VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesEXT; + +typedef VkWriteDescriptorSetInlineUniformBlock VkWriteDescriptorSetInlineUniformBlockEXT; + +typedef VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUniformBlockCreateInfoEXT; + + + +#define VK_EXT_shader_stencil_export 1 +#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1 +#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export" + + +#define VK_EXT_sample_locations 1 +#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1 +#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations" +typedef struct VkSampleLocationEXT { + float x; + float y; +} VkSampleLocationEXT; + +typedef struct VkSampleLocationsInfoEXT { + VkStructureType sType; + const void* pNext; + VkSampleCountFlagBits sampleLocationsPerPixel; + VkExtent2D sampleLocationGridSize; + uint32_t sampleLocationsCount; + const VkSampleLocationEXT* pSampleLocations; +} VkSampleLocationsInfoEXT; + +typedef struct VkAttachmentSampleLocationsEXT { + uint32_t attachmentIndex; + VkSampleLocationsInfoEXT sampleLocationsInfo; +} VkAttachmentSampleLocationsEXT; + +typedef struct VkSubpassSampleLocationsEXT { + uint32_t subpassIndex; + VkSampleLocationsInfoEXT sampleLocationsInfo; +} VkSubpassSampleLocationsEXT; + +typedef struct VkRenderPassSampleLocationsBeginInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t attachmentInitialSampleLocationsCount; + const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations; + uint32_t postSubpassSampleLocationsCount; + const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations; +} VkRenderPassSampleLocationsBeginInfoEXT; + +typedef struct VkPipelineSampleLocationsStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 sampleLocationsEnable; + VkSampleLocationsInfoEXT sampleLocationsInfo; +} VkPipelineSampleLocationsStateCreateInfoEXT; + +typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT { + VkStructureType sType; + void* pNext; + VkSampleCountFlags sampleLocationSampleCounts; + VkExtent2D maxSampleLocationGridSize; + float sampleLocationCoordinateRange[2]; + uint32_t sampleLocationSubPixelBits; + VkBool32 variableSampleLocations; +} VkPhysicalDeviceSampleLocationsPropertiesEXT; + +typedef struct VkMultisamplePropertiesEXT { + VkStructureType sType; + void* pNext; + VkExtent2D maxSampleLocationGridSize; +} VkMultisamplePropertiesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT( + VkCommandBuffer commandBuffer, + const VkSampleLocationsInfoEXT* pSampleLocationsInfo); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT( + VkPhysicalDevice physicalDevice, + VkSampleCountFlagBits samples, + VkMultisamplePropertiesEXT* pMultisampleProperties); +#endif + + +#define VK_EXT_blend_operation_advanced 1 +#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2 +#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced" + +typedef enum VkBlendOverlapEXT { + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0, + VK_BLEND_OVERLAP_DISJOINT_EXT = 1, + VK_BLEND_OVERLAP_CONJOINT_EXT = 2, + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF +} VkBlendOverlapEXT; +typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 advancedBlendCoherentOperations; +} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT; + +typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t advancedBlendMaxColorAttachments; + VkBool32 advancedBlendIndependentBlend; + VkBool32 advancedBlendNonPremultipliedSrcColor; + VkBool32 advancedBlendNonPremultipliedDstColor; + VkBool32 advancedBlendCorrelatedOverlap; + VkBool32 advancedBlendAllOperations; +} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT; + +typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 srcPremultiplied; + VkBool32 dstPremultiplied; + VkBlendOverlapEXT blendOverlap; +} VkPipelineColorBlendAdvancedStateCreateInfoEXT; + + + +#define VK_NV_fragment_coverage_to_color 1 +#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color" +typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV; +typedef struct VkPipelineCoverageToColorStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageToColorStateCreateFlagsNV flags; + VkBool32 coverageToColorEnable; + uint32_t coverageToColorLocation; +} VkPipelineCoverageToColorStateCreateInfoNV; + + + +#define VK_NV_framebuffer_mixed_samples 1 +#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1 +#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples" + +typedef enum VkCoverageModulationModeNV { + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0, + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1, + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2, + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3, + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkCoverageModulationModeNV; +typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV; +typedef struct VkPipelineCoverageModulationStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageModulationStateCreateFlagsNV flags; + VkCoverageModulationModeNV coverageModulationMode; + VkBool32 coverageModulationTableEnable; + uint32_t coverageModulationTableCount; + const float* pCoverageModulationTable; +} VkPipelineCoverageModulationStateCreateInfoNV; + + + +#define VK_NV_fill_rectangle 1 +#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1 +#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle" + + +#define VK_NV_shader_sm_builtins 1 +#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1 +#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins" +typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t shaderSMCount; + uint32_t shaderWarpsPerSM; +} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV; + +typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 shaderSMBuiltins; +} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV; + + + +#define VK_EXT_post_depth_coverage 1 +#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1 +#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage" + + +#define VK_EXT_image_drm_format_modifier 1 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 2 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier" +typedef struct VkDrmFormatModifierPropertiesEXT { + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + VkFormatFeatureFlags drmFormatModifierTilingFeatures; +} VkDrmFormatModifierPropertiesEXT; + +typedef struct VkDrmFormatModifierPropertiesListEXT { + VkStructureType sType; + void* pNext; + uint32_t drmFormatModifierCount; + VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties; +} VkDrmFormatModifierPropertiesListEXT; + +typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT { + VkStructureType sType; + const void* pNext; + uint64_t drmFormatModifier; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; +} VkPhysicalDeviceImageDrmFormatModifierInfoEXT; + +typedef struct VkImageDrmFormatModifierListCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t drmFormatModifierCount; + const uint64_t* pDrmFormatModifiers; +} VkImageDrmFormatModifierListCreateInfoEXT; + +typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + const VkSubresourceLayout* pPlaneLayouts; +} VkImageDrmFormatModifierExplicitCreateInfoEXT; + +typedef struct VkImageDrmFormatModifierPropertiesEXT { + VkStructureType sType; + void* pNext; + uint64_t drmFormatModifier; +} VkImageDrmFormatModifierPropertiesEXT; + +typedef struct VkDrmFormatModifierProperties2EXT { + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + VkFormatFeatureFlags2 drmFormatModifierTilingFeatures; +} VkDrmFormatModifierProperties2EXT; + +typedef struct VkDrmFormatModifierPropertiesList2EXT { + VkStructureType sType; + void* pNext; + uint32_t drmFormatModifierCount; + VkDrmFormatModifierProperties2EXT* pDrmFormatModifierProperties; +} VkDrmFormatModifierPropertiesList2EXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT( + VkDevice device, + VkImage image, + VkImageDrmFormatModifierPropertiesEXT* pProperties); +#endif + + +#define VK_EXT_validation_cache 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) +#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1 +#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache" + +typedef enum VkValidationCacheHeaderVersionEXT { + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1, + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationCacheHeaderVersionEXT; +typedef VkFlags VkValidationCacheCreateFlagsEXT; +typedef struct VkValidationCacheCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkValidationCacheCreateFlagsEXT flags; + size_t initialDataSize; + const void* pInitialData; +} VkValidationCacheCreateInfoEXT; + +typedef struct VkShaderModuleValidationCacheCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkValidationCacheEXT validationCache; +} VkShaderModuleValidationCacheCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache); +typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches); +typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT( + VkDevice device, + const VkValidationCacheCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkValidationCacheEXT* pValidationCache); + +VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT( + VkDevice device, + VkValidationCacheEXT validationCache, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT( + VkDevice device, + VkValidationCacheEXT dstCache, + uint32_t srcCacheCount, + const VkValidationCacheEXT* pSrcCaches); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT( + VkDevice device, + VkValidationCacheEXT validationCache, + size_t* pDataSize, + void* pData); +#endif + + +#define VK_EXT_descriptor_indexing 1 +#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2 +#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing" +typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT; + +typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT; + +typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT; + +typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT; + +typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT; + +typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT; + +typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT; + + + +#define VK_EXT_shader_viewport_index_layer 1 +#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1 +#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer" + + +#define VK_NV_shading_rate_image 1 +#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3 +#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image" + +typedef enum VkShadingRatePaletteEntryNV { + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0, + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1, + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2, + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3, + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11, + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF +} VkShadingRatePaletteEntryNV; + +typedef enum VkCoarseSampleOrderTypeNV { + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0, + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1, + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2, + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3, + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkCoarseSampleOrderTypeNV; +typedef struct VkShadingRatePaletteNV { + uint32_t shadingRatePaletteEntryCount; + const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries; +} VkShadingRatePaletteNV; + +typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 shadingRateImageEnable; + uint32_t viewportCount; + const VkShadingRatePaletteNV* pShadingRatePalettes; +} VkPipelineViewportShadingRateImageStateCreateInfoNV; + +typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 shadingRateImage; + VkBool32 shadingRateCoarseSampleOrder; +} VkPhysicalDeviceShadingRateImageFeaturesNV; + +typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV { + VkStructureType sType; + void* pNext; + VkExtent2D shadingRateTexelSize; + uint32_t shadingRatePaletteSize; + uint32_t shadingRateMaxCoarseSamples; +} VkPhysicalDeviceShadingRateImagePropertiesNV; + +typedef struct VkCoarseSampleLocationNV { + uint32_t pixelX; + uint32_t pixelY; + uint32_t sample; +} VkCoarseSampleLocationNV; + +typedef struct VkCoarseSampleOrderCustomNV { + VkShadingRatePaletteEntryNV shadingRate; + uint32_t sampleCount; + uint32_t sampleLocationCount; + const VkCoarseSampleLocationNV* pSampleLocations; +} VkCoarseSampleOrderCustomNV; + +typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkCoarseSampleOrderTypeNV sampleOrderType; + uint32_t customSampleOrderCount; + const VkCoarseSampleOrderCustomNV* pCustomSampleOrders; +} VkPipelineViewportCoarseSampleOrderStateCreateInfoNV; + +typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV( + VkCommandBuffer commandBuffer, + VkImageView imageView, + VkImageLayout imageLayout); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV( + VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkShadingRatePaletteNV* pShadingRatePalettes); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV( + VkCommandBuffer commandBuffer, + VkCoarseSampleOrderTypeNV sampleOrderType, + uint32_t customSampleOrderCount, + const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); +#endif + + +#define VK_NV_ray_tracing 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV) +#define VK_NV_RAY_TRACING_SPEC_VERSION 3 +#define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing" +#define VK_SHADER_UNUSED_KHR (~0U) +#define VK_SHADER_UNUSED_NV VK_SHADER_UNUSED_KHR + +typedef enum VkRayTracingShaderGroupTypeKHR { + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0, + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1, + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2, + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkRayTracingShaderGroupTypeKHR; +typedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV; + + +typedef enum VkGeometryTypeKHR { + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0, + VK_GEOMETRY_TYPE_AABBS_KHR = 1, + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2, + VK_GEOMETRY_TYPE_TRIANGLES_NV = VK_GEOMETRY_TYPE_TRIANGLES_KHR, + VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR, + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryTypeKHR; +typedef VkGeometryTypeKHR VkGeometryTypeNV; + + +typedef enum VkAccelerationStructureTypeKHR { + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0, + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1, + VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2, + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureTypeKHR; +typedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV; + + +typedef enum VkCopyAccelerationStructureModeKHR { + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0, + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1, + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2, + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3, + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR, + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkCopyAccelerationStructureModeKHR; +typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV; + + +typedef enum VkAccelerationStructureMemoryRequirementsTypeNV { + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0, + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1, + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2, + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkAccelerationStructureMemoryRequirementsTypeNV; + +typedef enum VkGeometryFlagBitsKHR { + VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001, + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002, + VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR, + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR, + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryFlagBitsKHR; +typedef VkFlags VkGeometryFlagsKHR; +typedef VkGeometryFlagsKHR VkGeometryFlagsNV; + +typedef VkGeometryFlagBitsKHR VkGeometryFlagBitsNV; + + +typedef enum VkGeometryInstanceFlagBitsKHR { + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001, + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0x00000002, + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004, + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008, + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR, + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR, + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryInstanceFlagBitsKHR; +typedef VkFlags VkGeometryInstanceFlagsKHR; +typedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV; + +typedef VkGeometryInstanceFlagBitsKHR VkGeometryInstanceFlagBitsNV; + + +typedef enum VkBuildAccelerationStructureFlagBitsKHR { + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008, + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010, + VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0x00000020, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkBuildAccelerationStructureFlagBitsKHR; +typedef VkFlags VkBuildAccelerationStructureFlagsKHR; +typedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV; + +typedef VkBuildAccelerationStructureFlagBitsKHR VkBuildAccelerationStructureFlagBitsNV; + +typedef struct VkRayTracingShaderGroupCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkRayTracingShaderGroupTypeKHR type; + uint32_t generalShader; + uint32_t closestHitShader; + uint32_t anyHitShader; + uint32_t intersectionShader; +} VkRayTracingShaderGroupCreateInfoNV; + +typedef struct VkRayTracingPipelineCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + uint32_t groupCount; + const VkRayTracingShaderGroupCreateInfoNV* pGroups; + uint32_t maxRecursionDepth; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkRayTracingPipelineCreateInfoNV; + +typedef struct VkGeometryTrianglesNV { + VkStructureType sType; + const void* pNext; + VkBuffer vertexData; + VkDeviceSize vertexOffset; + uint32_t vertexCount; + VkDeviceSize vertexStride; + VkFormat vertexFormat; + VkBuffer indexData; + VkDeviceSize indexOffset; + uint32_t indexCount; + VkIndexType indexType; + VkBuffer transformData; + VkDeviceSize transformOffset; +} VkGeometryTrianglesNV; + +typedef struct VkGeometryAABBNV { + VkStructureType sType; + const void* pNext; + VkBuffer aabbData; + uint32_t numAABBs; + uint32_t stride; + VkDeviceSize offset; +} VkGeometryAABBNV; + +typedef struct VkGeometryDataNV { + VkGeometryTrianglesNV triangles; + VkGeometryAABBNV aabbs; +} VkGeometryDataNV; + +typedef struct VkGeometryNV { + VkStructureType sType; + const void* pNext; + VkGeometryTypeKHR geometryType; + VkGeometryDataNV geometry; + VkGeometryFlagsKHR flags; +} VkGeometryNV; + +typedef struct VkAccelerationStructureInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureTypeNV type; + VkBuildAccelerationStructureFlagsNV flags; + uint32_t instanceCount; + uint32_t geometryCount; + const VkGeometryNV* pGeometries; +} VkAccelerationStructureInfoNV; + +typedef struct VkAccelerationStructureCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceSize compactedSize; + VkAccelerationStructureInfoNV info; +} VkAccelerationStructureCreateInfoNV; + +typedef struct VkBindAccelerationStructureMemoryInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureNV accelerationStructure; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + uint32_t deviceIndexCount; + const uint32_t* pDeviceIndices; +} VkBindAccelerationStructureMemoryInfoNV; + +typedef struct VkWriteDescriptorSetAccelerationStructureNV { + VkStructureType sType; + const void* pNext; + uint32_t accelerationStructureCount; + const VkAccelerationStructureNV* pAccelerationStructures; +} VkWriteDescriptorSetAccelerationStructureNV; + +typedef struct VkAccelerationStructureMemoryRequirementsInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureMemoryRequirementsTypeNV type; + VkAccelerationStructureNV accelerationStructure; +} VkAccelerationStructureMemoryRequirementsInfoNV; + +typedef struct VkPhysicalDeviceRayTracingPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t shaderGroupHandleSize; + uint32_t maxRecursionDepth; + uint32_t maxShaderGroupStride; + uint32_t shaderGroupBaseAlignment; + uint64_t maxGeometryCount; + uint64_t maxInstanceCount; + uint64_t maxTriangleCount; + uint32_t maxDescriptorSetAccelerationStructures; +} VkPhysicalDeviceRayTracingPropertiesNV; + +typedef struct VkTransformMatrixKHR { + float matrix[3][4]; +} VkTransformMatrixKHR; + +typedef VkTransformMatrixKHR VkTransformMatrixNV; + +typedef struct VkAabbPositionsKHR { + float minX; + float minY; + float minZ; + float maxX; + float maxY; + float maxZ; +} VkAabbPositionsKHR; + +typedef VkAabbPositionsKHR VkAabbPositionsNV; + +typedef struct VkAccelerationStructureInstanceKHR { + VkTransformMatrixKHR transform; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureInstanceKHR; + +typedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure); +typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode); +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV( + VkDevice device, + const VkAccelerationStructureCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkAccelerationStructureNV* pAccelerationStructure); + +VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV( + VkDevice device, + VkAccelerationStructureNV accelerationStructure, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV( + VkDevice device, + const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, + VkMemoryRequirements2KHR* pMemoryRequirements); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV( + VkDevice device, + uint32_t bindInfoCount, + const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV( + VkCommandBuffer commandBuffer, + const VkAccelerationStructureInfoNV* pInfo, + VkBuffer instanceData, + VkDeviceSize instanceOffset, + VkBool32 update, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkBuffer scratch, + VkDeviceSize scratchOffset); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV( + VkCommandBuffer commandBuffer, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkCopyAccelerationStructureModeKHR mode); + +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNV( + VkCommandBuffer commandBuffer, + VkBuffer raygenShaderBindingTableBuffer, + VkDeviceSize raygenShaderBindingOffset, + VkBuffer missShaderBindingTableBuffer, + VkDeviceSize missShaderBindingOffset, + VkDeviceSize missShaderBindingStride, + VkBuffer hitShaderBindingTableBuffer, + VkDeviceSize hitShaderBindingOffset, + VkDeviceSize hitShaderBindingStride, + VkBuffer callableShaderBindingTableBuffer, + VkDeviceSize callableShaderBindingOffset, + VkDeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkRayTracingPipelineCreateInfoNV* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV( + VkDevice device, + VkAccelerationStructureNV accelerationStructure, + size_t dataSize, + void* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV( + VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + const VkAccelerationStructureNV* pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery); + +VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV( + VkDevice device, + VkPipeline pipeline, + uint32_t shader); +#endif + + +#define VK_NV_representative_fragment_test 1 +#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2 +#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test" +typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 representativeFragmentTest; +} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV; + +typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 representativeFragmentTestEnable; +} VkPipelineRepresentativeFragmentTestStateCreateInfoNV; + + + +#define VK_EXT_filter_cubic 1 +#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 3 +#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic" +typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT { + VkStructureType sType; + void* pNext; + VkImageViewType imageViewType; +} VkPhysicalDeviceImageViewImageFormatInfoEXT; + +typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 filterCubic; + VkBool32 filterCubicMinmax; +} VkFilterCubicImageViewImageFormatPropertiesEXT; + + + +#define VK_QCOM_render_pass_shader_resolve 1 +#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4 +#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME "VK_QCOM_render_pass_shader_resolve" + + +#define VK_EXT_global_priority 1 +#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2 +#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority" +typedef VkQueueGlobalPriorityKHR VkQueueGlobalPriorityEXT; + +typedef VkDeviceQueueGlobalPriorityCreateInfoKHR VkDeviceQueueGlobalPriorityCreateInfoEXT; + + + +#define VK_EXT_external_memory_host 1 +#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host" +typedef struct VkImportMemoryHostPointerInfoEXT { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + void* pHostPointer; +} VkImportMemoryHostPointerInfoEXT; + +typedef struct VkMemoryHostPointerPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryHostPointerPropertiesEXT; + +typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize minImportedHostPointerAlignment; +} VkPhysicalDeviceExternalMemoryHostPropertiesEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHostPointer, + VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); +#endif + + +#define VK_AMD_buffer_marker 1 +#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1 +#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker" +typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD( + VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker); +#endif + + +#define VK_AMD_pipeline_compiler_control 1 +#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1 +#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control" + +typedef enum VkPipelineCompilerControlFlagBitsAMD { + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF +} VkPipelineCompilerControlFlagBitsAMD; +typedef VkFlags VkPipelineCompilerControlFlagsAMD; +typedef struct VkPipelineCompilerControlCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkPipelineCompilerControlFlagsAMD compilerControlFlags; +} VkPipelineCompilerControlCreateInfoAMD; + + + +#define VK_EXT_calibrated_timestamps 1 +#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2 +#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps" + +typedef enum VkTimeDomainEXT { + VK_TIME_DOMAIN_DEVICE_EXT = 0, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2, + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3, + VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF +} VkTimeDomainEXT; +typedef struct VkCalibratedTimestampInfoEXT { + VkStructureType sType; + const void* pNext; + VkTimeDomainEXT timeDomain; +} VkCalibratedTimestampInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains); +typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + VkPhysicalDevice physicalDevice, + uint32_t* pTimeDomainCount, + VkTimeDomainEXT* pTimeDomains); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT( + VkDevice device, + uint32_t timestampCount, + const VkCalibratedTimestampInfoEXT* pTimestampInfos, + uint64_t* pTimestamps, + uint64_t* pMaxDeviation); +#endif + + +#define VK_AMD_shader_core_properties 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2 +#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties" +typedef struct VkPhysicalDeviceShaderCorePropertiesAMD { + VkStructureType sType; + void* pNext; + uint32_t shaderEngineCount; + uint32_t shaderArraysPerEngineCount; + uint32_t computeUnitsPerShaderArray; + uint32_t simdPerComputeUnit; + uint32_t wavefrontsPerSimd; + uint32_t wavefrontSize; + uint32_t sgprsPerSimd; + uint32_t minSgprAllocation; + uint32_t maxSgprAllocation; + uint32_t sgprAllocationGranularity; + uint32_t vgprsPerSimd; + uint32_t minVgprAllocation; + uint32_t maxVgprAllocation; + uint32_t vgprAllocationGranularity; +} VkPhysicalDeviceShaderCorePropertiesAMD; + + + +#define VK_AMD_memory_overallocation_behavior 1 +#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1 +#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior" + +typedef enum VkMemoryOverallocationBehaviorAMD { + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0, + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1, + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2, + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF +} VkMemoryOverallocationBehaviorAMD; +typedef struct VkDeviceMemoryOverallocationCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkMemoryOverallocationBehaviorAMD overallocationBehavior; +} VkDeviceMemoryOverallocationCreateInfoAMD; + + + +#define VK_EXT_vertex_attribute_divisor 1 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor" +typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxVertexAttribDivisor; +} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT; + +typedef struct VkVertexInputBindingDivisorDescriptionEXT { + uint32_t binding; + uint32_t divisor; +} VkVertexInputBindingDivisorDescriptionEXT; + +typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t vertexBindingDivisorCount; + const VkVertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors; +} VkPipelineVertexInputDivisorStateCreateInfoEXT; + +typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 vertexAttributeInstanceRateDivisor; + VkBool32 vertexAttributeInstanceRateZeroDivisor; +} VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT; + + + +#define VK_EXT_pipeline_creation_feedback 1 +#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback" +typedef VkPipelineCreationFeedbackFlagBits VkPipelineCreationFeedbackFlagBitsEXT; + +typedef VkPipelineCreationFeedbackFlags VkPipelineCreationFeedbackFlagsEXT; + +typedef VkPipelineCreationFeedbackCreateInfo VkPipelineCreationFeedbackCreateInfoEXT; + +typedef VkPipelineCreationFeedback VkPipelineCreationFeedbackEXT; + + + +#define VK_NV_shader_subgroup_partitioned 1 +#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1 +#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned" + + +#define VK_NV_compute_shader_derivatives 1 +#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1 +#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives" +typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 computeDerivativeGroupQuads; + VkBool32 computeDerivativeGroupLinear; +} VkPhysicalDeviceComputeShaderDerivativesFeaturesNV; + + + +#define VK_NV_mesh_shader 1 +#define VK_NV_MESH_SHADER_SPEC_VERSION 1 +#define VK_NV_MESH_SHADER_EXTENSION_NAME "VK_NV_mesh_shader" +typedef struct VkPhysicalDeviceMeshShaderFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 taskShader; + VkBool32 meshShader; +} VkPhysicalDeviceMeshShaderFeaturesNV; + +typedef struct VkPhysicalDeviceMeshShaderPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxDrawMeshTasksCount; + uint32_t maxTaskWorkGroupInvocations; + uint32_t maxTaskWorkGroupSize[3]; + uint32_t maxTaskTotalMemorySize; + uint32_t maxTaskOutputCount; + uint32_t maxMeshWorkGroupInvocations; + uint32_t maxMeshWorkGroupSize[3]; + uint32_t maxMeshTotalMemorySize; + uint32_t maxMeshOutputVertices; + uint32_t maxMeshOutputPrimitives; + uint32_t maxMeshMultiviewViewCount; + uint32_t meshOutputPerVertexGranularity; + uint32_t meshOutputPerPrimitiveGranularity; +} VkPhysicalDeviceMeshShaderPropertiesNV; + +typedef struct VkDrawMeshTasksIndirectCommandNV { + uint32_t taskCount; + uint32_t firstTask; +} VkDrawMeshTasksIndirectCommandNV; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV( + VkCommandBuffer commandBuffer, + uint32_t taskCount, + uint32_t firstTask); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif + + +#define VK_NV_fragment_shader_barycentric 1 +#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric" +typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; + + + +#define VK_NV_shader_image_footprint 1 +#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2 +#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint" +typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 imageFootprint; +} VkPhysicalDeviceShaderImageFootprintFeaturesNV; + + + +#define VK_NV_scissor_exclusive 1 +#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1 +#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive" +typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t exclusiveScissorCount; + const VkRect2D* pExclusiveScissors; +} VkPipelineViewportExclusiveScissorStateCreateInfoNV; + +typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 exclusiveScissor; +} VkPhysicalDeviceExclusiveScissorFeaturesNV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( + VkCommandBuffer commandBuffer, + uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + const VkRect2D* pExclusiveScissors); +#endif + + +#define VK_NV_device_diagnostic_checkpoints 1 +#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2 +#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints" +typedef struct VkQueueFamilyCheckpointPropertiesNV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags checkpointExecutionStageMask; +} VkQueueFamilyCheckpointPropertiesNV; + +typedef struct VkCheckpointDataNV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlagBits stage; + void* pCheckpointMarker; +} VkCheckpointDataNV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker); +typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV( + VkCommandBuffer commandBuffer, + const void* pCheckpointMarker); + +VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV( + VkQueue queue, + uint32_t* pCheckpointDataCount, + VkCheckpointDataNV* pCheckpointData); +#endif + + +#define VK_INTEL_shader_integer_functions2 1 +#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1 +#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2" +typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL { + VkStructureType sType; + void* pNext; + VkBool32 shaderIntegerFunctions2; +} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + + + +#define VK_INTEL_performance_query 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL) +#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2 +#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME "VK_INTEL_performance_query" + +typedef enum VkPerformanceConfigurationTypeINTEL { + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceConfigurationTypeINTEL; + +typedef enum VkQueryPoolSamplingModeINTEL { + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkQueryPoolSamplingModeINTEL; + +typedef enum VkPerformanceOverrideTypeINTEL { + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0, + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1, + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceOverrideTypeINTEL; + +typedef enum VkPerformanceParameterTypeINTEL { + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0, + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1, + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceParameterTypeINTEL; + +typedef enum VkPerformanceValueTypeINTEL { + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0, + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1, + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2, + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3, + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4, + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceValueTypeINTEL; +typedef union VkPerformanceValueDataINTEL { + uint32_t value32; + uint64_t value64; + float valueFloat; + VkBool32 valueBool; + const char* valueString; +} VkPerformanceValueDataINTEL; + +typedef struct VkPerformanceValueINTEL { + VkPerformanceValueTypeINTEL type; + VkPerformanceValueDataINTEL data; +} VkPerformanceValueINTEL; + +typedef struct VkInitializePerformanceApiInfoINTEL { + VkStructureType sType; + const void* pNext; + void* pUserData; +} VkInitializePerformanceApiInfoINTEL; + +typedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL { + VkStructureType sType; + const void* pNext; + VkQueryPoolSamplingModeINTEL performanceCountersSampling; +} VkQueryPoolPerformanceQueryCreateInfoINTEL; + +typedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL; + +typedef struct VkPerformanceMarkerInfoINTEL { + VkStructureType sType; + const void* pNext; + uint64_t marker; +} VkPerformanceMarkerInfoINTEL; + +typedef struct VkPerformanceStreamMarkerInfoINTEL { + VkStructureType sType; + const void* pNext; + uint32_t marker; +} VkPerformanceStreamMarkerInfoINTEL; + +typedef struct VkPerformanceOverrideInfoINTEL { + VkStructureType sType; + const void* pNext; + VkPerformanceOverrideTypeINTEL type; + VkBool32 enable; + uint64_t parameter; +} VkPerformanceOverrideInfoINTEL; + +typedef struct VkPerformanceConfigurationAcquireInfoINTEL { + VkStructureType sType; + const void* pNext; + VkPerformanceConfigurationTypeINTEL type; +} VkPerformanceConfigurationAcquireInfoINTEL; + +typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); +typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo); +typedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration); +typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration); +typedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL( + VkDevice device, + const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); + +VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL( + VkDevice device); + +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceMarkerInfoINTEL* pMarkerInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceOverrideInfoINTEL* pOverrideInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL( + VkDevice device, + const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, + VkPerformanceConfigurationINTEL* pConfiguration); + +VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL( + VkDevice device, + VkPerformanceConfigurationINTEL configuration); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL( + VkQueue queue, + VkPerformanceConfigurationINTEL configuration); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL( + VkDevice device, + VkPerformanceParameterTypeINTEL parameter, + VkPerformanceValueINTEL* pValue); +#endif + + +#define VK_EXT_pci_bus_info 1 +#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2 +#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info" +typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t pciDomain; + uint32_t pciBus; + uint32_t pciDevice; + uint32_t pciFunction; +} VkPhysicalDevicePCIBusInfoPropertiesEXT; + + + +#define VK_AMD_display_native_hdr 1 +#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1 +#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME "VK_AMD_display_native_hdr" +typedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD { + VkStructureType sType; + void* pNext; + VkBool32 localDimmingSupport; +} VkDisplayNativeHdrSurfaceCapabilitiesAMD; + +typedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkBool32 localDimmingEnable; +} VkSwapchainDisplayNativeHdrCreateInfoAMD; + +typedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD( + VkDevice device, + VkSwapchainKHR swapChain, + VkBool32 localDimmingEnable); +#endif + + +#define VK_EXT_fragment_density_map 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 2 +#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map" +typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMap; + VkBool32 fragmentDensityMapDynamic; + VkBool32 fragmentDensityMapNonSubsampledImages; +} VkPhysicalDeviceFragmentDensityMapFeaturesEXT; + +typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT { + VkStructureType sType; + void* pNext; + VkExtent2D minFragmentDensityTexelSize; + VkExtent2D maxFragmentDensityTexelSize; + VkBool32 fragmentDensityInvocations; +} VkPhysicalDeviceFragmentDensityMapPropertiesEXT; + +typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkAttachmentReference fragmentDensityMapAttachment; +} VkRenderPassFragmentDensityMapCreateInfoEXT; + + + +#define VK_EXT_scalar_block_layout 1 +#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1 +#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout" +typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT; + + + +#define VK_GOOGLE_hlsl_functionality1 1 +#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION 1 +#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1" +#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION +#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME + + +#define VK_GOOGLE_decorate_string 1 +#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1 +#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string" + + +#define VK_EXT_subgroup_size_control 1 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control" +typedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT; + +typedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT; + +typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; + + + +#define VK_AMD_shader_core_properties2 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2" + +typedef enum VkShaderCorePropertiesFlagBitsAMD { + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF +} VkShaderCorePropertiesFlagBitsAMD; +typedef VkFlags VkShaderCorePropertiesFlagsAMD; +typedef struct VkPhysicalDeviceShaderCoreProperties2AMD { + VkStructureType sType; + void* pNext; + VkShaderCorePropertiesFlagsAMD shaderCoreFeatures; + uint32_t activeComputeUnitCount; +} VkPhysicalDeviceShaderCoreProperties2AMD; + + + +#define VK_AMD_device_coherent_memory 1 +#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1 +#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory" +typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD { + VkStructureType sType; + void* pNext; + VkBool32 deviceCoherentMemory; +} VkPhysicalDeviceCoherentMemoryFeaturesAMD; + + + +#define VK_EXT_shader_image_atomic_int64 1 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64" +typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderImageInt64Atomics; + VkBool32 sparseImageInt64Atomics; +} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + + + +#define VK_EXT_memory_budget 1 +#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1 +#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget" +typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize heapBudget[VK_MAX_MEMORY_HEAPS]; + VkDeviceSize heapUsage[VK_MAX_MEMORY_HEAPS]; +} VkPhysicalDeviceMemoryBudgetPropertiesEXT; + + + +#define VK_EXT_memory_priority 1 +#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1 +#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority" +typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 memoryPriority; +} VkPhysicalDeviceMemoryPriorityFeaturesEXT; + +typedef struct VkMemoryPriorityAllocateInfoEXT { + VkStructureType sType; + const void* pNext; + float priority; +} VkMemoryPriorityAllocateInfoEXT; + + + +#define VK_NV_dedicated_allocation_image_aliasing 1 +#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1 +#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing" +typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 dedicatedAllocationImageAliasing; +} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + + + +#define VK_EXT_buffer_device_address 1 +#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2 +#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address" +typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; +} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; + +typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT; + +typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT; + +typedef struct VkBufferDeviceAddressCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceAddress deviceAddress; +} VkBufferDeviceAddressCreateInfoEXT; + +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); +#endif + + +#define VK_EXT_tooling_info 1 +#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1 +#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info" +typedef VkToolPurposeFlagBits VkToolPurposeFlagBitsEXT; + +typedef VkToolPurposeFlags VkToolPurposeFlagsEXT; + +typedef VkPhysicalDeviceToolProperties VkPhysicalDeviceToolPropertiesEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT( + VkPhysicalDevice physicalDevice, + uint32_t* pToolCount, + VkPhysicalDeviceToolProperties* pToolProperties); +#endif + + +#define VK_EXT_separate_stencil_usage 1 +#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1 +#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage" +typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT; + + + +#define VK_EXT_validation_features 1 +#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5 +#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features" + +typedef enum VkValidationFeatureEnableEXT { + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0, + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1, + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2, + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3, + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4, + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationFeatureEnableEXT; + +typedef enum VkValidationFeatureDisableEXT { + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0, + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1, + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2, + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3, + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4, + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5, + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6, + VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = 7, + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationFeatureDisableEXT; +typedef struct VkValidationFeaturesEXT { + VkStructureType sType; + const void* pNext; + uint32_t enabledValidationFeatureCount; + const VkValidationFeatureEnableEXT* pEnabledValidationFeatures; + uint32_t disabledValidationFeatureCount; + const VkValidationFeatureDisableEXT* pDisabledValidationFeatures; +} VkValidationFeaturesEXT; + + + +#define VK_NV_cooperative_matrix 1 +#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1 +#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix" + +typedef enum VkComponentTypeNV { + VK_COMPONENT_TYPE_FLOAT16_NV = 0, + VK_COMPONENT_TYPE_FLOAT32_NV = 1, + VK_COMPONENT_TYPE_FLOAT64_NV = 2, + VK_COMPONENT_TYPE_SINT8_NV = 3, + VK_COMPONENT_TYPE_SINT16_NV = 4, + VK_COMPONENT_TYPE_SINT32_NV = 5, + VK_COMPONENT_TYPE_SINT64_NV = 6, + VK_COMPONENT_TYPE_UINT8_NV = 7, + VK_COMPONENT_TYPE_UINT16_NV = 8, + VK_COMPONENT_TYPE_UINT32_NV = 9, + VK_COMPONENT_TYPE_UINT64_NV = 10, + VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkComponentTypeNV; + +typedef enum VkScopeNV { + VK_SCOPE_DEVICE_NV = 1, + VK_SCOPE_WORKGROUP_NV = 2, + VK_SCOPE_SUBGROUP_NV = 3, + VK_SCOPE_QUEUE_FAMILY_NV = 5, + VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkScopeNV; +typedef struct VkCooperativeMatrixPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t MSize; + uint32_t NSize; + uint32_t KSize; + VkComponentTypeNV AType; + VkComponentTypeNV BType; + VkComponentTypeNV CType; + VkComponentTypeNV DType; + VkScopeNV scope; +} VkCooperativeMatrixPropertiesNV; + +typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cooperativeMatrix; + VkBool32 cooperativeMatrixRobustBufferAccess; +} VkPhysicalDeviceCooperativeMatrixFeaturesNV; + +typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV { + VkStructureType sType; + void* pNext; + VkShaderStageFlags cooperativeMatrixSupportedStages; +} VkPhysicalDeviceCooperativeMatrixPropertiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkCooperativeMatrixPropertiesNV* pProperties); +#endif + + +#define VK_NV_coverage_reduction_mode 1 +#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1 +#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode" + +typedef enum VkCoverageReductionModeNV { + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0, + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1, + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkCoverageReductionModeNV; +typedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV; +typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 coverageReductionMode; +} VkPhysicalDeviceCoverageReductionModeFeaturesNV; + +typedef struct VkPipelineCoverageReductionStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageReductionStateCreateFlagsNV flags; + VkCoverageReductionModeNV coverageReductionMode; +} VkPipelineCoverageReductionStateCreateInfoNV; + +typedef struct VkFramebufferMixedSamplesCombinationNV { + VkStructureType sType; + void* pNext; + VkCoverageReductionModeNV coverageReductionMode; + VkSampleCountFlagBits rasterizationSamples; + VkSampleCountFlags depthStencilSamples; + VkSampleCountFlags colorSamples; +} VkFramebufferMixedSamplesCombinationNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + VkPhysicalDevice physicalDevice, + uint32_t* pCombinationCount, + VkFramebufferMixedSamplesCombinationNV* pCombinations); +#endif + + +#define VK_EXT_fragment_shader_interlock 1 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock" +typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShaderSampleInterlock; + VkBool32 fragmentShaderPixelInterlock; + VkBool32 fragmentShaderShadingRateInterlock; +} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT; + + + +#define VK_EXT_ycbcr_image_arrays 1 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays" +typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 ycbcrImageArrays; +} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT; + + + +#define VK_EXT_provoking_vertex 1 +#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1 +#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex" + +typedef enum VkProvokingVertexModeEXT { + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0, + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1, + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkProvokingVertexModeEXT; +typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 provokingVertexLast; + VkBool32 transformFeedbackPreservesProvokingVertex; +} VkPhysicalDeviceProvokingVertexFeaturesEXT; + +typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 provokingVertexModePerPipeline; + VkBool32 transformFeedbackPreservesTriangleFanProvokingVertex; +} VkPhysicalDeviceProvokingVertexPropertiesEXT; + +typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkProvokingVertexModeEXT provokingVertexMode; +} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT; + + + +#define VK_EXT_headless_surface 1 +#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1 +#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface" +typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT; +typedef struct VkHeadlessSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkHeadlessSurfaceCreateFlagsEXT flags; +} VkHeadlessSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT( + VkInstance instance, + const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + + +#define VK_EXT_line_rasterization 1 +#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1 +#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization" + +typedef enum VkLineRasterizationModeEXT { + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1, + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3, + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkLineRasterizationModeEXT; +typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 rectangularLines; + VkBool32 bresenhamLines; + VkBool32 smoothLines; + VkBool32 stippledRectangularLines; + VkBool32 stippledBresenhamLines; + VkBool32 stippledSmoothLines; +} VkPhysicalDeviceLineRasterizationFeaturesEXT; + +typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t lineSubPixelPrecisionBits; +} VkPhysicalDeviceLineRasterizationPropertiesEXT; + +typedef struct VkPipelineRasterizationLineStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkLineRasterizationModeEXT lineRasterizationMode; + VkBool32 stippledLineEnable; + uint32_t lineStippleFactor; + uint16_t lineStipplePattern; +} VkPipelineRasterizationLineStateCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT( + VkCommandBuffer commandBuffer, + uint32_t lineStippleFactor, + uint16_t lineStipplePattern); +#endif + + +#define VK_EXT_shader_atomic_float 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float" +typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferFloat32Atomics; + VkBool32 shaderBufferFloat32AtomicAdd; + VkBool32 shaderBufferFloat64Atomics; + VkBool32 shaderBufferFloat64AtomicAdd; + VkBool32 shaderSharedFloat32Atomics; + VkBool32 shaderSharedFloat32AtomicAdd; + VkBool32 shaderSharedFloat64Atomics; + VkBool32 shaderSharedFloat64AtomicAdd; + VkBool32 shaderImageFloat32Atomics; + VkBool32 shaderImageFloat32AtomicAdd; + VkBool32 sparseImageFloat32Atomics; + VkBool32 sparseImageFloat32AtomicAdd; +} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT; + + + +#define VK_EXT_host_query_reset 1 +#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1 +#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset" +typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT( + VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); +#endif + + +#define VK_EXT_index_type_uint8 1 +#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1 +#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8" +typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 indexTypeUint8; +} VkPhysicalDeviceIndexTypeUint8FeaturesEXT; + + + +#define VK_EXT_extended_dynamic_state 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state" +typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState; +} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT( + VkCommandBuffer commandBuffer, + VkCullModeFlags cullMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT( + VkCommandBuffer commandBuffer, + VkFrontFace frontFace); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT( + VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT( + VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport* pViewports); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT( + VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D* pScissors); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes, + const VkDeviceSize* pStrides); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthWriteEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT( + VkCommandBuffer commandBuffer, + VkCompareOp depthCompareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp); +#endif + + +#define VK_EXT_shader_atomic_float2 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2" +typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferFloat16Atomics; + VkBool32 shaderBufferFloat16AtomicAdd; + VkBool32 shaderBufferFloat16AtomicMinMax; + VkBool32 shaderBufferFloat32AtomicMinMax; + VkBool32 shaderBufferFloat64AtomicMinMax; + VkBool32 shaderSharedFloat16Atomics; + VkBool32 shaderSharedFloat16AtomicAdd; + VkBool32 shaderSharedFloat16AtomicMinMax; + VkBool32 shaderSharedFloat32AtomicMinMax; + VkBool32 shaderSharedFloat64AtomicMinMax; + VkBool32 shaderImageFloat32AtomicMinMax; + VkBool32 sparseImageFloat32AtomicMinMax; +} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT; + + + +#define VK_EXT_shader_demote_to_helper_invocation 1 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation" +typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; + + + +#define VK_NV_device_generated_commands 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV) +#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 +#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands" + +typedef enum VkIndirectCommandsTokenTypeNV { + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectCommandsTokenTypeNV; + +typedef enum VkIndirectStateFlagBitsNV { + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001, + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectStateFlagBitsNV; +typedef VkFlags VkIndirectStateFlagsNV; + +typedef enum VkIndirectCommandsLayoutUsageFlagBitsNV { + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0x00000001, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0x00000002, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x00000004, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectCommandsLayoutUsageFlagBitsNV; +typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNV; +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxGraphicsShaderGroupCount; + uint32_t maxIndirectSequenceCount; + uint32_t maxIndirectCommandsTokenCount; + uint32_t maxIndirectCommandsStreamCount; + uint32_t maxIndirectCommandsTokenOffset; + uint32_t maxIndirectCommandsStreamStride; + uint32_t minSequencesCountBufferOffsetAlignment; + uint32_t minSequencesIndexBufferOffsetAlignment; + uint32_t minIndirectCommandsBufferOffsetAlignment; +} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 deviceGeneratedCommands; +} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + +typedef struct VkGraphicsShaderGroupCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + const VkPipelineVertexInputStateCreateInfo* pVertexInputState; + const VkPipelineTessellationStateCreateInfo* pTessellationState; +} VkGraphicsShaderGroupCreateInfoNV; + +typedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t groupCount; + const VkGraphicsShaderGroupCreateInfoNV* pGroups; + uint32_t pipelineCount; + const VkPipeline* pPipelines; +} VkGraphicsPipelineShaderGroupsCreateInfoNV; + +typedef struct VkBindShaderGroupIndirectCommandNV { + uint32_t groupIndex; +} VkBindShaderGroupIndirectCommandNV; + +typedef struct VkBindIndexBufferIndirectCommandNV { + VkDeviceAddress bufferAddress; + uint32_t size; + VkIndexType indexType; +} VkBindIndexBufferIndirectCommandNV; + +typedef struct VkBindVertexBufferIndirectCommandNV { + VkDeviceAddress bufferAddress; + uint32_t size; + uint32_t stride; +} VkBindVertexBufferIndirectCommandNV; + +typedef struct VkSetStateFlagsIndirectCommandNV { + uint32_t data; +} VkSetStateFlagsIndirectCommandNV; + +typedef struct VkIndirectCommandsStreamNV { + VkBuffer buffer; + VkDeviceSize offset; +} VkIndirectCommandsStreamNV; + +typedef struct VkIndirectCommandsLayoutTokenNV { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsTokenTypeNV tokenType; + uint32_t stream; + uint32_t offset; + uint32_t vertexBindingUnit; + VkBool32 vertexDynamicStride; + VkPipelineLayout pushconstantPipelineLayout; + VkShaderStageFlags pushconstantShaderStageFlags; + uint32_t pushconstantOffset; + uint32_t pushconstantSize; + VkIndirectStateFlagsNV indirectStateFlags; + uint32_t indexTypeCount; + const VkIndexType* pIndexTypes; + const uint32_t* pIndexTypeValues; +} VkIndirectCommandsLayoutTokenNV; + +typedef struct VkIndirectCommandsLayoutCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsLayoutUsageFlagsNV flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t tokenCount; + const VkIndirectCommandsLayoutTokenNV* pTokens; + uint32_t streamCount; + const uint32_t* pStreamStrides; +} VkIndirectCommandsLayoutCreateInfoNV; + +typedef struct VkGeneratedCommandsInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; + VkIndirectCommandsLayoutNV indirectCommandsLayout; + uint32_t streamCount; + const VkIndirectCommandsStreamNV* pStreams; + uint32_t sequencesCount; + VkBuffer preprocessBuffer; + VkDeviceSize preprocessOffset; + VkDeviceSize preprocessSize; + VkBuffer sequencesCountBuffer; + VkDeviceSize sequencesCountOffset; + VkBuffer sequencesIndexBuffer; + VkDeviceSize sequencesIndexOffset; +} VkGeneratedCommandsInfoNV; + +typedef struct VkGeneratedCommandsMemoryRequirementsInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; + VkIndirectCommandsLayoutNV indirectCommandsLayout; + uint32_t maxSequencesCount; +} VkGeneratedCommandsMemoryRequirementsInfoNV; + +typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsNV)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsNV)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsNV)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex); +typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNV)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNV)(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV( + VkDevice device, + const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV( + VkCommandBuffer commandBuffer, + const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV( + VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline, + uint32_t groupIndex); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV( + VkDevice device, + const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); + +VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV( + VkDevice device, + VkIndirectCommandsLayoutNV indirectCommandsLayout, + const VkAllocationCallbacks* pAllocator); +#endif + + +#define VK_NV_inherited_viewport_scissor 1 +#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1 +#define VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME "VK_NV_inherited_viewport_scissor" +typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 inheritedViewportScissor2D; +} VkPhysicalDeviceInheritedViewportScissorFeaturesNV; + +typedef struct VkCommandBufferInheritanceViewportScissorInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 viewportScissor2D; + uint32_t viewportDepthCount; + const VkViewport* pViewportDepths; +} VkCommandBufferInheritanceViewportScissorInfoNV; + + + +#define VK_EXT_texel_buffer_alignment 1 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment" +typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 texelBufferAlignment; +} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT; + +typedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT; + + + +#define VK_QCOM_render_pass_transform 1 +#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 2 +#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform" +typedef struct VkRenderPassTransformBeginInfoQCOM { + VkStructureType sType; + void* pNext; + VkSurfaceTransformFlagBitsKHR transform; +} VkRenderPassTransformBeginInfoQCOM; + +typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM { + VkStructureType sType; + void* pNext; + VkSurfaceTransformFlagBitsKHR transform; + VkRect2D renderArea; +} VkCommandBufferInheritanceRenderPassTransformInfoQCOM; + + + +#define VK_EXT_device_memory_report 1 +#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2 +#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report" + +typedef enum VkDeviceMemoryReportEventTypeEXT { + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceMemoryReportEventTypeEXT; +typedef VkFlags VkDeviceMemoryReportFlagsEXT; +typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 deviceMemoryReport; +} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT; + +typedef struct VkDeviceMemoryReportCallbackDataEXT { + VkStructureType sType; + void* pNext; + VkDeviceMemoryReportFlagsEXT flags; + VkDeviceMemoryReportEventTypeEXT type; + uint64_t memoryObjectId; + VkDeviceSize size; + VkObjectType objectType; + uint64_t objectHandle; + uint32_t heapIndex; +} VkDeviceMemoryReportCallbackDataEXT; + +typedef void (VKAPI_PTR *PFN_vkDeviceMemoryReportCallbackEXT)( + const VkDeviceMemoryReportCallbackDataEXT* pCallbackData, + void* pUserData); + +typedef struct VkDeviceDeviceMemoryReportCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceMemoryReportFlagsEXT flags; + PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback; + void* pUserData; +} VkDeviceDeviceMemoryReportCreateInfoEXT; + + + +#define VK_EXT_acquire_drm_display 1 +#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1 +#define VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_drm_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireDrmDisplayEXT( + VkPhysicalDevice physicalDevice, + int32_t drmFd, + VkDisplayKHR display); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDrmDisplayEXT( + VkPhysicalDevice physicalDevice, + int32_t drmFd, + uint32_t connectorId, + VkDisplayKHR* display); +#endif + + +#define VK_EXT_robustness2 1 +#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1 +#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2" +typedef struct VkPhysicalDeviceRobustness2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 robustBufferAccess2; + VkBool32 robustImageAccess2; + VkBool32 nullDescriptor; +} VkPhysicalDeviceRobustness2FeaturesEXT; + +typedef struct VkPhysicalDeviceRobustness2PropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize robustStorageBufferAccessSizeAlignment; + VkDeviceSize robustUniformBufferAccessSizeAlignment; +} VkPhysicalDeviceRobustness2PropertiesEXT; + + + +#define VK_EXT_custom_border_color 1 +#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12 +#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color" +typedef struct VkSamplerCustomBorderColorCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkClearColorValue customBorderColor; + VkFormat format; +} VkSamplerCustomBorderColorCreateInfoEXT; + +typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxCustomBorderColorSamplers; +} VkPhysicalDeviceCustomBorderColorPropertiesEXT; + +typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 customBorderColors; + VkBool32 customBorderColorWithoutFormat; +} VkPhysicalDeviceCustomBorderColorFeaturesEXT; + + + +#define VK_GOOGLE_user_type 1 +#define VK_GOOGLE_USER_TYPE_SPEC_VERSION 1 +#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME "VK_GOOGLE_user_type" + + +#define VK_EXT_private_data 1 +typedef VkPrivateDataSlot VkPrivateDataSlotEXT; + +#define VK_EXT_PRIVATE_DATA_SPEC_VERSION 1 +#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data" +typedef VkPrivateDataSlotCreateFlags VkPrivateDataSlotCreateFlagsEXT; + +typedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT; + +typedef VkDevicePrivateDataCreateInfo VkDevicePrivateDataCreateInfoEXT; + +typedef VkPrivateDataSlotCreateInfo VkPrivateDataSlotCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); +typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); +typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlotEXT( + VkDevice device, + const VkPrivateDataSlotCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPrivateDataSlot* pPrivateDataSlot); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlotEXT( + VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateDataEXT( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data); + +VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t* pData); +#endif + + +#define VK_EXT_pipeline_creation_cache_control 1 +#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3 +#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control" +typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT; + + + +#define VK_NV_device_diagnostics_config 1 +#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 2 +#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME "VK_NV_device_diagnostics_config" + +typedef enum VkDeviceDiagnosticsConfigFlagBitsNV { + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0x00000001, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0x00000002, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0x00000004, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 0x00000008, + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkDeviceDiagnosticsConfigFlagBitsNV; +typedef VkFlags VkDeviceDiagnosticsConfigFlagsNV; +typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 diagnosticsConfig; +} VkPhysicalDeviceDiagnosticsConfigFeaturesNV; + +typedef struct VkDeviceDiagnosticsConfigCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceDiagnosticsConfigFlagsNV flags; +} VkDeviceDiagnosticsConfigCreateInfoNV; + + + +#define VK_QCOM_render_pass_store_ops 1 +#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2 +#define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME "VK_QCOM_render_pass_store_ops" + + +#define VK_EXT_graphics_pipeline_library 1 +#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION 1 +#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME "VK_EXT_graphics_pipeline_library" + +typedef enum VkGraphicsPipelineLibraryFlagBitsEXT { + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 0x00000001, + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 0x00000002, + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 0x00000004, + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 0x00000008, + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkGraphicsPipelineLibraryFlagBitsEXT; +typedef VkFlags VkGraphicsPipelineLibraryFlagsEXT; +typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 graphicsPipelineLibrary; +} VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; + +typedef struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 graphicsPipelineLibraryFastLinking; + VkBool32 graphicsPipelineLibraryIndependentInterpolationDecoration; +} VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; + +typedef struct VkGraphicsPipelineLibraryCreateInfoEXT { + VkStructureType sType; + void* pNext; + VkGraphicsPipelineLibraryFlagsEXT flags; +} VkGraphicsPipelineLibraryCreateInfoEXT; + + + +#define VK_AMD_shader_early_and_late_fragment_tests 1 +#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION 1 +#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME "VK_AMD_shader_early_and_late_fragment_tests" +typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD { + VkStructureType sType; + void* pNext; + VkBool32 shaderEarlyAndLateFragmentTests; +} VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; + + + +#define VK_NV_fragment_shading_rate_enums 1 +#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums" + +typedef enum VkFragmentShadingRateTypeNV { + VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0, + VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1, + VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkFragmentShadingRateTypeNV; + +typedef enum VkFragmentShadingRateNV { + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10, + VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11, + VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12, + VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13, + VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14, + VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15, + VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 0x7FFFFFFF +} VkFragmentShadingRateNV; +typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShadingRateEnums; + VkBool32 supersampleFragmentShadingRates; + VkBool32 noInvocationFragmentShadingRates; +} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + +typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV { + VkStructureType sType; + void* pNext; + VkSampleCountFlagBits maxFragmentShadingRateInvocationCount; +} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + +typedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkFragmentShadingRateTypeNV shadingRateType; + VkFragmentShadingRateNV shadingRate; + VkFragmentShadingRateCombinerOpKHR combinerOps[2]; +} VkPipelineFragmentShadingRateEnumStateCreateInfoNV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateEnumNV)(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV( + VkCommandBuffer commandBuffer, + VkFragmentShadingRateNV shadingRate, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); +#endif + + +#define VK_NV_ray_tracing_motion_blur 1 +#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1 +#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur" + +typedef enum VkAccelerationStructureMotionInstanceTypeNV { + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkAccelerationStructureMotionInstanceTypeNV; +typedef VkFlags VkAccelerationStructureMotionInfoFlagsNV; +typedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV; +typedef union VkDeviceOrHostAddressConstKHR { + VkDeviceAddress deviceAddress; + const void* hostAddress; +} VkDeviceOrHostAddressConstKHR; + +typedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR vertexData; +} VkAccelerationStructureGeometryMotionTrianglesDataNV; + +typedef struct VkAccelerationStructureMotionInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t maxInstances; + VkAccelerationStructureMotionInfoFlagsNV flags; +} VkAccelerationStructureMotionInfoNV; + +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; +} VkAccelerationStructureMatrixMotionInstanceNV; + +typedef struct VkSRTDataNV { + float sx; + float a; + float b; + float pvx; + float sy; + float c; + float pvy; + float sz; + float pvz; + float qx; + float qy; + float qz; + float qw; + float tx; + float ty; + float tz; +} VkSRTDataNV; + +typedef struct VkAccelerationStructureSRTMotionInstanceNV { + VkSRTDataNV transformT0; + VkSRTDataNV transformT1; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureSRTMotionInstanceNV; + +typedef union VkAccelerationStructureMotionInstanceDataNV { + VkAccelerationStructureInstanceKHR staticInstance; + VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance; + VkAccelerationStructureSRTMotionInstanceNV srtMotionInstance; +} VkAccelerationStructureMotionInstanceDataNV; + +typedef struct VkAccelerationStructureMotionInstanceNV { + VkAccelerationStructureMotionInstanceTypeNV type; + VkAccelerationStructureMotionInstanceFlagsNV flags; + VkAccelerationStructureMotionInstanceDataNV data; +} VkAccelerationStructureMotionInstanceNV; + +typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingMotionBlur; + VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect; +} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV; + + + +#define VK_EXT_ycbcr_2plane_444_formats 1 +#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1 +#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats" +typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 ycbcr2plane444Formats; +} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + + + +#define VK_EXT_fragment_density_map2 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2" +typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMapDeferred; +} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT; + +typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 subsampledLoads; + VkBool32 subsampledCoarseReconstructionEarlyAccess; + uint32_t maxSubsampledArrayLayers; + uint32_t maxDescriptorSetSubsampledSamplers; +} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT; + + + +#define VK_QCOM_rotated_copy_commands 1 +#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 1 +#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME "VK_QCOM_rotated_copy_commands" +typedef struct VkCopyCommandTransformInfoQCOM { + VkStructureType sType; + const void* pNext; + VkSurfaceTransformFlagBitsKHR transform; +} VkCopyCommandTransformInfoQCOM; + + + +#define VK_EXT_image_robustness 1 +#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1 +#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness" +typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT; + + + +#define VK_EXT_image_compression_control 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME "VK_EXT_image_compression_control" + +typedef enum VkImageCompressionFlagBitsEXT { + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0, + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0x00000001, + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0x00000002, + VK_IMAGE_COMPRESSION_DISABLED_EXT = 0x00000004, + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkImageCompressionFlagBitsEXT; +typedef VkFlags VkImageCompressionFlagsEXT; + +typedef enum VkImageCompressionFixedRateFlagBitsEXT { + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0, + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0x00000001, + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0x00000002, + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0x00000004, + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0x00000008, + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0x00000010, + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0x00000020, + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0x00000040, + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0x00000080, + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0x00000100, + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0x00000200, + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0x00000400, + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0x00000800, + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0x00001000, + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0x00002000, + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0x00004000, + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0x00008000, + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0x00010000, + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0x00020000, + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0x00040000, + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0x00080000, + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0x00100000, + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0x00200000, + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0x00400000, + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0x00800000, + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkImageCompressionFixedRateFlagBitsEXT; +typedef VkFlags VkImageCompressionFixedRateFlagsEXT; +typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 imageCompressionControl; +} VkPhysicalDeviceImageCompressionControlFeaturesEXT; + +typedef struct VkImageCompressionControlEXT { + VkStructureType sType; + const void* pNext; + VkImageCompressionFlagsEXT flags; + uint32_t compressionControlPlaneCount; + VkImageCompressionFixedRateFlagsEXT* pFixedRateFlags; +} VkImageCompressionControlEXT; + +typedef struct VkSubresourceLayout2EXT { + VkStructureType sType; + void* pNext; + VkSubresourceLayout subresourceLayout; +} VkSubresourceLayout2EXT; + +typedef struct VkImageSubresource2EXT { + VkStructureType sType; + void* pNext; + VkImageSubresource imageSubresource; +} VkImageSubresource2EXT; + +typedef struct VkImageCompressionPropertiesEXT { + VkStructureType sType; + void* pNext; + VkImageCompressionFlagsEXT imageCompressionFlags; + VkImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags; +} VkImageCompressionPropertiesEXT; + +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2EXT)(VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2EXT( + VkDevice device, + VkImage image, + const VkImageSubresource2EXT* pSubresource, + VkSubresourceLayout2EXT* pLayout); +#endif + + +#define VK_EXT_4444_formats 1 +#define VK_EXT_4444_FORMATS_SPEC_VERSION 1 +#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats" +typedef struct VkPhysicalDevice4444FormatsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 formatA4R4G4B4; + VkBool32 formatA4B4G4R4; +} VkPhysicalDevice4444FormatsFeaturesEXT; + + + +#define VK_ARM_rasterization_order_attachment_access 1 +#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1 +#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_ARM_rasterization_order_attachment_access" +typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 rasterizationOrderColorAttachmentAccess; + VkBool32 rasterizationOrderDepthAttachmentAccess; + VkBool32 rasterizationOrderStencilAttachmentAccess; +} VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; + + + +#define VK_EXT_rgba10x6_formats 1 +#define VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION 1 +#define VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME "VK_EXT_rgba10x6_formats" +typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 formatRgba10x6WithoutYCbCrSampler; +} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT; + + + +#define VK_NV_acquire_winrt_display 1 +#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1 +#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV( + VkPhysicalDevice physicalDevice, + uint32_t deviceRelativeId, + VkDisplayKHR* pDisplay); +#endif + + +#define VK_VALVE_mutable_descriptor_type 1 +#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1 +#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_VALVE_mutable_descriptor_type" +typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE { + VkStructureType sType; + void* pNext; + VkBool32 mutableDescriptorType; +} VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + +typedef struct VkMutableDescriptorTypeListVALVE { + uint32_t descriptorTypeCount; + const VkDescriptorType* pDescriptorTypes; +} VkMutableDescriptorTypeListVALVE; + +typedef struct VkMutableDescriptorTypeCreateInfoVALVE { + VkStructureType sType; + const void* pNext; + uint32_t mutableDescriptorTypeListCount; + const VkMutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists; +} VkMutableDescriptorTypeCreateInfoVALVE; + + + +#define VK_EXT_vertex_input_dynamic_state 1 +#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2 +#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state" +typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 vertexInputDynamicState; +} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT; + +typedef struct VkVertexInputBindingDescription2EXT { + VkStructureType sType; + void* pNext; + uint32_t binding; + uint32_t stride; + VkVertexInputRate inputRate; + uint32_t divisor; +} VkVertexInputBindingDescription2EXT; + +typedef struct VkVertexInputAttributeDescription2EXT { + VkStructureType sType; + void* pNext; + uint32_t location; + uint32_t binding; + VkFormat format; + uint32_t offset; +} VkVertexInputAttributeDescription2EXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT( + VkCommandBuffer commandBuffer, + uint32_t vertexBindingDescriptionCount, + const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); +#endif + + +#define VK_EXT_physical_device_drm 1 +#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1 +#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm" +typedef struct VkPhysicalDeviceDrmPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 hasPrimary; + VkBool32 hasRender; + int64_t primaryMajor; + int64_t primaryMinor; + int64_t renderMajor; + int64_t renderMinor; +} VkPhysicalDeviceDrmPropertiesEXT; + + + +#define VK_EXT_depth_clip_control 1 +#define VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME "VK_EXT_depth_clip_control" +typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClipControl; +} VkPhysicalDeviceDepthClipControlFeaturesEXT; + +typedef struct VkPipelineViewportDepthClipControlCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 negativeOneToOne; +} VkPipelineViewportDepthClipControlCreateInfoEXT; + + + +#define VK_EXT_primitive_topology_list_restart 1 +#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1 +#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME "VK_EXT_primitive_topology_list_restart" +typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 primitiveTopologyListRestart; + VkBool32 primitiveTopologyPatchListRestart; +} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + + + +#define VK_HUAWEI_subpass_shading 1 +#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 2 +#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading" +typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI { + VkStructureType sType; + void* pNext; + VkRenderPass renderPass; + uint32_t subpass; +} VkSubpassShadingPipelineCreateInfoHUAWEI; + +typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 subpassShading; +} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI; + +typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI { + VkStructureType sType; + void* pNext; + uint32_t maxSubpassShadingWorkgroupSizeAspectRatio; +} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI; + +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)(VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize); +typedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + VkDevice device, + VkRenderPass renderpass, + VkExtent2D* pMaxWorkgroupSize); + +VKAPI_ATTR void VKAPI_CALL vkCmdSubpassShadingHUAWEI( + VkCommandBuffer commandBuffer); +#endif + + +#define VK_HUAWEI_invocation_mask 1 +#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1 +#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask" +typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 invocationMask; +} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI; + +typedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI( + VkCommandBuffer commandBuffer, + VkImageView imageView, + VkImageLayout imageLayout); +#endif + + +#define VK_NV_external_memory_rdma 1 +typedef void* VkRemoteAddressNV; +#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME "VK_NV_external_memory_rdma" +typedef struct VkMemoryGetRemoteAddressInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetRemoteAddressInfoNV; + +typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 externalMemoryRDMA; +} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryRemoteAddressNV)(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV( + VkDevice device, + const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, + VkRemoteAddressNV* pAddress); +#endif + + +#define VK_EXT_pipeline_properties 1 +#define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME "VK_EXT_pipeline_properties" +typedef VkPipelineInfoKHR VkPipelineInfoEXT; + +typedef struct VkPipelinePropertiesIdentifierEXT { + VkStructureType sType; + void* pNext; + uint8_t pipelineIdentifier[VK_UUID_SIZE]; +} VkPipelinePropertiesIdentifierEXT; + +typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pipelinePropertiesIdentifier; +} VkPhysicalDevicePipelinePropertiesFeaturesEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelinePropertiesEXT)(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT( + VkDevice device, + const VkPipelineInfoEXT* pPipelineInfo, + VkBaseOutStructure* pPipelineProperties); +#endif + + +#define VK_EXT_extended_dynamic_state2 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2" +typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState2; + VkBool32 extendedDynamicState2LogicOp; + VkBool32 extendedDynamicState2PatchControlPoints; +} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT( + VkCommandBuffer commandBuffer, + uint32_t patchControlPoints); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthBiasEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT( + VkCommandBuffer commandBuffer, + VkLogicOp logicOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable); +#endif + + +#define VK_EXT_color_write_enable 1 +#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1 +#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable" +typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 colorWriteEnable; +} VkPhysicalDeviceColorWriteEnableFeaturesEXT; + +typedef struct VkPipelineColorWriteCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t attachmentCount; + const VkBool32* pColorWriteEnables; +} VkPipelineColorWriteCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWriteEnableEXT( + VkCommandBuffer commandBuffer, + uint32_t attachmentCount, + const VkBool32* pColorWriteEnables); +#endif + + +#define VK_EXT_primitives_generated_query 1 +#define VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION 1 +#define VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME "VK_EXT_primitives_generated_query" +typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 primitivesGeneratedQuery; + VkBool32 primitivesGeneratedQueryWithRasterizerDiscard; + VkBool32 primitivesGeneratedQueryWithNonZeroStreams; +} VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; + + + +#define VK_EXT_global_priority_query 1 +#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1 +#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query" +#define VK_MAX_GLOBAL_PRIORITY_SIZE_EXT VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +typedef VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT; + +typedef VkQueueFamilyGlobalPriorityPropertiesKHR VkQueueFamilyGlobalPriorityPropertiesEXT; + + + +#define VK_EXT_image_view_min_lod 1 +#define VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION 1 +#define VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME "VK_EXT_image_view_min_lod" +typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 minLod; +} VkPhysicalDeviceImageViewMinLodFeaturesEXT; + +typedef struct VkImageViewMinLodCreateInfoEXT { + VkStructureType sType; + const void* pNext; + float minLod; +} VkImageViewMinLodCreateInfoEXT; + + + +#define VK_EXT_multi_draw 1 +#define VK_EXT_MULTI_DRAW_SPEC_VERSION 1 +#define VK_EXT_MULTI_DRAW_EXTENSION_NAME "VK_EXT_multi_draw" +typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 multiDraw; +} VkPhysicalDeviceMultiDrawFeaturesEXT; + +typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxMultiDrawCount; +} VkPhysicalDeviceMultiDrawPropertiesEXT; + +typedef struct VkMultiDrawInfoEXT { + uint32_t firstVertex; + uint32_t vertexCount; +} VkMultiDrawInfoEXT; + +typedef struct VkMultiDrawIndexedInfoEXT { + uint32_t firstIndex; + uint32_t indexCount; + int32_t vertexOffset; +} VkMultiDrawIndexedInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiIndexedEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiEXT( + VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawInfoEXT* pVertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiIndexedEXT( + VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawIndexedInfoEXT* pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + const int32_t* pVertexOffset); +#endif + + +#define VK_EXT_image_2d_view_of_3d 1 +#define VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION 1 +#define VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_2d_view_of_3d" +typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 image2DViewOf3D; + VkBool32 sampler2DViewOf3D; +} VkPhysicalDeviceImage2DViewOf3DFeaturesEXT; + + + +#define VK_EXT_load_store_op_none 1 +#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1 +#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_EXT_load_store_op_none" + + +#define VK_EXT_border_color_swizzle 1 +#define VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION 1 +#define VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME "VK_EXT_border_color_swizzle" +typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 borderColorSwizzle; + VkBool32 borderColorSwizzleFromImage; +} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT; + +typedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkComponentMapping components; + VkBool32 srgb; +} VkSamplerBorderColorComponentMappingCreateInfoEXT; + + + +#define VK_EXT_pageable_device_local_memory 1 +#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION 1 +#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME "VK_EXT_pageable_device_local_memory" +typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pageableDeviceLocalMemory; +} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkSetDeviceMemoryPriorityEXT)(VkDevice device, VkDeviceMemory memory, float priority); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT( + VkDevice device, + VkDeviceMemory memory, + float priority); +#endif + + +#define VK_VALVE_descriptor_set_host_mapping 1 +#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION 1 +#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME "VK_VALVE_descriptor_set_host_mapping" +typedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE { + VkStructureType sType; + void* pNext; + VkBool32 descriptorSetHostMapping; +} VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; + +typedef struct VkDescriptorSetBindingReferenceVALVE { + VkStructureType sType; + const void* pNext; + VkDescriptorSetLayout descriptorSetLayout; + uint32_t binding; +} VkDescriptorSetBindingReferenceVALVE; + +typedef struct VkDescriptorSetLayoutHostMappingInfoVALVE { + VkStructureType sType; + void* pNext; + size_t descriptorOffset; + uint32_t descriptorSize; +} VkDescriptorSetLayoutHostMappingInfoVALVE; + +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)(VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetHostMappingVALVE)(VkDevice device, VkDescriptorSet descriptorSet, void** ppData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutHostMappingInfoVALVE( + VkDevice device, + const VkDescriptorSetBindingReferenceVALVE* pBindingReference, + VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping); + +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetHostMappingVALVE( + VkDevice device, + VkDescriptorSet descriptorSet, + void** ppData); +#endif + + +#define VK_QCOM_fragment_density_map_offset 1 +#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1 +#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_QCOM_fragment_density_map_offset" +typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMapOffset; +} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; + +typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM { + VkStructureType sType; + void* pNext; + VkExtent2D fragmentDensityOffsetGranularity; +} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; + +typedef struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM { + VkStructureType sType; + const void* pNext; + uint32_t fragmentDensityOffsetCount; + const VkOffset2D* pFragmentDensityOffsets; +} VkSubpassFragmentDensityMapOffsetEndInfoQCOM; + + + +#define VK_NV_linear_color_attachment 1 +#define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1 +#define VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME "VK_NV_linear_color_attachment" +typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 linearColorAttachment; +} VkPhysicalDeviceLinearColorAttachmentFeaturesNV; + + + +#define VK_GOOGLE_surfaceless_query 1 +#define VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION 1 +#define VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME "VK_GOOGLE_surfaceless_query" + + +#define VK_EXT_image_compression_control_swapchain 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME "VK_EXT_image_compression_control_swapchain" +typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 imageCompressionControlSwapchain; +} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; + + + +#define VK_EXT_subpass_merge_feedback 1 +#define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 2 +#define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME "VK_EXT_subpass_merge_feedback" + +typedef enum VkSubpassMergeStatusEXT { + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0, + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13, + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkSubpassMergeStatusEXT; +typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 subpassMergeFeedback; +} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + +typedef struct VkRenderPassCreationControlEXT { + VkStructureType sType; + const void* pNext; + VkBool32 disallowMerging; +} VkRenderPassCreationControlEXT; + +typedef struct VkRenderPassCreationFeedbackInfoEXT { + uint32_t postMergeSubpassCount; +} VkRenderPassCreationFeedbackInfoEXT; + +typedef struct VkRenderPassCreationFeedbackCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkRenderPassCreationFeedbackInfoEXT* pRenderPassFeedback; +} VkRenderPassCreationFeedbackCreateInfoEXT; + +typedef struct VkRenderPassSubpassFeedbackInfoEXT { + VkSubpassMergeStatusEXT subpassMergeStatus; + char description[VK_MAX_DESCRIPTION_SIZE]; + uint32_t postMergeIndex; +} VkRenderPassSubpassFeedbackInfoEXT; + +typedef struct VkRenderPassSubpassFeedbackCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkRenderPassSubpassFeedbackInfoEXT* pSubpassFeedback; +} VkRenderPassSubpassFeedbackCreateInfoEXT; + + + +#define VK_KHR_acceleration_structure 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR) +#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 +#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure" + +typedef enum VkBuildAccelerationStructureModeKHR { + VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0, + VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1, + VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkBuildAccelerationStructureModeKHR; + +typedef enum VkAccelerationStructureBuildTypeKHR { + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0, + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1, + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2, + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureBuildTypeKHR; + +typedef enum VkAccelerationStructureCompatibilityKHR { + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0, + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1, + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureCompatibilityKHR; + +typedef enum VkAccelerationStructureCreateFlagBitsKHR { + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001, + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0x00000004, + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureCreateFlagBitsKHR; +typedef VkFlags VkAccelerationStructureCreateFlagsKHR; +typedef union VkDeviceOrHostAddressKHR { + VkDeviceAddress deviceAddress; + void* hostAddress; +} VkDeviceOrHostAddressKHR; + +typedef struct VkAccelerationStructureBuildRangeInfoKHR { + uint32_t primitiveCount; + uint32_t primitiveOffset; + uint32_t firstVertex; + uint32_t transformOffset; +} VkAccelerationStructureBuildRangeInfoKHR; + +typedef struct VkAccelerationStructureGeometryTrianglesDataKHR { + VkStructureType sType; + const void* pNext; + VkFormat vertexFormat; + VkDeviceOrHostAddressConstKHR vertexData; + VkDeviceSize vertexStride; + uint32_t maxVertex; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexData; + VkDeviceOrHostAddressConstKHR transformData; +} VkAccelerationStructureGeometryTrianglesDataKHR; + +typedef struct VkAccelerationStructureGeometryAabbsDataKHR { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR data; + VkDeviceSize stride; +} VkAccelerationStructureGeometryAabbsDataKHR; + +typedef struct VkAccelerationStructureGeometryInstancesDataKHR { + VkStructureType sType; + const void* pNext; + VkBool32 arrayOfPointers; + VkDeviceOrHostAddressConstKHR data; +} VkAccelerationStructureGeometryInstancesDataKHR; + +typedef union VkAccelerationStructureGeometryDataKHR { + VkAccelerationStructureGeometryTrianglesDataKHR triangles; + VkAccelerationStructureGeometryAabbsDataKHR aabbs; + VkAccelerationStructureGeometryInstancesDataKHR instances; +} VkAccelerationStructureGeometryDataKHR; + +typedef struct VkAccelerationStructureGeometryKHR { + VkStructureType sType; + const void* pNext; + VkGeometryTypeKHR geometryType; + VkAccelerationStructureGeometryDataKHR geometry; + VkGeometryFlagsKHR flags; +} VkAccelerationStructureGeometryKHR; + +typedef struct VkAccelerationStructureBuildGeometryInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureTypeKHR type; + VkBuildAccelerationStructureFlagsKHR flags; + VkBuildAccelerationStructureModeKHR mode; + VkAccelerationStructureKHR srcAccelerationStructure; + VkAccelerationStructureKHR dstAccelerationStructure; + uint32_t geometryCount; + const VkAccelerationStructureGeometryKHR* pGeometries; + const VkAccelerationStructureGeometryKHR* const* ppGeometries; + VkDeviceOrHostAddressKHR scratchData; +} VkAccelerationStructureBuildGeometryInfoKHR; + +typedef struct VkAccelerationStructureCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureCreateFlagsKHR createFlags; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; + VkAccelerationStructureTypeKHR type; + VkDeviceAddress deviceAddress; +} VkAccelerationStructureCreateInfoKHR; + +typedef struct VkWriteDescriptorSetAccelerationStructureKHR { + VkStructureType sType; + const void* pNext; + uint32_t accelerationStructureCount; + const VkAccelerationStructureKHR* pAccelerationStructures; +} VkWriteDescriptorSetAccelerationStructureKHR; + +typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 accelerationStructure; + VkBool32 accelerationStructureCaptureReplay; + VkBool32 accelerationStructureIndirectBuild; + VkBool32 accelerationStructureHostCommands; + VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind; +} VkPhysicalDeviceAccelerationStructureFeaturesKHR; + +typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR { + VkStructureType sType; + void* pNext; + uint64_t maxGeometryCount; + uint64_t maxInstanceCount; + uint64_t maxPrimitiveCount; + uint32_t maxPerStageDescriptorAccelerationStructures; + uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures; + uint32_t maxDescriptorSetAccelerationStructures; + uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures; + uint32_t minAccelerationStructureScratchOffsetAlignment; +} VkPhysicalDeviceAccelerationStructurePropertiesKHR; + +typedef struct VkAccelerationStructureDeviceAddressInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR accelerationStructure; +} VkAccelerationStructureDeviceAddressInfoKHR; + +typedef struct VkAccelerationStructureVersionInfoKHR { + VkStructureType sType; + const void* pNext; + const uint8_t* pVersionData; +} VkAccelerationStructureVersionInfoKHR; + +typedef struct VkCopyAccelerationStructureToMemoryInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR src; + VkDeviceOrHostAddressKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyAccelerationStructureToMemoryInfoKHR; + +typedef struct VkCopyMemoryToAccelerationStructureInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR src; + VkAccelerationStructureKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyMemoryToAccelerationStructureInfoKHR; + +typedef struct VkCopyAccelerationStructureInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR src; + VkAccelerationStructureKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyAccelerationStructureInfoKHR; + +typedef struct VkAccelerationStructureBuildSizesInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceSize accelerationStructureSize; + VkDeviceSize updateScratchSize; + VkDeviceSize buildScratchSize; +} VkAccelerationStructureBuildSizesInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure); +typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const* ppMaxPrimitiveCounts); +typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef void (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility); +typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR( + VkDevice device, + const VkAccelerationStructureCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkAccelerationStructureKHR* pAccelerationStructure); + +VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR( + VkDevice device, + VkAccelerationStructureKHR accelerationStructure, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresKHR( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresIndirectKHR( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkDeviceAddress* pIndirectDeviceAddresses, + const uint32_t* pIndirectStrides, + const uint32_t* const* ppMaxPrimitiveCounts); + +VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR( + VkDevice device, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR* pAccelerationStructures, + VkQueryType queryType, + size_t dataSize, + void* pData, + size_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR( + VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR( + VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR( + VkDevice device, + const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR( + VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR* pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR( + VkDevice device, + const VkAccelerationStructureVersionInfoKHR* pVersionInfo, + VkAccelerationStructureCompatibilityKHR* pCompatibility); + +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR( + VkDevice device, + VkAccelerationStructureBuildTypeKHR buildType, + const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, + const uint32_t* pMaxPrimitiveCounts, + VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); +#endif + + +#define VK_KHR_ray_tracing_pipeline 1 +#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline" + +typedef enum VkShaderGroupShaderKHR { + VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0, + VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1, + VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2, + VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3, + VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 0x7FFFFFFF +} VkShaderGroupShaderKHR; +typedef struct VkRayTracingShaderGroupCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkRayTracingShaderGroupTypeKHR type; + uint32_t generalShader; + uint32_t closestHitShader; + uint32_t anyHitShader; + uint32_t intersectionShader; + const void* pShaderGroupCaptureReplayHandle; +} VkRayTracingShaderGroupCreateInfoKHR; + +typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxPipelineRayPayloadSize; + uint32_t maxPipelineRayHitAttributeSize; +} VkRayTracingPipelineInterfaceCreateInfoKHR; + +typedef struct VkRayTracingPipelineCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + uint32_t groupCount; + const VkRayTracingShaderGroupCreateInfoKHR* pGroups; + uint32_t maxPipelineRayRecursionDepth; + const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; + const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface; + const VkPipelineDynamicStateCreateInfo* pDynamicState; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkRayTracingPipelineCreateInfoKHR; + +typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingPipeline; + VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay; + VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed; + VkBool32 rayTracingPipelineTraceRaysIndirect; + VkBool32 rayTraversalPrimitiveCulling; +} VkPhysicalDeviceRayTracingPipelineFeaturesKHR; + +typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t shaderGroupHandleSize; + uint32_t maxRayRecursionDepth; + uint32_t maxShaderGroupStride; + uint32_t shaderGroupBaseAlignment; + uint32_t shaderGroupHandleCaptureReplaySize; + uint32_t maxRayDispatchInvocationCount; + uint32_t shaderGroupHandleAlignment; + uint32_t maxRayHitAttributeSize; +} VkPhysicalDeviceRayTracingPipelinePropertiesKHR; + +typedef struct VkStridedDeviceAddressRegionKHR { + VkDeviceAddress deviceAddress; + VkDeviceSize stride; + VkDeviceSize size; +} VkStridedDeviceAddressRegionKHR; + +typedef struct VkTraceRaysIndirectCommandKHR { + uint32_t width; + uint32_t height; + uint32_t depth; +} VkTraceRaysIndirectCommandKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress); +typedef VkDeviceSize (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupStackSizeKHR)(VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader); +typedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysKHR( + VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR( + VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, + VkDeviceAddress indirectDeviceAddress); + +VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetRayTracingShaderGroupStackSizeKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t group, + VkShaderGroupShaderKHR groupShader); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR( + VkCommandBuffer commandBuffer, + uint32_t pipelineStackSize); +#endif + + +#define VK_KHR_ray_query 1 +#define VK_KHR_RAY_QUERY_SPEC_VERSION 1 +#define VK_KHR_RAY_QUERY_EXTENSION_NAME "VK_KHR_ray_query" +typedef struct VkPhysicalDeviceRayQueryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayQuery; +} VkPhysicalDeviceRayQueryFeaturesKHR; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_directfb.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_directfb.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_directfb.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_directfb.h index 3d094f5..ab3504e 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_directfb.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_directfb.h @@ -1,54 +1,54 @@ -#ifndef VULKAN_DIRECTFB_H_ -#define VULKAN_DIRECTFB_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_EXT_directfb_surface 1 -#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1 -#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "VK_EXT_directfb_surface" -typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT; -typedef struct VkDirectFBSurfaceCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkDirectFBSurfaceCreateFlagsEXT flags; - IDirectFB* dfb; - IDirectFBSurface* surface; -} VkDirectFBSurfaceCreateInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); -typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT( - VkInstance instance, - const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - IDirectFB* dfb); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_DIRECTFB_H_ +#define VULKAN_DIRECTFB_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_EXT_directfb_surface 1 +#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1 +#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "VK_EXT_directfb_surface" +typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT; +typedef struct VkDirectFBSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDirectFBSurfaceCreateFlagsEXT flags; + IDirectFB* dfb; + IDirectFBSurface* surface; +} VkDirectFBSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT( + VkInstance instance, + const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + IDirectFB* dfb); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_fuchsia.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_fuchsia.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_fuchsia.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_fuchsia.h index 4f7f73b..61774ff 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_fuchsia.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_fuchsia.h @@ -1,258 +1,258 @@ -#ifndef VULKAN_FUCHSIA_H_ -#define VULKAN_FUCHSIA_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_FUCHSIA_imagepipe_surface 1 -#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1 -#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface" -typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA; -typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - VkImagePipeSurfaceCreateFlagsFUCHSIA flags; - zx_handle_t imagePipeHandle; -} VkImagePipeSurfaceCreateInfoFUCHSIA; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA( - VkInstance instance, - const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - - -#define VK_FUCHSIA_external_memory 1 -#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1 -#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory" -typedef struct VkImportMemoryZirconHandleInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagBits handleType; - zx_handle_t handle; -} VkImportMemoryZirconHandleInfoFUCHSIA; - -typedef struct VkMemoryZirconHandlePropertiesFUCHSIA { - VkStructureType sType; - void* pNext; - uint32_t memoryTypeBits; -} VkMemoryZirconHandlePropertiesFUCHSIA; - -typedef struct VkMemoryGetZirconHandleInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - VkDeviceMemory memory; - VkExternalMemoryHandleTypeFlagBits handleType; -} VkMemoryGetZirconHandleInfoFUCHSIA; - -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA( - VkDevice device, - const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, - zx_handle_t* pZirconHandle); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA( - VkDevice device, - VkExternalMemoryHandleTypeFlagBits handleType, - zx_handle_t zirconHandle, - VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); -#endif - - -#define VK_FUCHSIA_external_semaphore 1 -#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 -#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore" -typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - VkSemaphoreImportFlags flags; - VkExternalSemaphoreHandleTypeFlagBits handleType; - zx_handle_t zirconHandle; -} VkImportSemaphoreZirconHandleInfoFUCHSIA; - -typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - VkExternalSemaphoreHandleTypeFlagBits handleType; -} VkSemaphoreGetZirconHandleInfoFUCHSIA; - -typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA( - VkDevice device, - const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA( - VkDevice device, - const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, - zx_handle_t* pZirconHandle); -#endif - - -#define VK_FUCHSIA_buffer_collection 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA) -#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2 -#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection" -typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA; - -typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA { - VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001, - VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002, - VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004, - VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008, - VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010, - VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF -} VkImageConstraintsInfoFlagBitsFUCHSIA; -typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA; -typedef struct VkBufferCollectionCreateInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - zx_handle_t collectionToken; -} VkBufferCollectionCreateInfoFUCHSIA; - -typedef struct VkImportMemoryBufferCollectionFUCHSIA { - VkStructureType sType; - const void* pNext; - VkBufferCollectionFUCHSIA collection; - uint32_t index; -} VkImportMemoryBufferCollectionFUCHSIA; - -typedef struct VkBufferCollectionImageCreateInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - VkBufferCollectionFUCHSIA collection; - uint32_t index; -} VkBufferCollectionImageCreateInfoFUCHSIA; - -typedef struct VkBufferCollectionConstraintsInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - uint32_t minBufferCount; - uint32_t maxBufferCount; - uint32_t minBufferCountForCamping; - uint32_t minBufferCountForDedicatedSlack; - uint32_t minBufferCountForSharedSlack; -} VkBufferCollectionConstraintsInfoFUCHSIA; - -typedef struct VkBufferConstraintsInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - VkBufferCreateInfo createInfo; - VkFormatFeatureFlags requiredFormatFeatures; - VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; -} VkBufferConstraintsInfoFUCHSIA; - -typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - VkBufferCollectionFUCHSIA collection; - uint32_t index; -} VkBufferCollectionBufferCreateInfoFUCHSIA; - -typedef struct VkSysmemColorSpaceFUCHSIA { - VkStructureType sType; - const void* pNext; - uint32_t colorSpace; -} VkSysmemColorSpaceFUCHSIA; - -typedef struct VkBufferCollectionPropertiesFUCHSIA { - VkStructureType sType; - void* pNext; - uint32_t memoryTypeBits; - uint32_t bufferCount; - uint32_t createInfoIndex; - uint64_t sysmemPixelFormat; - VkFormatFeatureFlags formatFeatures; - VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex; - VkComponentMapping samplerYcbcrConversionComponents; - VkSamplerYcbcrModelConversion suggestedYcbcrModel; - VkSamplerYcbcrRange suggestedYcbcrRange; - VkChromaLocation suggestedXChromaOffset; - VkChromaLocation suggestedYChromaOffset; -} VkBufferCollectionPropertiesFUCHSIA; - -typedef struct VkImageFormatConstraintsInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - VkImageCreateInfo imageCreateInfo; - VkFormatFeatureFlags requiredFormatFeatures; - VkImageFormatConstraintsFlagsFUCHSIA flags; - uint64_t sysmemPixelFormat; - uint32_t colorSpaceCount; - const VkSysmemColorSpaceFUCHSIA* pColorSpaces; -} VkImageFormatConstraintsInfoFUCHSIA; - -typedef struct VkImageConstraintsInfoFUCHSIA { - VkStructureType sType; - const void* pNext; - uint32_t formatConstraintsCount; - const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints; - VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; - VkImageConstraintsInfoFlagsFUCHSIA flags; -} VkImageConstraintsInfoFUCHSIA; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection); -typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); -typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); -typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA( - VkDevice device, - const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkBufferCollectionFUCHSIA* pCollection); - -VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA( - VkDevice device, - VkBufferCollectionFUCHSIA collection, - const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA( - VkDevice device, - VkBufferCollectionFUCHSIA collection, - const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); - -VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA( - VkDevice device, - VkBufferCollectionFUCHSIA collection, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA( - VkDevice device, - VkBufferCollectionFUCHSIA collection, - VkBufferCollectionPropertiesFUCHSIA* pProperties); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_FUCHSIA_H_ +#define VULKAN_FUCHSIA_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_FUCHSIA_imagepipe_surface 1 +#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1 +#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface" +typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA; +typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkImagePipeSurfaceCreateFlagsFUCHSIA flags; + zx_handle_t imagePipeHandle; +} VkImagePipeSurfaceCreateInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA( + VkInstance instance, + const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + + +#define VK_FUCHSIA_external_memory 1 +#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory" +typedef struct VkImportMemoryZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + zx_handle_t handle; +} VkImportMemoryZirconHandleInfoFUCHSIA; + +typedef struct VkMemoryZirconHandlePropertiesFUCHSIA { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryZirconHandlePropertiesFUCHSIA; + +typedef struct VkMemoryGetZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetZirconHandleInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA( + VkDevice device, + const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, + zx_handle_t* pZirconHandle); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); +#endif + + +#define VK_FUCHSIA_external_semaphore 1 +#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 +#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore" +typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkSemaphoreImportFlags flags; + VkExternalSemaphoreHandleTypeFlagBits handleType; + zx_handle_t zirconHandle; +} VkImportSemaphoreZirconHandleInfoFUCHSIA; + +typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkSemaphoreGetZirconHandleInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA( + VkDevice device, + const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA( + VkDevice device, + const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, + zx_handle_t* pZirconHandle); +#endif + + +#define VK_FUCHSIA_buffer_collection 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA) +#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2 +#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection" +typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA; + +typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA { + VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001, + VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002, + VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004, + VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008, + VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010, + VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF +} VkImageConstraintsInfoFlagBitsFUCHSIA; +typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA; +typedef struct VkBufferCollectionCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + zx_handle_t collectionToken; +} VkBufferCollectionCreateInfoFUCHSIA; + +typedef struct VkImportMemoryBufferCollectionFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkImportMemoryBufferCollectionFUCHSIA; + +typedef struct VkBufferCollectionImageCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkBufferCollectionImageCreateInfoFUCHSIA; + +typedef struct VkBufferCollectionConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t minBufferCount; + uint32_t maxBufferCount; + uint32_t minBufferCountForCamping; + uint32_t minBufferCountForDedicatedSlack; + uint32_t minBufferCountForSharedSlack; +} VkBufferCollectionConstraintsInfoFUCHSIA; + +typedef struct VkBufferConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCreateInfo createInfo; + VkFormatFeatureFlags requiredFormatFeatures; + VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; +} VkBufferConstraintsInfoFUCHSIA; + +typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkBufferCollectionBufferCreateInfoFUCHSIA; + +typedef struct VkSysmemColorSpaceFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t colorSpace; +} VkSysmemColorSpaceFUCHSIA; + +typedef struct VkBufferCollectionPropertiesFUCHSIA { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; + uint32_t bufferCount; + uint32_t createInfoIndex; + uint64_t sysmemPixelFormat; + VkFormatFeatureFlags formatFeatures; + VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkBufferCollectionPropertiesFUCHSIA; + +typedef struct VkImageFormatConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkImageCreateInfo imageCreateInfo; + VkFormatFeatureFlags requiredFormatFeatures; + VkImageFormatConstraintsFlagsFUCHSIA flags; + uint64_t sysmemPixelFormat; + uint32_t colorSpaceCount; + const VkSysmemColorSpaceFUCHSIA* pColorSpaces; +} VkImageFormatConstraintsInfoFUCHSIA; + +typedef struct VkImageConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t formatConstraintsCount; + const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints; + VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; + VkImageConstraintsInfoFlagsFUCHSIA flags; +} VkImageConstraintsInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection); +typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); +typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); +typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA( + VkDevice device, + const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkBufferCollectionFUCHSIA* pCollection); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); + +VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + VkBufferCollectionPropertiesFUCHSIA* pProperties); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_ggp.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_ggp.h similarity index 96% rename from engine/vkImgui/cimgui/vulkan/vulkan_ggp.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_ggp.h index ddbf3ec..19dfd22 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_ggp.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_ggp.h @@ -1,58 +1,58 @@ -#ifndef VULKAN_GGP_H_ -#define VULKAN_GGP_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_GGP_stream_descriptor_surface 1 -#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1 -#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME "VK_GGP_stream_descriptor_surface" -typedef VkFlags VkStreamDescriptorSurfaceCreateFlagsGGP; -typedef struct VkStreamDescriptorSurfaceCreateInfoGGP { - VkStructureType sType; - const void* pNext; - VkStreamDescriptorSurfaceCreateFlagsGGP flags; - GgpStreamDescriptor streamDescriptor; -} VkStreamDescriptorSurfaceCreateInfoGGP; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateStreamDescriptorSurfaceGGP)(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateStreamDescriptorSurfaceGGP( - VkInstance instance, - const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - - -#define VK_GGP_frame_token 1 -#define VK_GGP_FRAME_TOKEN_SPEC_VERSION 1 -#define VK_GGP_FRAME_TOKEN_EXTENSION_NAME "VK_GGP_frame_token" -typedef struct VkPresentFrameTokenGGP { - VkStructureType sType; - const void* pNext; - GgpFrameToken frameToken; -} VkPresentFrameTokenGGP; - - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_GGP_H_ +#define VULKAN_GGP_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_GGP_stream_descriptor_surface 1 +#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1 +#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME "VK_GGP_stream_descriptor_surface" +typedef VkFlags VkStreamDescriptorSurfaceCreateFlagsGGP; +typedef struct VkStreamDescriptorSurfaceCreateInfoGGP { + VkStructureType sType; + const void* pNext; + VkStreamDescriptorSurfaceCreateFlagsGGP flags; + GgpStreamDescriptor streamDescriptor; +} VkStreamDescriptorSurfaceCreateInfoGGP; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateStreamDescriptorSurfaceGGP)(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateStreamDescriptorSurfaceGGP( + VkInstance instance, + const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + + +#define VK_GGP_frame_token 1 +#define VK_GGP_FRAME_TOKEN_SPEC_VERSION 1 +#define VK_GGP_FRAME_TOKEN_EXTENSION_NAME "VK_GGP_frame_token" +typedef struct VkPresentFrameTokenGGP { + VkStructureType sType; + const void* pNext; + GgpFrameToken frameToken; +} VkPresentFrameTokenGGP; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_ios.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_ios.h similarity index 96% rename from engine/vkImgui/cimgui/vulkan/vulkan_ios.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_ios.h index 3edc96e..5792205 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_ios.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_ios.h @@ -1,47 +1,47 @@ -#ifndef VULKAN_IOS_H_ -#define VULKAN_IOS_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_MVK_ios_surface 1 -#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3 -#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface" -typedef VkFlags VkIOSSurfaceCreateFlagsMVK; -typedef struct VkIOSSurfaceCreateInfoMVK { - VkStructureType sType; - const void* pNext; - VkIOSSurfaceCreateFlagsMVK flags; - const void* pView; -} VkIOSSurfaceCreateInfoMVK; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK( - VkInstance instance, - const VkIOSSurfaceCreateInfoMVK* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_IOS_H_ +#define VULKAN_IOS_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_MVK_ios_surface 1 +#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3 +#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface" +typedef VkFlags VkIOSSurfaceCreateFlagsMVK; +typedef struct VkIOSSurfaceCreateInfoMVK { + VkStructureType sType; + const void* pNext; + VkIOSSurfaceCreateFlagsMVK flags; + const void* pView; +} VkIOSSurfaceCreateInfoMVK; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK( + VkInstance instance, + const VkIOSSurfaceCreateInfoMVK* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_macos.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_macos.h similarity index 96% rename from engine/vkImgui/cimgui/vulkan/vulkan_macos.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_macos.h index a924080..8e197c7 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_macos.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_macos.h @@ -1,47 +1,47 @@ -#ifndef VULKAN_MACOS_H_ -#define VULKAN_MACOS_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_MVK_macos_surface 1 -#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3 -#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface" -typedef VkFlags VkMacOSSurfaceCreateFlagsMVK; -typedef struct VkMacOSSurfaceCreateInfoMVK { - VkStructureType sType; - const void* pNext; - VkMacOSSurfaceCreateFlagsMVK flags; - const void* pView; -} VkMacOSSurfaceCreateInfoMVK; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK( - VkInstance instance, - const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_MACOS_H_ +#define VULKAN_MACOS_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_MVK_macos_surface 1 +#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3 +#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface" +typedef VkFlags VkMacOSSurfaceCreateFlagsMVK; +typedef struct VkMacOSSurfaceCreateInfoMVK { + VkStructureType sType; + const void* pNext; + VkMacOSSurfaceCreateFlagsMVK flags; + const void* pView; +} VkMacOSSurfaceCreateInfoMVK; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK( + VkInstance instance, + const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_metal.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_metal.h similarity index 96% rename from engine/vkImgui/cimgui/vulkan/vulkan_metal.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_metal.h index c35c625..3631f12 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_metal.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_metal.h @@ -1,54 +1,54 @@ -#ifndef VULKAN_METAL_H_ -#define VULKAN_METAL_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_EXT_metal_surface 1 - -#ifdef __OBJC__ -@class CAMetalLayer; -#else -typedef void CAMetalLayer; -#endif - -#define VK_EXT_METAL_SURFACE_SPEC_VERSION 1 -#define VK_EXT_METAL_SURFACE_EXTENSION_NAME "VK_EXT_metal_surface" -typedef VkFlags VkMetalSurfaceCreateFlagsEXT; -typedef struct VkMetalSurfaceCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkMetalSurfaceCreateFlagsEXT flags; - const CAMetalLayer* pLayer; -} VkMetalSurfaceCreateInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT( - VkInstance instance, - const VkMetalSurfaceCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_METAL_H_ +#define VULKAN_METAL_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_EXT_metal_surface 1 + +#ifdef __OBJC__ +@class CAMetalLayer; +#else +typedef void CAMetalLayer; +#endif + +#define VK_EXT_METAL_SURFACE_SPEC_VERSION 1 +#define VK_EXT_METAL_SURFACE_EXTENSION_NAME "VK_EXT_metal_surface" +typedef VkFlags VkMetalSurfaceCreateFlagsEXT; +typedef struct VkMetalSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkMetalSurfaceCreateFlagsEXT flags; + const CAMetalLayer* pLayer; +} VkMetalSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT( + VkInstance instance, + const VkMetalSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_profiles.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_profiles.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_profiles.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_profiles.h index fd48f5a..a7159e6 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_profiles.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_profiles.h @@ -1,255 +1,255 @@ -/** - * Copyright (c) 2021-2022 LunarG, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * DO NOT EDIT: This file is generated. - */ - -#ifndef VULKAN_PROFILES_H_ -#define VULKAN_PROFILES_H_ 1 - -#define VPAPI_ATTR - -#ifdef __cplusplus - extern "C" { -#endif - -#include - -#if defined(VK_VERSION_1_0) && \ - defined(VK_EXT_swapchain_colorspace) && \ - defined(VK_GOOGLE_display_timing) && \ - defined(VK_KHR_android_surface) && \ - defined(VK_KHR_dedicated_allocation) && \ - defined(VK_KHR_descriptor_update_template) && \ - defined(VK_KHR_external_fence) && \ - defined(VK_KHR_external_fence_capabilities) && \ - defined(VK_KHR_external_fence_fd) && \ - defined(VK_KHR_external_memory) && \ - defined(VK_KHR_external_memory_capabilities) && \ - defined(VK_KHR_external_semaphore) && \ - defined(VK_KHR_external_semaphore_capabilities) && \ - defined(VK_KHR_external_semaphore_fd) && \ - defined(VK_KHR_get_memory_requirements2) && \ - defined(VK_KHR_get_physical_device_properties2) && \ - defined(VK_KHR_get_surface_capabilities2) && \ - defined(VK_KHR_incremental_present) && \ - defined(VK_KHR_maintenance1) && \ - defined(VK_KHR_storage_buffer_storage_class) && \ - defined(VK_KHR_surface) && \ - defined(VK_KHR_swapchain) && \ - defined(VK_KHR_variable_pointers) -#define VP_ANDROID_baseline_2021 1 -#define VP_ANDROID_BASELINE_2021_NAME "VP_ANDROID_baseline_2021" -#define VP_ANDROID_BASELINE_2021_SPEC_VERSION 1 -#define VP_ANDROID_BASELINE_2021_MIN_API_VERSION VK_MAKE_VERSION(1, 0, 68) -#endif - -#if defined(VK_VERSION_1_3) && \ - defined(VK_KHR_global_priority) -#define VP_KHR_roadmap_2022 1 -#define VP_KHR_ROADMAP_2022_NAME "VP_KHR_roadmap_2022" -#define VP_KHR_ROADMAP_2022_SPEC_VERSION 1 -#define VP_KHR_ROADMAP_2022_MIN_API_VERSION VK_MAKE_VERSION(1, 3, 204) -#endif - -#if defined(VK_VERSION_1_1) && \ - defined(VK_EXT_descriptor_indexing) && \ - defined(VK_EXT_host_query_reset) && \ - defined(VK_EXT_robustness2) && \ - defined(VK_EXT_scalar_block_layout) && \ - defined(VK_EXT_subgroup_size_control) && \ - defined(VK_EXT_texel_buffer_alignment) && \ - defined(VK_EXT_vertex_attribute_divisor) && \ - defined(VK_KHR_8bit_storage) && \ - defined(VK_KHR_create_renderpass2) && \ - defined(VK_KHR_depth_stencil_resolve) && \ - defined(VK_KHR_driver_properties) && \ - defined(VK_KHR_image_format_list) && \ - defined(VK_KHR_imageless_framebuffer) && \ - defined(VK_KHR_sampler_mirror_clamp_to_edge) && \ - defined(VK_KHR_shader_float16_int8) && \ - defined(VK_KHR_swapchain) && \ - defined(VK_KHR_swapchain_mutable_format) && \ - defined(VK_KHR_timeline_semaphore) && \ - defined(VK_KHR_uniform_buffer_standard_layout) -#define VP_LUNARG_desktop_portability_2021 1 -#define VP_LUNARG_DESKTOP_PORTABILITY_2021_NAME "VP_LUNARG_desktop_portability_2021" -#define VP_LUNARG_DESKTOP_PORTABILITY_2021_SPEC_VERSION 1 -#define VP_LUNARG_DESKTOP_PORTABILITY_2021_MIN_API_VERSION VK_MAKE_VERSION(1, 1, 142) -#endif - -#if defined(VK_VERSION_1_1) && \ - defined(VK_EXT_descriptor_indexing) && \ - defined(VK_EXT_host_query_reset) && \ - defined(VK_EXT_robustness2) && \ - defined(VK_EXT_scalar_block_layout) && \ - defined(VK_EXT_subgroup_size_control) && \ - defined(VK_EXT_texel_buffer_alignment) && \ - defined(VK_EXT_vertex_attribute_divisor) && \ - defined(VK_KHR_8bit_storage) && \ - defined(VK_KHR_create_renderpass2) && \ - defined(VK_KHR_depth_stencil_resolve) && \ - defined(VK_KHR_driver_properties) && \ - defined(VK_KHR_image_format_list) && \ - defined(VK_KHR_imageless_framebuffer) && \ - defined(VK_KHR_portability_subset) && \ - defined(VK_KHR_sampler_mirror_clamp_to_edge) && \ - defined(VK_KHR_shader_float16_int8) && \ - defined(VK_KHR_swapchain) && \ - defined(VK_KHR_swapchain_mutable_format) && \ - defined(VK_KHR_timeline_semaphore) && \ - defined(VK_KHR_uniform_buffer_standard_layout) -#define VP_LUNARG_desktop_portability_2021_subset 1 -#define VP_LUNARG_DESKTOP_PORTABILITY_2021_SUBSET_NAME "VP_LUNARG_desktop_portability_2021_subset" -#define VP_LUNARG_DESKTOP_PORTABILITY_2021_SUBSET_SPEC_VERSION 1 -#define VP_LUNARG_DESKTOP_PORTABILITY_2021_SUBSET_MIN_API_VERSION VK_MAKE_VERSION(1, 1, 154) -#endif - -#define VP_MAX_PROFILE_NAME_SIZE 256U - -typedef struct VpProfileProperties { - char profileName[VP_MAX_PROFILE_NAME_SIZE]; - uint32_t specVersion; -} VpProfileProperties; - -typedef enum VpInstanceCreateFlagBits { - // Default behavior: - // - profile extensions are used (application must not specify extensions) - - // Merge application provided extension list and profile extension list - VP_INSTANCE_CREATE_MERGE_EXTENSIONS_BIT = 0x00000001, - - // Use application provided extension list - VP_INSTANCE_CREATE_OVERRIDE_EXTENSIONS_BIT = 0x00000002, - - VP_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VpInstanceCreateFlagBits; -typedef VkFlags VpInstanceCreateFlags; - -typedef struct VpInstanceCreateInfo { - const VkInstanceCreateInfo* pCreateInfo; - const VpProfileProperties* pProfile; - VpInstanceCreateFlags flags; -} VpInstanceCreateInfo; - -typedef enum VpDeviceCreateFlagBits { - // Default behavior: - // - profile extensions are used (application must not specify extensions) - // - profile feature structures are used (application must not specify any of them) extended - // with any other application provided struct that isn't defined by the profile - - // Merge application provided extension list and profile extension list - VP_DEVICE_CREATE_MERGE_EXTENSIONS_BIT = 0x00000001, - - // Use application provided extension list - VP_DEVICE_CREATE_OVERRIDE_EXTENSIONS_BIT = 0x00000002, - - // Merge application provided versions of feature structures with the profile features - // Currently unsupported, but is considered for future inclusion in which case the - // default behavior could potentially be changed to merging as the currently defined - // default behavior is forward-compatible with that - // VP_DEVICE_CREATE_MERGE_FEATURES_BIT = 0x00000004, - - // Use application provided versions of feature structures but use the profile feature - // structures when the application doesn't provide one (robust access disable flags are - // ignored if the application overrides the corresponding feature structures) - VP_DEVICE_CREATE_OVERRIDE_FEATURES_BIT = 0x00000008, - - // Only use application provided feature structures, don't add any profile specific - // feature structures (robust access disable flags are ignored in this case and only the - // application provided structures are used) - VP_DEVICE_CREATE_OVERRIDE_ALL_FEATURES_BIT = 0x00000010, - - VP_DEVICE_CREATE_DISABLE_ROBUST_BUFFER_ACCESS_BIT = 0x00000020, - VP_DEVICE_CREATE_DISABLE_ROBUST_IMAGE_ACCESS_BIT = 0x00000040, - VP_DEVICE_CREATE_DISABLE_ROBUST_ACCESS = - VP_DEVICE_CREATE_DISABLE_ROBUST_BUFFER_ACCESS_BIT | VP_DEVICE_CREATE_DISABLE_ROBUST_IMAGE_ACCESS_BIT, - - VP_DEVICE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VpDeviceCreateFlagBits; -typedef VkFlags VpDeviceCreateFlags; - -typedef struct VpDeviceCreateInfo { - const VkDeviceCreateInfo* pCreateInfo; - const VpProfileProperties* pProfile; - VpDeviceCreateFlags flags; -} VpDeviceCreateInfo; - -// Query the list of available profiles in the library -VPAPI_ATTR VkResult vpGetProfiles(uint32_t *pPropertyCount, VpProfileProperties *pProperties); - -// List the recommended fallback profiles of a profile -VPAPI_ATTR VkResult vpGetProfileFallbacks(const VpProfileProperties *pProfile, uint32_t *pPropertyCount, VpProfileProperties *pProperties); - -// Check whether a profile is supported at the instance level -VPAPI_ATTR VkResult vpGetInstanceProfileSupport(const char *pLayerName, const VpProfileProperties *pProfile, VkBool32 *pSupported); - -// Create a VkInstance with the profile instance extensions enabled -VPAPI_ATTR VkResult vpCreateInstance(const VpInstanceCreateInfo *pCreateInfo, - const VkAllocationCallbacks *pAllocator, VkInstance *pInstance); - -// Check whether a profile is supported by the physical device -VPAPI_ATTR VkResult vpGetPhysicalDeviceProfileSupport(VkInstance instance, VkPhysicalDevice physicalDevice, - const VpProfileProperties *pProfile, VkBool32 *pSupported); - -// Create a VkDevice with the profile features and device extensions enabled -VPAPI_ATTR VkResult vpCreateDevice(VkPhysicalDevice physicalDevice, const VpDeviceCreateInfo *pCreateInfo, - const VkAllocationCallbacks *pAllocator, VkDevice *pDevice); - -// Query the list of instance extensions of a profile -VPAPI_ATTR VkResult vpGetProfileInstanceExtensionProperties(const VpProfileProperties *pProfile, uint32_t *pPropertyCount, - VkExtensionProperties *pProperties); - -// Query the list of device extensions of a profile -VPAPI_ATTR VkResult vpGetProfileDeviceExtensionProperties(const VpProfileProperties *pProfile, uint32_t *pPropertyCount, - VkExtensionProperties *pProperties); - -// Fill the feature structures with the requirements of a profile -VPAPI_ATTR void vpGetProfileFeatures(const VpProfileProperties *pProfile, void *pNext); - -// Query the list of feature structure types specified by the profile -VPAPI_ATTR VkResult vpGetProfileFeatureStructureTypes(const VpProfileProperties *pProfile, uint32_t *pStructureTypeCount, - VkStructureType *pStructureTypes); - -// Fill the property structures with the requirements of a profile -VPAPI_ATTR void vpGetProfileProperties(const VpProfileProperties *pProfile, void *pNext); - -// Query the list of property structure types specified by the profile -VPAPI_ATTR VkResult vpGetProfilePropertyStructureTypes(const VpProfileProperties *pProfile, uint32_t *pStructureTypeCount, - VkStructureType *pStructureTypes); - -// Query the requirements of queue families by a profile -VPAPI_ATTR VkResult vpGetProfileQueueFamilyProperties(const VpProfileProperties *pProfile, uint32_t *pPropertyCount, - VkQueueFamilyProperties2KHR *pProperties); - -// Query the list of query family structure types specified by the profile -VPAPI_ATTR VkResult vpGetProfileQueueFamilyStructureTypes(const VpProfileProperties *pProfile, uint32_t *pStructureTypeCount, - VkStructureType *pStructureTypes); - -// Query the list of formats with specified requirements by a profile -VPAPI_ATTR VkResult vpGetProfileFormats(const VpProfileProperties *pProfile, uint32_t *pFormatCount, VkFormat *pFormats); - -// Query the requirements of a format for a profile -VPAPI_ATTR void vpGetProfileFormatProperties(const VpProfileProperties *pProfile, VkFormat format, void *pNext); - -// Query the list of format structure types specified by the profile -VPAPI_ATTR VkResult vpGetProfileFormatStructureTypes(const VpProfileProperties *pProfile, uint32_t *pStructureTypeCount, - VkStructureType *pStructureTypes); - -#ifdef __cplusplus -} -#endif - -#endif // VULKAN_PROFILES_H_ +/** + * Copyright (c) 2021-2022 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * DO NOT EDIT: This file is generated. + */ + +#ifndef VULKAN_PROFILES_H_ +#define VULKAN_PROFILES_H_ 1 + +#define VPAPI_ATTR + +#ifdef __cplusplus + extern "C" { +#endif + +#include + +#if defined(VK_VERSION_1_0) && \ + defined(VK_EXT_swapchain_colorspace) && \ + defined(VK_GOOGLE_display_timing) && \ + defined(VK_KHR_android_surface) && \ + defined(VK_KHR_dedicated_allocation) && \ + defined(VK_KHR_descriptor_update_template) && \ + defined(VK_KHR_external_fence) && \ + defined(VK_KHR_external_fence_capabilities) && \ + defined(VK_KHR_external_fence_fd) && \ + defined(VK_KHR_external_memory) && \ + defined(VK_KHR_external_memory_capabilities) && \ + defined(VK_KHR_external_semaphore) && \ + defined(VK_KHR_external_semaphore_capabilities) && \ + defined(VK_KHR_external_semaphore_fd) && \ + defined(VK_KHR_get_memory_requirements2) && \ + defined(VK_KHR_get_physical_device_properties2) && \ + defined(VK_KHR_get_surface_capabilities2) && \ + defined(VK_KHR_incremental_present) && \ + defined(VK_KHR_maintenance1) && \ + defined(VK_KHR_storage_buffer_storage_class) && \ + defined(VK_KHR_surface) && \ + defined(VK_KHR_swapchain) && \ + defined(VK_KHR_variable_pointers) +#define VP_ANDROID_baseline_2021 1 +#define VP_ANDROID_BASELINE_2021_NAME "VP_ANDROID_baseline_2021" +#define VP_ANDROID_BASELINE_2021_SPEC_VERSION 1 +#define VP_ANDROID_BASELINE_2021_MIN_API_VERSION VK_MAKE_VERSION(1, 0, 68) +#endif + +#if defined(VK_VERSION_1_3) && \ + defined(VK_KHR_global_priority) +#define VP_KHR_roadmap_2022 1 +#define VP_KHR_ROADMAP_2022_NAME "VP_KHR_roadmap_2022" +#define VP_KHR_ROADMAP_2022_SPEC_VERSION 1 +#define VP_KHR_ROADMAP_2022_MIN_API_VERSION VK_MAKE_VERSION(1, 3, 204) +#endif + +#if defined(VK_VERSION_1_1) && \ + defined(VK_EXT_descriptor_indexing) && \ + defined(VK_EXT_host_query_reset) && \ + defined(VK_EXT_robustness2) && \ + defined(VK_EXT_scalar_block_layout) && \ + defined(VK_EXT_subgroup_size_control) && \ + defined(VK_EXT_texel_buffer_alignment) && \ + defined(VK_EXT_vertex_attribute_divisor) && \ + defined(VK_KHR_8bit_storage) && \ + defined(VK_KHR_create_renderpass2) && \ + defined(VK_KHR_depth_stencil_resolve) && \ + defined(VK_KHR_driver_properties) && \ + defined(VK_KHR_image_format_list) && \ + defined(VK_KHR_imageless_framebuffer) && \ + defined(VK_KHR_sampler_mirror_clamp_to_edge) && \ + defined(VK_KHR_shader_float16_int8) && \ + defined(VK_KHR_swapchain) && \ + defined(VK_KHR_swapchain_mutable_format) && \ + defined(VK_KHR_timeline_semaphore) && \ + defined(VK_KHR_uniform_buffer_standard_layout) +#define VP_LUNARG_desktop_portability_2021 1 +#define VP_LUNARG_DESKTOP_PORTABILITY_2021_NAME "VP_LUNARG_desktop_portability_2021" +#define VP_LUNARG_DESKTOP_PORTABILITY_2021_SPEC_VERSION 1 +#define VP_LUNARG_DESKTOP_PORTABILITY_2021_MIN_API_VERSION VK_MAKE_VERSION(1, 1, 142) +#endif + +#if defined(VK_VERSION_1_1) && \ + defined(VK_EXT_descriptor_indexing) && \ + defined(VK_EXT_host_query_reset) && \ + defined(VK_EXT_robustness2) && \ + defined(VK_EXT_scalar_block_layout) && \ + defined(VK_EXT_subgroup_size_control) && \ + defined(VK_EXT_texel_buffer_alignment) && \ + defined(VK_EXT_vertex_attribute_divisor) && \ + defined(VK_KHR_8bit_storage) && \ + defined(VK_KHR_create_renderpass2) && \ + defined(VK_KHR_depth_stencil_resolve) && \ + defined(VK_KHR_driver_properties) && \ + defined(VK_KHR_image_format_list) && \ + defined(VK_KHR_imageless_framebuffer) && \ + defined(VK_KHR_portability_subset) && \ + defined(VK_KHR_sampler_mirror_clamp_to_edge) && \ + defined(VK_KHR_shader_float16_int8) && \ + defined(VK_KHR_swapchain) && \ + defined(VK_KHR_swapchain_mutable_format) && \ + defined(VK_KHR_timeline_semaphore) && \ + defined(VK_KHR_uniform_buffer_standard_layout) +#define VP_LUNARG_desktop_portability_2021_subset 1 +#define VP_LUNARG_DESKTOP_PORTABILITY_2021_SUBSET_NAME "VP_LUNARG_desktop_portability_2021_subset" +#define VP_LUNARG_DESKTOP_PORTABILITY_2021_SUBSET_SPEC_VERSION 1 +#define VP_LUNARG_DESKTOP_PORTABILITY_2021_SUBSET_MIN_API_VERSION VK_MAKE_VERSION(1, 1, 154) +#endif + +#define VP_MAX_PROFILE_NAME_SIZE 256U + +typedef struct VpProfileProperties { + char profileName[VP_MAX_PROFILE_NAME_SIZE]; + uint32_t specVersion; +} VpProfileProperties; + +typedef enum VpInstanceCreateFlagBits { + // Default behavior: + // - profile extensions are used (application must not specify extensions) + + // Merge application provided extension list and profile extension list + VP_INSTANCE_CREATE_MERGE_EXTENSIONS_BIT = 0x00000001, + + // Use application provided extension list + VP_INSTANCE_CREATE_OVERRIDE_EXTENSIONS_BIT = 0x00000002, + + VP_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VpInstanceCreateFlagBits; +typedef VkFlags VpInstanceCreateFlags; + +typedef struct VpInstanceCreateInfo { + const VkInstanceCreateInfo* pCreateInfo; + const VpProfileProperties* pProfile; + VpInstanceCreateFlags flags; +} VpInstanceCreateInfo; + +typedef enum VpDeviceCreateFlagBits { + // Default behavior: + // - profile extensions are used (application must not specify extensions) + // - profile feature structures are used (application must not specify any of them) extended + // with any other application provided struct that isn't defined by the profile + + // Merge application provided extension list and profile extension list + VP_DEVICE_CREATE_MERGE_EXTENSIONS_BIT = 0x00000001, + + // Use application provided extension list + VP_DEVICE_CREATE_OVERRIDE_EXTENSIONS_BIT = 0x00000002, + + // Merge application provided versions of feature structures with the profile features + // Currently unsupported, but is considered for future inclusion in which case the + // default behavior could potentially be changed to merging as the currently defined + // default behavior is forward-compatible with that + // VP_DEVICE_CREATE_MERGE_FEATURES_BIT = 0x00000004, + + // Use application provided versions of feature structures but use the profile feature + // structures when the application doesn't provide one (robust access disable flags are + // ignored if the application overrides the corresponding feature structures) + VP_DEVICE_CREATE_OVERRIDE_FEATURES_BIT = 0x00000008, + + // Only use application provided feature structures, don't add any profile specific + // feature structures (robust access disable flags are ignored in this case and only the + // application provided structures are used) + VP_DEVICE_CREATE_OVERRIDE_ALL_FEATURES_BIT = 0x00000010, + + VP_DEVICE_CREATE_DISABLE_ROBUST_BUFFER_ACCESS_BIT = 0x00000020, + VP_DEVICE_CREATE_DISABLE_ROBUST_IMAGE_ACCESS_BIT = 0x00000040, + VP_DEVICE_CREATE_DISABLE_ROBUST_ACCESS = + VP_DEVICE_CREATE_DISABLE_ROBUST_BUFFER_ACCESS_BIT | VP_DEVICE_CREATE_DISABLE_ROBUST_IMAGE_ACCESS_BIT, + + VP_DEVICE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VpDeviceCreateFlagBits; +typedef VkFlags VpDeviceCreateFlags; + +typedef struct VpDeviceCreateInfo { + const VkDeviceCreateInfo* pCreateInfo; + const VpProfileProperties* pProfile; + VpDeviceCreateFlags flags; +} VpDeviceCreateInfo; + +// Query the list of available profiles in the library +VPAPI_ATTR VkResult vpGetProfiles(uint32_t *pPropertyCount, VpProfileProperties *pProperties); + +// List the recommended fallback profiles of a profile +VPAPI_ATTR VkResult vpGetProfileFallbacks(const VpProfileProperties *pProfile, uint32_t *pPropertyCount, VpProfileProperties *pProperties); + +// Check whether a profile is supported at the instance level +VPAPI_ATTR VkResult vpGetInstanceProfileSupport(const char *pLayerName, const VpProfileProperties *pProfile, VkBool32 *pSupported); + +// Create a VkInstance with the profile instance extensions enabled +VPAPI_ATTR VkResult vpCreateInstance(const VpInstanceCreateInfo *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkInstance *pInstance); + +// Check whether a profile is supported by the physical device +VPAPI_ATTR VkResult vpGetPhysicalDeviceProfileSupport(VkInstance instance, VkPhysicalDevice physicalDevice, + const VpProfileProperties *pProfile, VkBool32 *pSupported); + +// Create a VkDevice with the profile features and device extensions enabled +VPAPI_ATTR VkResult vpCreateDevice(VkPhysicalDevice physicalDevice, const VpDeviceCreateInfo *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkDevice *pDevice); + +// Query the list of instance extensions of a profile +VPAPI_ATTR VkResult vpGetProfileInstanceExtensionProperties(const VpProfileProperties *pProfile, uint32_t *pPropertyCount, + VkExtensionProperties *pProperties); + +// Query the list of device extensions of a profile +VPAPI_ATTR VkResult vpGetProfileDeviceExtensionProperties(const VpProfileProperties *pProfile, uint32_t *pPropertyCount, + VkExtensionProperties *pProperties); + +// Fill the feature structures with the requirements of a profile +VPAPI_ATTR void vpGetProfileFeatures(const VpProfileProperties *pProfile, void *pNext); + +// Query the list of feature structure types specified by the profile +VPAPI_ATTR VkResult vpGetProfileFeatureStructureTypes(const VpProfileProperties *pProfile, uint32_t *pStructureTypeCount, + VkStructureType *pStructureTypes); + +// Fill the property structures with the requirements of a profile +VPAPI_ATTR void vpGetProfileProperties(const VpProfileProperties *pProfile, void *pNext); + +// Query the list of property structure types specified by the profile +VPAPI_ATTR VkResult vpGetProfilePropertyStructureTypes(const VpProfileProperties *pProfile, uint32_t *pStructureTypeCount, + VkStructureType *pStructureTypes); + +// Query the requirements of queue families by a profile +VPAPI_ATTR VkResult vpGetProfileQueueFamilyProperties(const VpProfileProperties *pProfile, uint32_t *pPropertyCount, + VkQueueFamilyProperties2KHR *pProperties); + +// Query the list of query family structure types specified by the profile +VPAPI_ATTR VkResult vpGetProfileQueueFamilyStructureTypes(const VpProfileProperties *pProfile, uint32_t *pStructureTypeCount, + VkStructureType *pStructureTypes); + +// Query the list of formats with specified requirements by a profile +VPAPI_ATTR VkResult vpGetProfileFormats(const VpProfileProperties *pProfile, uint32_t *pFormatCount, VkFormat *pFormats); + +// Query the requirements of a format for a profile +VPAPI_ATTR void vpGetProfileFormatProperties(const VpProfileProperties *pProfile, VkFormat format, void *pNext); + +// Query the list of format structure types specified by the profile +VPAPI_ATTR VkResult vpGetProfileFormatStructureTypes(const VpProfileProperties *pProfile, uint32_t *pStructureTypeCount, + VkStructureType *pStructureTypes); + +#ifdef __cplusplus +} +#endif + +#endif // VULKAN_PROFILES_H_ diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_screen.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_screen.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_screen.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_screen.h index 49d7dda..f0ef40a 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_screen.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_screen.h @@ -1,54 +1,54 @@ -#ifndef VULKAN_SCREEN_H_ -#define VULKAN_SCREEN_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_QNX_screen_surface 1 -#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1 -#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME "VK_QNX_screen_surface" -typedef VkFlags VkScreenSurfaceCreateFlagsQNX; -typedef struct VkScreenSurfaceCreateInfoQNX { - VkStructureType sType; - const void* pNext; - VkScreenSurfaceCreateFlagsQNX flags; - struct _screen_context* context; - struct _screen_window* window; -} VkScreenSurfaceCreateInfoQNX; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); -typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateScreenSurfaceQNX( - VkInstance instance, - const VkScreenSurfaceCreateInfoQNX* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - struct _screen_window* window); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_SCREEN_H_ +#define VULKAN_SCREEN_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_QNX_screen_surface 1 +#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1 +#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME "VK_QNX_screen_surface" +typedef VkFlags VkScreenSurfaceCreateFlagsQNX; +typedef struct VkScreenSurfaceCreateInfoQNX { + VkStructureType sType; + const void* pNext; + VkScreenSurfaceCreateFlagsQNX flags; + struct _screen_context* context; + struct _screen_window* window; +} VkScreenSurfaceCreateInfoQNX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateScreenSurfaceQNX( + VkInstance instance, + const VkScreenSurfaceCreateInfoQNX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct _screen_window* window); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_vi.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_vi.h similarity index 96% rename from engine/vkImgui/cimgui/vulkan/vulkan_vi.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_vi.h index 14f76a0..0355e7a 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_vi.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_vi.h @@ -1,47 +1,47 @@ -#ifndef VULKAN_VI_H_ -#define VULKAN_VI_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_NN_vi_surface 1 -#define VK_NN_VI_SURFACE_SPEC_VERSION 1 -#define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface" -typedef VkFlags VkViSurfaceCreateFlagsNN; -typedef struct VkViSurfaceCreateInfoNN { - VkStructureType sType; - const void* pNext; - VkViSurfaceCreateFlagsNN flags; - void* window; -} VkViSurfaceCreateInfoNN; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN( - VkInstance instance, - const VkViSurfaceCreateInfoNN* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_VI_H_ +#define VULKAN_VI_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_NN_vi_surface 1 +#define VK_NN_VI_SURFACE_SPEC_VERSION 1 +#define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface" +typedef VkFlags VkViSurfaceCreateFlagsNN; +typedef struct VkViSurfaceCreateInfoNN { + VkStructureType sType; + const void* pNext; + VkViSurfaceCreateFlagsNN flags; + void* window; +} VkViSurfaceCreateInfoNN; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN( + VkInstance instance, + const VkViSurfaceCreateInfoNN* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_wayland.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_wayland.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_wayland.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_wayland.h index 3087c79..9afd0b7 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_wayland.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_wayland.h @@ -1,54 +1,54 @@ -#ifndef VULKAN_WAYLAND_H_ -#define VULKAN_WAYLAND_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_KHR_wayland_surface 1 -#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6 -#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface" -typedef VkFlags VkWaylandSurfaceCreateFlagsKHR; -typedef struct VkWaylandSurfaceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkWaylandSurfaceCreateFlagsKHR flags; - struct wl_display* display; - struct wl_surface* surface; -} VkWaylandSurfaceCreateInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); -typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR( - VkInstance instance, - const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - struct wl_display* display); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_WAYLAND_H_ +#define VULKAN_WAYLAND_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_KHR_wayland_surface 1 +#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6 +#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface" +typedef VkFlags VkWaylandSurfaceCreateFlagsKHR; +typedef struct VkWaylandSurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkWaylandSurfaceCreateFlagsKHR flags; + struct wl_display* display; + struct wl_surface* surface; +} VkWaylandSurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR( + VkInstance instance, + const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct wl_display* display); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_win32.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_win32.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_win32.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_win32.h index fb3e16a..affe0c0 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_win32.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_win32.h @@ -1,315 +1,315 @@ -#ifndef VULKAN_WIN32_H_ -#define VULKAN_WIN32_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_KHR_win32_surface 1 -#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6 -#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface" -typedef VkFlags VkWin32SurfaceCreateFlagsKHR; -typedef struct VkWin32SurfaceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkWin32SurfaceCreateFlagsKHR flags; - HINSTANCE hinstance; - HWND hwnd; -} VkWin32SurfaceCreateInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); -typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR( - VkInstance instance, - const VkWin32SurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex); -#endif - - -#define VK_KHR_external_memory_win32 1 -#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32" -typedef struct VkImportMemoryWin32HandleInfoKHR { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagBits handleType; - HANDLE handle; - LPCWSTR name; -} VkImportMemoryWin32HandleInfoKHR; - -typedef struct VkExportMemoryWin32HandleInfoKHR { - VkStructureType sType; - const void* pNext; - const SECURITY_ATTRIBUTES* pAttributes; - DWORD dwAccess; - LPCWSTR name; -} VkExportMemoryWin32HandleInfoKHR; - -typedef struct VkMemoryWin32HandlePropertiesKHR { - VkStructureType sType; - void* pNext; - uint32_t memoryTypeBits; -} VkMemoryWin32HandlePropertiesKHR; - -typedef struct VkMemoryGetWin32HandleInfoKHR { - VkStructureType sType; - const void* pNext; - VkDeviceMemory memory; - VkExternalMemoryHandleTypeFlagBits handleType; -} VkMemoryGetWin32HandleInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR( - VkDevice device, - const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, - HANDLE* pHandle); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR( - VkDevice device, - VkExternalMemoryHandleTypeFlagBits handleType, - HANDLE handle, - VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); -#endif - - -#define VK_KHR_win32_keyed_mutex 1 -#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1 -#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex" -typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t acquireCount; - const VkDeviceMemory* pAcquireSyncs; - const uint64_t* pAcquireKeys; - const uint32_t* pAcquireTimeouts; - uint32_t releaseCount; - const VkDeviceMemory* pReleaseSyncs; - const uint64_t* pReleaseKeys; -} VkWin32KeyedMutexAcquireReleaseInfoKHR; - - - -#define VK_KHR_external_semaphore_win32 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32" -typedef struct VkImportSemaphoreWin32HandleInfoKHR { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - VkSemaphoreImportFlags flags; - VkExternalSemaphoreHandleTypeFlagBits handleType; - HANDLE handle; - LPCWSTR name; -} VkImportSemaphoreWin32HandleInfoKHR; - -typedef struct VkExportSemaphoreWin32HandleInfoKHR { - VkStructureType sType; - const void* pNext; - const SECURITY_ATTRIBUTES* pAttributes; - DWORD dwAccess; - LPCWSTR name; -} VkExportSemaphoreWin32HandleInfoKHR; - -typedef struct VkD3D12FenceSubmitInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t waitSemaphoreValuesCount; - const uint64_t* pWaitSemaphoreValues; - uint32_t signalSemaphoreValuesCount; - const uint64_t* pSignalSemaphoreValues; -} VkD3D12FenceSubmitInfoKHR; - -typedef struct VkSemaphoreGetWin32HandleInfoKHR { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - VkExternalSemaphoreHandleTypeFlagBits handleType; -} VkSemaphoreGetWin32HandleInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR( - VkDevice device, - const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR( - VkDevice device, - const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, - HANDLE* pHandle); -#endif - - -#define VK_KHR_external_fence_win32 1 -#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32" -typedef struct VkImportFenceWin32HandleInfoKHR { - VkStructureType sType; - const void* pNext; - VkFence fence; - VkFenceImportFlags flags; - VkExternalFenceHandleTypeFlagBits handleType; - HANDLE handle; - LPCWSTR name; -} VkImportFenceWin32HandleInfoKHR; - -typedef struct VkExportFenceWin32HandleInfoKHR { - VkStructureType sType; - const void* pNext; - const SECURITY_ATTRIBUTES* pAttributes; - DWORD dwAccess; - LPCWSTR name; -} VkExportFenceWin32HandleInfoKHR; - -typedef struct VkFenceGetWin32HandleInfoKHR { - VkStructureType sType; - const void* pNext; - VkFence fence; - VkExternalFenceHandleTypeFlagBits handleType; -} VkFenceGetWin32HandleInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR( - VkDevice device, - const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR( - VkDevice device, - const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, - HANDLE* pHandle); -#endif - - -#define VK_NV_external_memory_win32 1 -#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 -#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32" -typedef struct VkImportMemoryWin32HandleInfoNV { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagsNV handleType; - HANDLE handle; -} VkImportMemoryWin32HandleInfoNV; - -typedef struct VkExportMemoryWin32HandleInfoNV { - VkStructureType sType; - const void* pNext; - const SECURITY_ATTRIBUTES* pAttributes; - DWORD dwAccess; -} VkExportMemoryWin32HandleInfoNV; - -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV( - VkDevice device, - VkDeviceMemory memory, - VkExternalMemoryHandleTypeFlagsNV handleType, - HANDLE* pHandle); -#endif - - -#define VK_NV_win32_keyed_mutex 1 -#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2 -#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex" -typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV { - VkStructureType sType; - const void* pNext; - uint32_t acquireCount; - const VkDeviceMemory* pAcquireSyncs; - const uint64_t* pAcquireKeys; - const uint32_t* pAcquireTimeoutMilliseconds; - uint32_t releaseCount; - const VkDeviceMemory* pReleaseSyncs; - const uint64_t* pReleaseKeys; -} VkWin32KeyedMutexAcquireReleaseInfoNV; - - - -#define VK_EXT_full_screen_exclusive 1 -#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4 -#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive" - -typedef enum VkFullScreenExclusiveEXT { - VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0, - VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1, - VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2, - VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3, - VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkFullScreenExclusiveEXT; -typedef struct VkSurfaceFullScreenExclusiveInfoEXT { - VkStructureType sType; - void* pNext; - VkFullScreenExclusiveEXT fullScreenExclusive; -} VkSurfaceFullScreenExclusiveInfoEXT; - -typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT { - VkStructureType sType; - void* pNext; - VkBool32 fullScreenExclusiveSupported; -} VkSurfaceCapabilitiesFullScreenExclusiveEXT; - -typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT { - VkStructureType sType; - const void* pNext; - HMONITOR hmonitor; -} VkSurfaceFullScreenExclusiveWin32InfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); -typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); -typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); -typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - uint32_t* pPresentModeCount, - VkPresentModeKHR* pPresentModes); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT( - VkDevice device, - VkSwapchainKHR swapchain); - -VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT( - VkDevice device, - VkSwapchainKHR swapchain); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT( - VkDevice device, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - VkDeviceGroupPresentModeFlagsKHR* pModes); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_WIN32_H_ +#define VULKAN_WIN32_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_KHR_win32_surface 1 +#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6 +#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface" +typedef VkFlags VkWin32SurfaceCreateFlagsKHR; +typedef struct VkWin32SurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkWin32SurfaceCreateFlagsKHR flags; + HINSTANCE hinstance; + HWND hwnd; +} VkWin32SurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR( + VkInstance instance, + const VkWin32SurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex); +#endif + + +#define VK_KHR_external_memory_win32 1 +#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32" +typedef struct VkImportMemoryWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + HANDLE handle; + LPCWSTR name; +} VkImportMemoryWin32HandleInfoKHR; + +typedef struct VkExportMemoryWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + const SECURITY_ATTRIBUTES* pAttributes; + DWORD dwAccess; + LPCWSTR name; +} VkExportMemoryWin32HandleInfoKHR; + +typedef struct VkMemoryWin32HandlePropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryWin32HandlePropertiesKHR; + +typedef struct VkMemoryGetWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetWin32HandleInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR( + VkDevice device, + const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, + HANDLE* pHandle); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle, + VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); +#endif + + +#define VK_KHR_win32_keyed_mutex 1 +#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1 +#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex" +typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t acquireCount; + const VkDeviceMemory* pAcquireSyncs; + const uint64_t* pAcquireKeys; + const uint32_t* pAcquireTimeouts; + uint32_t releaseCount; + const VkDeviceMemory* pReleaseSyncs; + const uint64_t* pReleaseKeys; +} VkWin32KeyedMutexAcquireReleaseInfoKHR; + + + +#define VK_KHR_external_semaphore_win32 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32" +typedef struct VkImportSemaphoreWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkSemaphoreImportFlags flags; + VkExternalSemaphoreHandleTypeFlagBits handleType; + HANDLE handle; + LPCWSTR name; +} VkImportSemaphoreWin32HandleInfoKHR; + +typedef struct VkExportSemaphoreWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + const SECURITY_ATTRIBUTES* pAttributes; + DWORD dwAccess; + LPCWSTR name; +} VkExportSemaphoreWin32HandleInfoKHR; + +typedef struct VkD3D12FenceSubmitInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreValuesCount; + const uint64_t* pWaitSemaphoreValues; + uint32_t signalSemaphoreValuesCount; + const uint64_t* pSignalSemaphoreValues; +} VkD3D12FenceSubmitInfoKHR; + +typedef struct VkSemaphoreGetWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkSemaphoreGetWin32HandleInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR( + VkDevice device, + const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR( + VkDevice device, + const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, + HANDLE* pHandle); +#endif + + +#define VK_KHR_external_fence_win32 1 +#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32" +typedef struct VkImportFenceWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkFenceImportFlags flags; + VkExternalFenceHandleTypeFlagBits handleType; + HANDLE handle; + LPCWSTR name; +} VkImportFenceWin32HandleInfoKHR; + +typedef struct VkExportFenceWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + const SECURITY_ATTRIBUTES* pAttributes; + DWORD dwAccess; + LPCWSTR name; +} VkExportFenceWin32HandleInfoKHR; + +typedef struct VkFenceGetWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkExternalFenceHandleTypeFlagBits handleType; +} VkFenceGetWin32HandleInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR( + VkDevice device, + const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR( + VkDevice device, + const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, + HANDLE* pHandle); +#endif + + +#define VK_NV_external_memory_win32 1 +#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32" +typedef struct VkImportMemoryWin32HandleInfoNV { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagsNV handleType; + HANDLE handle; +} VkImportMemoryWin32HandleInfoNV; + +typedef struct VkExportMemoryWin32HandleInfoNV { + VkStructureType sType; + const void* pNext; + const SECURITY_ATTRIBUTES* pAttributes; + DWORD dwAccess; +} VkExportMemoryWin32HandleInfoNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV( + VkDevice device, + VkDeviceMemory memory, + VkExternalMemoryHandleTypeFlagsNV handleType, + HANDLE* pHandle); +#endif + + +#define VK_NV_win32_keyed_mutex 1 +#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2 +#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex" +typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t acquireCount; + const VkDeviceMemory* pAcquireSyncs; + const uint64_t* pAcquireKeys; + const uint32_t* pAcquireTimeoutMilliseconds; + uint32_t releaseCount; + const VkDeviceMemory* pReleaseSyncs; + const uint64_t* pReleaseKeys; +} VkWin32KeyedMutexAcquireReleaseInfoNV; + + + +#define VK_EXT_full_screen_exclusive 1 +#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4 +#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive" + +typedef enum VkFullScreenExclusiveEXT { + VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0, + VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1, + VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2, + VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3, + VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkFullScreenExclusiveEXT; +typedef struct VkSurfaceFullScreenExclusiveInfoEXT { + VkStructureType sType; + void* pNext; + VkFullScreenExclusiveEXT fullScreenExclusive; +} VkSurfaceFullScreenExclusiveInfoEXT; + +typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT { + VkStructureType sType; + void* pNext; + VkBool32 fullScreenExclusiveSupported; +} VkSurfaceCapabilitiesFullScreenExclusiveEXT; + +typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT { + VkStructureType sType; + const void* pNext; + HMONITOR hmonitor; +} VkSurfaceFullScreenExclusiveWin32InfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); +typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + uint32_t* pPresentModeCount, + VkPresentModeKHR* pPresentModes); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT( + VkDevice device, + VkSwapchainKHR swapchain); + +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT( + VkDevice device, + VkSwapchainKHR swapchain); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT( + VkDevice device, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + VkDeviceGroupPresentModeFlagsKHR* pModes); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_xcb.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_xcb.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_xcb.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_xcb.h index bfc37ef..68e61b8 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_xcb.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_xcb.h @@ -1,55 +1,55 @@ -#ifndef VULKAN_XCB_H_ -#define VULKAN_XCB_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_KHR_xcb_surface 1 -#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6 -#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface" -typedef VkFlags VkXcbSurfaceCreateFlagsKHR; -typedef struct VkXcbSurfaceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkXcbSurfaceCreateFlagsKHR flags; - xcb_connection_t* connection; - xcb_window_t window; -} VkXcbSurfaceCreateInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); -typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR( - VkInstance instance, - const VkXcbSurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - xcb_connection_t* connection, - xcb_visualid_t visual_id); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_XCB_H_ +#define VULKAN_XCB_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_KHR_xcb_surface 1 +#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6 +#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface" +typedef VkFlags VkXcbSurfaceCreateFlagsKHR; +typedef struct VkXcbSurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkXcbSurfaceCreateFlagsKHR flags; + xcb_connection_t* connection; + xcb_window_t window; +} VkXcbSurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR( + VkInstance instance, + const VkXcbSurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + xcb_connection_t* connection, + xcb_visualid_t visual_id); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_xlib.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_xlib.h similarity index 97% rename from engine/vkImgui/cimgui/vulkan/vulkan_xlib.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_xlib.h index 7be37f7..ea5360a 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_xlib.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_xlib.h @@ -1,55 +1,55 @@ -#ifndef VULKAN_XLIB_H_ -#define VULKAN_XLIB_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_KHR_xlib_surface 1 -#define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6 -#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface" -typedef VkFlags VkXlibSurfaceCreateFlagsKHR; -typedef struct VkXlibSurfaceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkXlibSurfaceCreateFlagsKHR flags; - Display* dpy; - Window window; -} VkXlibSurfaceCreateInfoKHR; - -typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); -typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR( - VkInstance instance, - const VkXlibSurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - Display* dpy, - VisualID visualID); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_XLIB_H_ +#define VULKAN_XLIB_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_KHR_xlib_surface 1 +#define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6 +#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface" +typedef VkFlags VkXlibSurfaceCreateFlagsKHR; +typedef struct VkXlibSurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkXlibSurfaceCreateFlagsKHR flags; + Display* dpy; + Window window; +} VkXlibSurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR( + VkInstance instance, + const VkXlibSurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + Display* dpy, + VisualID visualID); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimgui/vulkan/vulkan_xlib_xrandr.h b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_xlib_xrandr.h similarity index 96% rename from engine/vkImgui/cimgui/vulkan/vulkan_xlib_xrandr.h rename to engine/_archive/vkImgui/cimgui/vulkan/vulkan_xlib_xrandr.h index c0ff130..8fc35cf 100644 --- a/engine/vkImgui/cimgui/vulkan/vulkan_xlib_xrandr.h +++ b/engine/_archive/vkImgui/cimgui/vulkan/vulkan_xlib_xrandr.h @@ -1,45 +1,45 @@ -#ifndef VULKAN_XLIB_XRANDR_H_ -#define VULKAN_XLIB_XRANDR_H_ 1 - -/* -** Copyright 2015-2022 The Khronos Group Inc. -** -** SPDX-License-Identifier: Apache-2.0 -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define VK_EXT_acquire_xlib_display 1 -#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1 -#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display" -typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display); -typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT( - VkPhysicalDevice physicalDevice, - Display* dpy, - VkDisplayKHR display); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT( - VkPhysicalDevice physicalDevice, - Display* dpy, - RROutput rrOutput, - VkDisplayKHR* pDisplay); -#endif - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef VULKAN_XLIB_XRANDR_H_ +#define VULKAN_XLIB_XRANDR_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_EXT_acquire_xlib_display 1 +#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1 +#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT( + VkPhysicalDevice physicalDevice, + Display* dpy, + VkDisplayKHR display); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT( + VkPhysicalDevice physicalDevice, + Display* dpy, + RROutput rrOutput, + VkDisplayKHR* pDisplay); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/engine/vkImgui/cimplot/LICENSE b/engine/_archive/vkImgui/cimplot/LICENSE similarity index 100% rename from engine/vkImgui/cimplot/LICENSE rename to engine/_archive/vkImgui/cimplot/LICENSE diff --git a/engine/vkImgui/cimplot/README.md b/engine/_archive/vkImgui/cimplot/README.md similarity index 100% rename from engine/vkImgui/cimplot/README.md rename to engine/_archive/vkImgui/cimplot/README.md diff --git a/engine/vkImgui/cimplot/cimplot.cpp b/engine/_archive/vkImgui/cimplot/cimplot.cpp similarity index 100% rename from engine/vkImgui/cimplot/cimplot.cpp rename to engine/_archive/vkImgui/cimplot/cimplot.cpp diff --git a/engine/vkImgui/cimplot/cimplot.h b/engine/_archive/vkImgui/cimplot/cimplot.h similarity index 100% rename from engine/vkImgui/cimplot/cimplot.h rename to engine/_archive/vkImgui/cimplot/cimplot.h diff --git a/engine/vkImgui/cimplot/implot/LICENSE b/engine/_archive/vkImgui/cimplot/implot/LICENSE similarity index 100% rename from engine/vkImgui/cimplot/implot/LICENSE rename to engine/_archive/vkImgui/cimplot/implot/LICENSE diff --git a/engine/vkImgui/cimplot/implot/README.md b/engine/_archive/vkImgui/cimplot/implot/README.md similarity index 100% rename from engine/vkImgui/cimplot/implot/README.md rename to engine/_archive/vkImgui/cimplot/implot/README.md diff --git a/engine/vkImgui/cimplot/implot/TODO.md b/engine/_archive/vkImgui/cimplot/implot/TODO.md similarity index 100% rename from engine/vkImgui/cimplot/implot/TODO.md rename to engine/_archive/vkImgui/cimplot/implot/TODO.md diff --git a/engine/vkImgui/cimplot/implot/implot.cpp b/engine/_archive/vkImgui/cimplot/implot/implot.cpp similarity index 100% rename from engine/vkImgui/cimplot/implot/implot.cpp rename to engine/_archive/vkImgui/cimplot/implot/implot.cpp diff --git a/engine/vkImgui/cimplot/implot/implot.h b/engine/_archive/vkImgui/cimplot/implot/implot.h similarity index 100% rename from engine/vkImgui/cimplot/implot/implot.h rename to engine/_archive/vkImgui/cimplot/implot/implot.h diff --git a/engine/vkImgui/cimplot/implot/implot_demo.cpp b/engine/_archive/vkImgui/cimplot/implot/implot_demo.cpp similarity index 100% rename from engine/vkImgui/cimplot/implot/implot_demo.cpp rename to engine/_archive/vkImgui/cimplot/implot/implot_demo.cpp diff --git a/engine/vkImgui/cimplot/implot/implot_internal.h b/engine/_archive/vkImgui/cimplot/implot/implot_internal.h similarity index 100% rename from engine/vkImgui/cimplot/implot/implot_internal.h rename to engine/_archive/vkImgui/cimplot/implot/implot_internal.h diff --git a/engine/vkImgui/cimplot/implot/implot_items.cpp b/engine/_archive/vkImgui/cimplot/implot/implot_items.cpp similarity index 100% rename from engine/vkImgui/cimplot/implot/implot_items.cpp rename to engine/_archive/vkImgui/cimplot/implot/implot_items.cpp diff --git a/engine/vkImgui/functions.py b/engine/_archive/vkImgui/functions.py similarity index 96% rename from engine/vkImgui/functions.py rename to engine/_archive/vkImgui/functions.py index 111f0ad..daffcd1 100644 --- a/engine/vkImgui/functions.py +++ b/engine/_archive/vkImgui/functions.py @@ -1,512 +1,512 @@ -inp = """ -CIMGUI_API ImVec2* igImVec2_ImVec2_Nil(const char* x); -CIMGUI_API void ImVec2_destroy(ImVec2* self); -CIMGUI_API ImVec2* ImVec2_ImVec2_Float(float _x,float _y); -CIMGUI_API ImVec4* ImVec4_ImVec4_Nil(void); -CIMGUI_API void ImVec4_destroy(ImVec4* self); -CIMGUI_API ImVec4* ImVec4_ImVec4_Float(float _x,float _y,float _z,float _w); -CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas); -CIMGUI_API void igDestroyContext(ImGuiContext* ctx); -CIMGUI_API ImGuiContext* igGetCurrentContext(void); -CIMGUI_API void igSetCurrentContext(ImGuiContext* ctx); -CIMGUI_API ImGuiIO* igGetIO(void); -CIMGUI_API ImGuiStyle* igGetStyle(void); -CIMGUI_API void igNewFrame(void); -CIMGUI_API void igEndFrame(void); -CIMGUI_API void igRender(void); -CIMGUI_API ImDrawData* igGetDrawData(void); -CIMGUI_API void igShowDemoWindow(bool* p_open); -""" - - -singletonList = [ - 'getStyle', - 'getIO', - 'getCurrentContext', - 'getMainViewport', -] - -bitcastList = [ - "Vec2", - "Vec4", - "Cond", - "WindowFlags", - "DockNodeFlags", - "ConstCharPtrVector", - "CharVector", - "WcharVector", - "InputTextFlags", - "TreeNodeFlags", - "PopupFlags", - "SelectableFlags", - "ComboFlags", - "TabBarFlags", - "TabItemFlags", - "TableColumnFlags", - "TableFlags", - "TableRowFlags", - "TableBgTarget", - "FocusedFlags", - "HoveredFlags", - "DragDropFlags", - "DockNodeFlags", - "ModFlags", - "ConfigFlags", - "BackendFlags", - "ColorEditFlags", - "SliderFlags", - "Cond", - "Style", - "KeyData", - "FontAtlas", - "FontAtlasCustomRect", - "FontConfig", - "Io", - "Viewport", - "PlatformMonitorVector", - "ViewportPtrVector", - "PlatformIO", - "PlatformMonitor", - "ViewportFlags", - "DrawFlags", - "DrawListFlags", - "FontAtlasFlags", - "PlatformImeData", - "StbUndoRecord", - "StbUndoState", - "StbTexteditState", - "StbTexteditRow", - "Vec1", - "Rect", - "BitVector", - "Vec2ih", - "DrawListSharedData", - "DrawListPtrVector", - "DrawList", - "DrawDataBuilder", - "ItemFlags", - "ItemStatusFlags", - "SeparatorFlags", - "TextFlags", - "TooltipFlags", - "NextWindowDataFlags", - "NextItemDataFlags", - "ActivateFlags", - "ScrollFlags", - "NavHighlightFlags", - "NavDirSourceFlags", - "NavMoveFlags", - "OldColumnFlags", - "DebugLogFlags", - "DataTypeTempStorage", - "DataTypeInfo", - "ColorMod", - "StyleMod", - "ComboPreviewData", - "GroupData", - "MenuColumns", - "InputTextState", - "PopupData", - "NextWindowData", - "NextItemData", - "LastItemData", - "StackSizes", - "WindowStackData", - "PtrOrIndex", - "BitArrayForNamedKeys", - "InputEventMousePos", - "InputEventMouseWheel", - "InputEventMouseButton", - "InputEventMouseViewport", - "InputEventKey", - "InputEventText", - "InputEventAppFocused", - "InputEvent", - "ListClipperRange", - "ListClipperData", - "ListClipperRangeVector", - "NavItemData", - "OldColumnData", - "OldColumnDataVector", - "WindowPtrVector", - "WindowDockStyle", - "DockRequestVector", - "DockNodeSettingsVector", - "DockContext", - "ViewportP", - "WindowSettings", - "SettingsHandler", - "MetricsConfig", - "StackLevelInfoVector", - "StackTool", - "ContextHook", - "InputEventVector", - "WindowStackDataVector", - "ColorModVector", - "StyleModVector", - "IDVector", - "ItemFlagsVector", - "GroupDataVector", - "PopupDataVector", - "ViewportPPtrVector", - "ListClipperDataVector", - "TableTempDataVector", - "TableVector", - "TabBarVector", - "PtrOrIndexVector", - "ShrinkWidthItemVector", - "ShrinkWidthItem", - "SettingsHandlerVector", - "ContextHookVector", - "u8Vector", - "TablePool", - "TabBarPool", - "TabItemVector", - "WindowSettingsChunkStream", - "TableSettingsChunkStream", - "TabItem", - "TabBar", - "TableTempData", - "TableSettings", - "FontBuilderIO", - "TableCellData", - "TableInstanceData", - "TableColumnSpan", - "TableColumnIdxSpan", - "TableCellDataSpan", - "TableInstanceDataVector", - "TableColumnSortSpecsVector", - "TextBuffer", - "Context", - "DrawChannelVector", - "DrawChannel", - "DrawCmdVector", - "DrawIdxVector", - "f32Vector", - "FontPtrVector", - "Payload", - "ListClipper", - "Storage", - "StoragePairVector", - "WindowClass", - "InputTextCallbackData", - "SizeCallbackData", - "DrawData", - "FontGlyphVector", - "Font", - "DrawCmd", - "DrawVert", - "DrawCmdHeader", - "DrawListSplitter", -] - - -ptrcastList = [ - "WindowClass" -] - -enumcastList = [ - "StyleVar", - "DataType", - "DataTypePrivate", - "NavLayer", - "DataAuthority", - "DockNodeState", - "WindowDockStyleCol", - "ContextHookType", - "Dir", - "NavInput", - "LayoutType", - "LogType", - "Axis", - "PlotType", - "PopupPositionPolicy", - "MouseButton", - "MouseCursor", - "SortDirection", - "Key", - "StyleColor", - "KeyPrivate", - "InputSource", - "NavReadMode", - "InputEventType", -] - -with open('functions.txt') as f: - inp = f.read() - pass - -def splitTypeAndLabel(line): - if ' ' in line: - spaceIndex = line.rindex(' ') - left = line[:spaceIndex] - right = line[spaceIndex + 1:] - return left, right - else: - return line, '' - -def convertInner(typeName): - if 'size_t' == typeName: - return 'usize' - if 'double' == typeName: - return 'f64' - if 'float' == typeName: - return 'f32' - if 'char' == typeName: - return 'u8' - if 'int' == typeName: - return 'c_int' - if 'short' == typeName: - return 'c_short' - if 'unsigned char' == typeName: - return 'u8' - if 'unsigned int' == typeName: - return 'c_uint' - if 'unsigned short' == typeName: - return 'c_ushort' - if 'unsigned long' == typeName: - return 'c_ulong' - if 'long' == typeName: - return 'c_long' - if 'longlong' == typeName: - return 'c_longlong' - if 'ImGui' == typeName[0:5]: - return typeName[5:] - if 'Im' == typeName[0:2]: - return typeName[2:] - return typeName - -def parseFuncName(line): - line = line.strip(' \n;') - line = line.replace(')', '') - s = line.split('(') - funcName = s[1].strip('* ') - return funcName - -def parseFunction(line): - line = line.strip(' \n;') - line = line.replace(')', '') - s = line.split('(') - returnType = convertTypeName(s[0].strip(' ')) - funcName = convertVarName(s[1].strip('* ')) - funcName = funcName.replace('__', '_') - argsRaw = s[2].split(',') - args = [] - for a in argsRaw: - if len(a) >= 1: - args.append(a) - - argList = [] - for a in args: - a = a.strip(' ') - tname, vname = splitTypeAndLabel(a) - argList.append([convertTypeName(tname), convertVarName(vname)]) - - return (returnType, funcName, argList) - -def convertFuncName(funcName): - returnType, funcName, argList = parseFunction(line) - ostr = funcName + ': *const fn (' - first = True - for arg in argList: - if first: - first = False - else: - ostr += ', ' - ostr += arg[0] - ostr += ') ' + returnType + ',' - return ostr - -def convertVarName(name): - ostr = "" - first = True - for c in name: - if c.isupper(): - if first: - first = False - else: - ostr += '_' - ostr += c.lower() - return ostr - -def convertTypeName(entry): - if 'void*' == entry: - return '?*anyopaque' - if 'void' == entry: - return 'void' - if 'size_t' == entry: - return 'c_usize' - - # print('---') - # print(entry) - entry = entry.strip(' ') - isVector = False - if entry[:8] == 'ImVector': - isVector = True - - typeName = entry - const = False - pointer = False - if '*' in typeName: - pointer = True; - typeName = typeName.strip('*') - - # print('\'' + typeName[:5] + '\'') - if typeName[:5] == 'const': - const = True - typeName = typeName[5:] - typeName = typeName.strip(' ') - # print(typeName) - - - if '_' in typeName: - x = typeName.split('_') - typeName = x[-1] - rv = convertInner(typeName) - - if const and pointer: - rv = 'const ' + rv - - if pointer: - rv = '[*c]' + rv - - if isVector: - rv += 'Vector' - - # print(rv) - return rv - - -def startswith(line, segment): - if line[0:len(segment)] == segment: - return True - return False - -def parseRawArgsList(line): - argList = [] - windowStart = 0 - braceCount = 0 - for i in range(0, len(line)): - if line[i] == '(': - braceCount += 1 - continue - if line[i] == ')': - braceCount -= 1 - continue - if braceCount == 0 and (line[i] == ',' or i == len(line) - 1): - argList.append((line[windowStart: i + 1]).strip(',')) - windowStart = i - return argList - -def lowerFirst(s): - if len(s) > 1: - s = s[0].lower() + s[1:] - elif len(s) == 1: - s = s[0].lower() - return s - -funcList = [] -for l in inp.split('\n'): - line = l.strip(' \n;') - line = line.replace(' *', '* ') - - if len(line) == 0: - continue - - function = {} - if startswith(line, 'CIMGUI_API'): - line = line[len('CIMGUI_API'):].strip(' ') - s = line[line.index('('):] - argListRaw = parseRawArgsList(s.strip(' ()')) - argList = [] - for arg in argListRaw: - if '(*' in arg: - paramName = parseFuncName(arg) - typeName = arg - argList.append((typeName, paramName)) - elif ' ' in arg: - argList.append(( arg[:arg.rindex(' ')].strip(' '), arg[arg.rindex(' '):].strip(' '))) - else: - argList.append((arg.strip(' '), None)) - #print(line, '> ', argList) - function['rawName'] = line[:line.index('(')] - function['args'] = argList - rawName = function['rawName'] - function['label'] = rawName[rawName.rindex(' '):].strip(' ') - function['returnType'] = rawName[:rawName.rindex(' ')].strip(' ') - # reject any functions that have a variadic - shouldAdd = True - for arg in function['args']: - if '...' in arg[0]: - shouldAdd = False - if shouldAdd: - funcList.append(function) - -def wrapCast(arg): - convertedType = convertTypeName(arg[0]) - return convertedType - -for f in funcList: - if startswith(f['label'], 'ig'): - ostr = "pub fn " - label = f['label'][2:] - ostr += lowerFirst(label) - ostr += "(" - first = True - for arg in f['args']: - if arg[0] == 'void': - continue - if first: - first = False - else: - ostr += ', ' - ostr += convertVarName(arg[1]) + ': ' - ostr += convertTypeName(arg[0]) - - ostr += ") " - returnType = convertTypeName(f['returnType']) - isSingleton = False - for s in singletonList: - if s == lowerFirst(label): - returnType = returnType.replace(r'[*c]', r'?*') - isSingleton = True - break - ostr += returnType - ostr += " { //" + f['label'] +"\n " - if returnType != 'void': - ostr += 'return ' - if isSingleton: - ostr += '@ptrCast(' - ostr += "c." + f['label'] + '(' - first = True - for arg in f['args']: - if first: - first = False - else: - ostr += ', ' - - if arg[0] == 'void': - continue - argStr = convertVarName(arg[1]) - def applyCasts(a, t): - for cast in bitcastList: - if t == cast: - return '@bitCast(' + a + ')' - for cast in ptrcastList: - if cast in t: - return '@ptrCast(' + a + ')' - for cast in enumcastList: - if t == cast: - return '@intFromEnum(' + a + ')' - return a - argStr = applyCasts(argStr, convertTypeName(arg[0])) - ostr += argStr - # print(wrapCast(arg)) - if isSingleton: - ostr += ')' - ostr += ');\n' - # ostr += convertTypeName(arg[0]) - ostr += "}" - print(ostr) - else: - continue +inp = """ +CIMGUI_API ImVec2* igImVec2_ImVec2_Nil(const char* x); +CIMGUI_API void ImVec2_destroy(ImVec2* self); +CIMGUI_API ImVec2* ImVec2_ImVec2_Float(float _x,float _y); +CIMGUI_API ImVec4* ImVec4_ImVec4_Nil(void); +CIMGUI_API void ImVec4_destroy(ImVec4* self); +CIMGUI_API ImVec4* ImVec4_ImVec4_Float(float _x,float _y,float _z,float _w); +CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas); +CIMGUI_API void igDestroyContext(ImGuiContext* ctx); +CIMGUI_API ImGuiContext* igGetCurrentContext(void); +CIMGUI_API void igSetCurrentContext(ImGuiContext* ctx); +CIMGUI_API ImGuiIO* igGetIO(void); +CIMGUI_API ImGuiStyle* igGetStyle(void); +CIMGUI_API void igNewFrame(void); +CIMGUI_API void igEndFrame(void); +CIMGUI_API void igRender(void); +CIMGUI_API ImDrawData* igGetDrawData(void); +CIMGUI_API void igShowDemoWindow(bool* p_open); +""" + + +singletonList = [ + 'getStyle', + 'getIO', + 'getCurrentContext', + 'getMainViewport', +] + +bitcastList = [ + "Vec2", + "Vec4", + "Cond", + "WindowFlags", + "DockNodeFlags", + "ConstCharPtrVector", + "CharVector", + "WcharVector", + "InputTextFlags", + "TreeNodeFlags", + "PopupFlags", + "SelectableFlags", + "ComboFlags", + "TabBarFlags", + "TabItemFlags", + "TableColumnFlags", + "TableFlags", + "TableRowFlags", + "TableBgTarget", + "FocusedFlags", + "HoveredFlags", + "DragDropFlags", + "DockNodeFlags", + "ModFlags", + "ConfigFlags", + "BackendFlags", + "ColorEditFlags", + "SliderFlags", + "Cond", + "Style", + "KeyData", + "FontAtlas", + "FontAtlasCustomRect", + "FontConfig", + "Io", + "Viewport", + "PlatformMonitorVector", + "ViewportPtrVector", + "PlatformIO", + "PlatformMonitor", + "ViewportFlags", + "DrawFlags", + "DrawListFlags", + "FontAtlasFlags", + "PlatformImeData", + "StbUndoRecord", + "StbUndoState", + "StbTexteditState", + "StbTexteditRow", + "Vec1", + "Rect", + "BitVector", + "Vec2ih", + "DrawListSharedData", + "DrawListPtrVector", + "DrawList", + "DrawDataBuilder", + "ItemFlags", + "ItemStatusFlags", + "SeparatorFlags", + "TextFlags", + "TooltipFlags", + "NextWindowDataFlags", + "NextItemDataFlags", + "ActivateFlags", + "ScrollFlags", + "NavHighlightFlags", + "NavDirSourceFlags", + "NavMoveFlags", + "OldColumnFlags", + "DebugLogFlags", + "DataTypeTempStorage", + "DataTypeInfo", + "ColorMod", + "StyleMod", + "ComboPreviewData", + "GroupData", + "MenuColumns", + "InputTextState", + "PopupData", + "NextWindowData", + "NextItemData", + "LastItemData", + "StackSizes", + "WindowStackData", + "PtrOrIndex", + "BitArrayForNamedKeys", + "InputEventMousePos", + "InputEventMouseWheel", + "InputEventMouseButton", + "InputEventMouseViewport", + "InputEventKey", + "InputEventText", + "InputEventAppFocused", + "InputEvent", + "ListClipperRange", + "ListClipperData", + "ListClipperRangeVector", + "NavItemData", + "OldColumnData", + "OldColumnDataVector", + "WindowPtrVector", + "WindowDockStyle", + "DockRequestVector", + "DockNodeSettingsVector", + "DockContext", + "ViewportP", + "WindowSettings", + "SettingsHandler", + "MetricsConfig", + "StackLevelInfoVector", + "StackTool", + "ContextHook", + "InputEventVector", + "WindowStackDataVector", + "ColorModVector", + "StyleModVector", + "IDVector", + "ItemFlagsVector", + "GroupDataVector", + "PopupDataVector", + "ViewportPPtrVector", + "ListClipperDataVector", + "TableTempDataVector", + "TableVector", + "TabBarVector", + "PtrOrIndexVector", + "ShrinkWidthItemVector", + "ShrinkWidthItem", + "SettingsHandlerVector", + "ContextHookVector", + "u8Vector", + "TablePool", + "TabBarPool", + "TabItemVector", + "WindowSettingsChunkStream", + "TableSettingsChunkStream", + "TabItem", + "TabBar", + "TableTempData", + "TableSettings", + "FontBuilderIO", + "TableCellData", + "TableInstanceData", + "TableColumnSpan", + "TableColumnIdxSpan", + "TableCellDataSpan", + "TableInstanceDataVector", + "TableColumnSortSpecsVector", + "TextBuffer", + "Context", + "DrawChannelVector", + "DrawChannel", + "DrawCmdVector", + "DrawIdxVector", + "f32Vector", + "FontPtrVector", + "Payload", + "ListClipper", + "Storage", + "StoragePairVector", + "WindowClass", + "InputTextCallbackData", + "SizeCallbackData", + "DrawData", + "FontGlyphVector", + "Font", + "DrawCmd", + "DrawVert", + "DrawCmdHeader", + "DrawListSplitter", +] + + +ptrcastList = [ + "WindowClass" +] + +enumcastList = [ + "StyleVar", + "DataType", + "DataTypePrivate", + "NavLayer", + "DataAuthority", + "DockNodeState", + "WindowDockStyleCol", + "ContextHookType", + "Dir", + "NavInput", + "LayoutType", + "LogType", + "Axis", + "PlotType", + "PopupPositionPolicy", + "MouseButton", + "MouseCursor", + "SortDirection", + "Key", + "StyleColor", + "KeyPrivate", + "InputSource", + "NavReadMode", + "InputEventType", +] + +with open('functions.txt') as f: + inp = f.read() + pass + +def splitTypeAndLabel(line): + if ' ' in line: + spaceIndex = line.rindex(' ') + left = line[:spaceIndex] + right = line[spaceIndex + 1:] + return left, right + else: + return line, '' + +def convertInner(typeName): + if 'size_t' == typeName: + return 'usize' + if 'double' == typeName: + return 'f64' + if 'float' == typeName: + return 'f32' + if 'char' == typeName: + return 'u8' + if 'int' == typeName: + return 'c_int' + if 'short' == typeName: + return 'c_short' + if 'unsigned char' == typeName: + return 'u8' + if 'unsigned int' == typeName: + return 'c_uint' + if 'unsigned short' == typeName: + return 'c_ushort' + if 'unsigned long' == typeName: + return 'c_ulong' + if 'long' == typeName: + return 'c_long' + if 'longlong' == typeName: + return 'c_longlong' + if 'ImGui' == typeName[0:5]: + return typeName[5:] + if 'Im' == typeName[0:2]: + return typeName[2:] + return typeName + +def parseFuncName(line): + line = line.strip(' \n;') + line = line.replace(')', '') + s = line.split('(') + funcName = s[1].strip('* ') + return funcName + +def parseFunction(line): + line = line.strip(' \n;') + line = line.replace(')', '') + s = line.split('(') + returnType = convertTypeName(s[0].strip(' ')) + funcName = convertVarName(s[1].strip('* ')) + funcName = funcName.replace('__', '_') + argsRaw = s[2].split(',') + args = [] + for a in argsRaw: + if len(a) >= 1: + args.append(a) + + argList = [] + for a in args: + a = a.strip(' ') + tname, vname = splitTypeAndLabel(a) + argList.append([convertTypeName(tname), convertVarName(vname)]) + + return (returnType, funcName, argList) + +def convertFuncName(funcName): + returnType, funcName, argList = parseFunction(line) + ostr = funcName + ': *const fn (' + first = True + for arg in argList: + if first: + first = False + else: + ostr += ', ' + ostr += arg[0] + ostr += ') ' + returnType + ',' + return ostr + +def convertVarName(name): + ostr = "" + first = True + for c in name: + if c.isupper(): + if first: + first = False + else: + ostr += '_' + ostr += c.lower() + return ostr + +def convertTypeName(entry): + if 'void*' == entry: + return '?*anyopaque' + if 'void' == entry: + return 'void' + if 'size_t' == entry: + return 'c_usize' + + # print('---') + # print(entry) + entry = entry.strip(' ') + isVector = False + if entry[:8] == 'ImVector': + isVector = True + + typeName = entry + const = False + pointer = False + if '*' in typeName: + pointer = True; + typeName = typeName.strip('*') + + # print('\'' + typeName[:5] + '\'') + if typeName[:5] == 'const': + const = True + typeName = typeName[5:] + typeName = typeName.strip(' ') + # print(typeName) + + + if '_' in typeName: + x = typeName.split('_') + typeName = x[-1] + rv = convertInner(typeName) + + if const and pointer: + rv = 'const ' + rv + + if pointer: + rv = '[*c]' + rv + + if isVector: + rv += 'Vector' + + # print(rv) + return rv + + +def startswith(line, segment): + if line[0:len(segment)] == segment: + return True + return False + +def parseRawArgsList(line): + argList = [] + windowStart = 0 + braceCount = 0 + for i in range(0, len(line)): + if line[i] == '(': + braceCount += 1 + continue + if line[i] == ')': + braceCount -= 1 + continue + if braceCount == 0 and (line[i] == ',' or i == len(line) - 1): + argList.append((line[windowStart: i + 1]).strip(',')) + windowStart = i + return argList + +def lowerFirst(s): + if len(s) > 1: + s = s[0].lower() + s[1:] + elif len(s) == 1: + s = s[0].lower() + return s + +funcList = [] +for l in inp.split('\n'): + line = l.strip(' \n;') + line = line.replace(' *', '* ') + + if len(line) == 0: + continue + + function = {} + if startswith(line, 'CIMGUI_API'): + line = line[len('CIMGUI_API'):].strip(' ') + s = line[line.index('('):] + argListRaw = parseRawArgsList(s.strip(' ()')) + argList = [] + for arg in argListRaw: + if '(*' in arg: + paramName = parseFuncName(arg) + typeName = arg + argList.append((typeName, paramName)) + elif ' ' in arg: + argList.append(( arg[:arg.rindex(' ')].strip(' '), arg[arg.rindex(' '):].strip(' '))) + else: + argList.append((arg.strip(' '), None)) + #print(line, '> ', argList) + function['rawName'] = line[:line.index('(')] + function['args'] = argList + rawName = function['rawName'] + function['label'] = rawName[rawName.rindex(' '):].strip(' ') + function['returnType'] = rawName[:rawName.rindex(' ')].strip(' ') + # reject any functions that have a variadic + shouldAdd = True + for arg in function['args']: + if '...' in arg[0]: + shouldAdd = False + if shouldAdd: + funcList.append(function) + +def wrapCast(arg): + convertedType = convertTypeName(arg[0]) + return convertedType + +for f in funcList: + if startswith(f['label'], 'ig'): + ostr = "pub fn " + label = f['label'][2:] + ostr += lowerFirst(label) + ostr += "(" + first = True + for arg in f['args']: + if arg[0] == 'void': + continue + if first: + first = False + else: + ostr += ', ' + ostr += convertVarName(arg[1]) + ': ' + ostr += convertTypeName(arg[0]) + + ostr += ") " + returnType = convertTypeName(f['returnType']) + isSingleton = False + for s in singletonList: + if s == lowerFirst(label): + returnType = returnType.replace(r'[*c]', r'?*') + isSingleton = True + break + ostr += returnType + ostr += " { //" + f['label'] +"\n " + if returnType != 'void': + ostr += 'return ' + if isSingleton: + ostr += '@ptrCast(' + ostr += "c." + f['label'] + '(' + first = True + for arg in f['args']: + if first: + first = False + else: + ostr += ', ' + + if arg[0] == 'void': + continue + argStr = convertVarName(arg[1]) + def applyCasts(a, t): + for cast in bitcastList: + if t == cast: + return '@bitCast(' + a + ')' + for cast in ptrcastList: + if cast in t: + return '@ptrCast(' + a + ')' + for cast in enumcastList: + if t == cast: + return '@intFromEnum(' + a + ')' + return a + argStr = applyCasts(argStr, convertTypeName(arg[0])) + ostr += argStr + # print(wrapCast(arg)) + if isSingleton: + ostr += ')' + ostr += ');\n' + # ostr += convertTypeName(arg[0]) + ostr += "}" + print(ostr) + else: + continue diff --git a/engine/vkImgui/functions.txt b/engine/_archive/vkImgui/functions.txt similarity index 98% rename from engine/vkImgui/functions.txt rename to engine/_archive/vkImgui/functions.txt index 0254946..6f681ab 100644 --- a/engine/vkImgui/functions.txt +++ b/engine/_archive/vkImgui/functions.txt @@ -1,1263 +1,1263 @@ -CIMGUI_API ImVec2* ImVec2_ImVec2_Nil(void); -CIMGUI_API void ImVec2_destroy(ImVec2* self); -CIMGUI_API ImVec2* ImVec2_ImVec2_Float(float _x,float _y); -CIMGUI_API ImVec4* ImVec4_ImVec4_Nil(void); -CIMGUI_API void ImVec4_destroy(ImVec4* self); -CIMGUI_API ImVec4* ImVec4_ImVec4_Float(float _x,float _y,float _z,float _w); -CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas); -CIMGUI_API void igDestroyContext(ImGuiContext* ctx); -CIMGUI_API ImGuiContext* igGetCurrentContext(void); -CIMGUI_API void igSetCurrentContext(ImGuiContext* ctx); -CIMGUI_API ImGuiIO* igGetIO(void); -CIMGUI_API ImGuiStyle* igGetStyle(void); -CIMGUI_API void igNewFrame(void); -CIMGUI_API void igEndFrame(void); -CIMGUI_API void igRender(void); -CIMGUI_API ImDrawData* igGetDrawData(void); -CIMGUI_API void igShowDemoWindow(bool* p_open); -CIMGUI_API void igShowMetricsWindow(bool* p_open); -CIMGUI_API void igShowDebugLogWindow(bool* p_open); -CIMGUI_API void igShowStackToolWindow(bool* p_open); -CIMGUI_API void igShowAboutWindow(bool* p_open); -CIMGUI_API void igShowStyleEditor(ImGuiStyle* ref); -CIMGUI_API bool igShowStyleSelector(const char* label); -CIMGUI_API void igShowFontSelector(const char* label); -CIMGUI_API void igShowUserGuide(void); -CIMGUI_API const char* igGetVersion(void); -CIMGUI_API void igStyleColorsDark(ImGuiStyle* dst); -CIMGUI_API void igStyleColorsLight(ImGuiStyle* dst); -CIMGUI_API void igStyleColorsClassic(ImGuiStyle* dst); -CIMGUI_API bool igBegin(const char* name,bool* p_open,ImGuiWindowFlags flags); -CIMGUI_API void igEnd(void); -CIMGUI_API bool igBeginChild_Str(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags); -CIMGUI_API bool igBeginChild_ID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags); -CIMGUI_API void igEndChild(void); -CIMGUI_API bool igIsWindowAppearing(void); -CIMGUI_API bool igIsWindowCollapsed(void); -CIMGUI_API bool igIsWindowFocused(ImGuiFocusedFlags flags); -CIMGUI_API bool igIsWindowHovered(ImGuiHoveredFlags flags); -CIMGUI_API ImDrawList* igGetWindowDrawList(void); -CIMGUI_API float igGetWindowDpiScale(void); -CIMGUI_API void igGetWindowPos(ImVec2* pOut); -CIMGUI_API void igGetWindowSize(ImVec2* pOut); -CIMGUI_API float igGetWindowWidth(void); -CIMGUI_API float igGetWindowHeight(void); -CIMGUI_API ImGuiViewport* igGetWindowViewport(void); -CIMGUI_API void igSetNextWindowPos(const ImVec2 pos,ImGuiCond cond,const ImVec2 pivot); -CIMGUI_API void igSetNextWindowSize(const ImVec2 size,ImGuiCond cond); -CIMGUI_API void igSetNextWindowSizeConstraints(const ImVec2 size_min,const ImVec2 size_max,ImGuiSizeCallback custom_callback,void* custom_callback_data); -CIMGUI_API void igSetNextWindowContentSize(const ImVec2 size); -CIMGUI_API void igSetNextWindowCollapsed(bool collapsed,ImGuiCond cond); -CIMGUI_API void igSetNextWindowFocus(void); -CIMGUI_API void igSetNextWindowBgAlpha(float alpha); -CIMGUI_API void igSetNextWindowViewport(ImGuiID viewport_id); -CIMGUI_API void igSetWindowPos_Vec2(const ImVec2 pos,ImGuiCond cond); -CIMGUI_API void igSetWindowSize_Vec2(const ImVec2 size,ImGuiCond cond); -CIMGUI_API void igSetWindowCollapsed_Bool(bool collapsed,ImGuiCond cond); -CIMGUI_API void igSetWindowFocus_Nil(void); -CIMGUI_API void igSetWindowFontScale(float scale); -CIMGUI_API void igSetWindowPos_Str(const char* name,const ImVec2 pos,ImGuiCond cond); -CIMGUI_API void igSetWindowSize_Str(const char* name,const ImVec2 size,ImGuiCond cond); -CIMGUI_API void igSetWindowCollapsed_Str(const char* name,bool collapsed,ImGuiCond cond); -CIMGUI_API void igSetWindowFocus_Str(const char* name); -CIMGUI_API void igGetContentRegionAvail(ImVec2* pOut); -CIMGUI_API void igGetContentRegionMax(ImVec2* pOut); -CIMGUI_API void igGetWindowContentRegionMin(ImVec2* pOut); -CIMGUI_API void igGetWindowContentRegionMax(ImVec2* pOut); -CIMGUI_API float igGetScrollX(void); -CIMGUI_API float igGetScrollY(void); -CIMGUI_API void igSetScrollX_Float(float scroll_x); -CIMGUI_API void igSetScrollY_Float(float scroll_y); -CIMGUI_API float igGetScrollMaxX(void); -CIMGUI_API float igGetScrollMaxY(void); -CIMGUI_API void igSetScrollHereX(float center_x_ratio); -CIMGUI_API void igSetScrollHereY(float center_y_ratio); -CIMGUI_API void igSetScrollFromPosX_Float(float local_x,float center_x_ratio); -CIMGUI_API void igSetScrollFromPosY_Float(float local_y,float center_y_ratio); -CIMGUI_API void igPushFont(ImFont* font); -CIMGUI_API void igPopFont(void); -CIMGUI_API void igPushStyleColor_U32(ImGuiCol idx,ImU32 col); -CIMGUI_API void igPushStyleColor_Vec4(ImGuiCol idx,const ImVec4 col); -CIMGUI_API void igPopStyleColor(int count); -CIMGUI_API void igPushStyleVar_Float(ImGuiStyleVar idx,float val); -CIMGUI_API void igPushStyleVar_Vec2(ImGuiStyleVar idx,const ImVec2 val); -CIMGUI_API void igPopStyleVar(int count); -CIMGUI_API void igPushAllowKeyboardFocus(bool allow_keyboard_focus); -CIMGUI_API void igPopAllowKeyboardFocus(void); -CIMGUI_API void igPushButtonRepeat(bool repeat); -CIMGUI_API void igPopButtonRepeat(void); -CIMGUI_API void igPushItemWidth(float item_width); -CIMGUI_API void igPopItemWidth(void); -CIMGUI_API void igSetNextItemWidth(float item_width); -CIMGUI_API float igCalcItemWidth(void); -CIMGUI_API void igPushTextWrapPos(float wrap_local_pos_x); -CIMGUI_API void igPopTextWrapPos(void); -CIMGUI_API ImFont* igGetFont(void); -CIMGUI_API float igGetFontSize(void); -CIMGUI_API void igGetFontTexUvWhitePixel(ImVec2* pOut); -CIMGUI_API ImU32 igGetColorU32_Col(ImGuiCol idx,float alpha_mul); -CIMGUI_API ImU32 igGetColorU32_Vec4(const ImVec4 col); -CIMGUI_API ImU32 igGetColorU32_U32(ImU32 col); -CIMGUI_API const ImVec4* igGetStyleColorVec4(ImGuiCol idx); -CIMGUI_API void igSeparator(void); -CIMGUI_API void igSameLine(float offset_from_start_x,float spacing); -CIMGUI_API void igNewLine(void); -CIMGUI_API void igSpacing(void); -CIMGUI_API void igDummy(const ImVec2 size); -CIMGUI_API void igIndent(float indent_w); -CIMGUI_API void igUnindent(float indent_w); -CIMGUI_API void igBeginGroup(void); -CIMGUI_API void igEndGroup(void); -CIMGUI_API void igGetCursorPos(ImVec2* pOut); -CIMGUI_API float igGetCursorPosX(void); -CIMGUI_API float igGetCursorPosY(void); -CIMGUI_API void igSetCursorPos(const ImVec2 local_pos); -CIMGUI_API void igSetCursorPosX(float local_x); -CIMGUI_API void igSetCursorPosY(float local_y); -CIMGUI_API void igGetCursorStartPos(ImVec2 *pOut); -CIMGUI_API void igGetCursorScreenPos(ImVec2 *pOut); -CIMGUI_API void igSetCursorScreenPos(const ImVec2 pos); -CIMGUI_API void igAlignTextToFramePadding(void); -CIMGUI_API float igGetTextLineHeight(void); -CIMGUI_API float igGetTextLineHeightWithSpacing(void); -CIMGUI_API float igGetFrameHeight(void); -CIMGUI_API float igGetFrameHeightWithSpacing(void); -CIMGUI_API void igPushID_Str(const char* str_id); -CIMGUI_API void igPushID_StrStr(const char* str_id_begin,const char* str_id_end); -CIMGUI_API void igPushID_Ptr(const void* ptr_id); -CIMGUI_API void igPushID_Int(int int_id); -CIMGUI_API void igPopID(void); -CIMGUI_API ImGuiID igGetID_Str(const char* str_id); -CIMGUI_API ImGuiID igGetID_StrStr(const char* str_id_begin,const char* str_id_end); -CIMGUI_API ImGuiID igGetID_Ptr(const void* ptr_id); -CIMGUI_API void igTextUnformatted(const char* text,const char* text_end); -CIMGUI_API void igText(const char* fmt,...); -CIMGUI_API void igTextV(const char* fmt,va_list args); -CIMGUI_API void igTextColored(const ImVec4 col,const char* fmt,...); -CIMGUI_API void igTextColoredV(const ImVec4 col,const char* fmt,va_list args); -CIMGUI_API void igTextDisabled(const char* fmt,...); -CIMGUI_API void igTextDisabledV(const char* fmt,va_list args); -CIMGUI_API void igTextWrapped(const char* fmt,...); -CIMGUI_API void igTextWrappedV(const char* fmt,va_list args); -CIMGUI_API void igLabelText(const char* label,const char* fmt,...); -CIMGUI_API void igLabelTextV(const char* label,const char* fmt,va_list args); -CIMGUI_API void igBulletText(const char* fmt,...); -CIMGUI_API void igBulletTextV(const char* fmt,va_list args); -CIMGUI_API bool igButton(const char* label,const ImVec2 size); -CIMGUI_API bool igSmallButton(const char* label); -CIMGUI_API bool igInvisibleButton(const char* str_id,const ImVec2 size,ImGuiButtonFlags flags); -CIMGUI_API bool igArrowButton(const char* str_id,ImGuiDir dir); -CIMGUI_API void igImage(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 tint_col,const ImVec4 border_col); -CIMGUI_API bool igImageButton(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,int frame_padding,const ImVec4 bg_col,const ImVec4 tint_col); -CIMGUI_API bool igCheckbox(const char* label,bool* v); -CIMGUI_API bool igCheckboxFlags_IntPtr(const char* label,int* flags,int flags_value); -CIMGUI_API bool igCheckboxFlags_UintPtr(const char* label,unsigned int* flags,unsigned int flags_value); -CIMGUI_API bool igRadioButton_Bool(const char* label,bool active); -CIMGUI_API bool igRadioButton_IntPtr(const char* label,int* v,int v_button); -CIMGUI_API void igProgressBar(float fraction,const ImVec2 size_arg,const char* overlay); -CIMGUI_API void igBullet(void); -CIMGUI_API bool igBeginCombo(const char* label,const char* preview_value,ImGuiComboFlags flags); -CIMGUI_API void igEndCombo(void); -CIMGUI_API bool igCombo_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items); -CIMGUI_API bool igCombo_Str(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items); -CIMGUI_API bool igCombo_FnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int popup_max_height_in_items); -CIMGUI_API bool igDragFloat(const char* label,float* v,float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igDragFloat2(const char* label,float v[2],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igDragFloat3(const char* label,float v[3],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igDragFloat4(const char* label,float v[4],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igDragFloatRange2(const char* label,float* v_current_min,float* v_current_max,float v_speed,float v_min,float v_max,const char* format,const char* format_max,ImGuiSliderFlags flags); -CIMGUI_API bool igDragInt(const char* label,int* v,float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igDragInt2(const char* label,int v[2],float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igDragInt3(const char* label,int v[3],float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igDragInt4(const char* label,int v[4],float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igDragIntRange2(const char* label,int* v_current_min,int* v_current_max,float v_speed,int v_min,int v_max,const char* format,const char* format_max,ImGuiSliderFlags flags); -CIMGUI_API bool igDragScalar(const char* label,ImGuiDataType data_type,void* p_data,float v_speed,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igDragScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components,float v_speed,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderFloat(const char* label,float* v,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderFloat2(const char* label,float v[2],float v_min,float v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderFloat3(const char* label,float v[3],float v_min,float v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderFloat4(const char* label,float v[4],float v_min,float v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderAngle(const char* label,float* v_rad,float v_degrees_min,float v_degrees_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderInt(const char* label,int* v,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderInt2(const char* label,int v[2],int v_min,int v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderInt3(const char* label,int v[3],int v_min,int v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderInt4(const char* label,int v[4],int v_min,int v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderScalar(const char* label,ImGuiDataType data_type,void* p_data,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igVSliderFloat(const char* label,const ImVec2 size,float* v,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igVSliderInt(const char* label,const ImVec2 size,int* v,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igVSliderScalar(const char* label,const ImVec2 size,ImGuiDataType data_type,void* p_data,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igInputText(const char* label,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data); -CIMGUI_API bool igInputTextMultiline(const char* label,char* buf,size_t buf_size,const ImVec2 size,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data); -CIMGUI_API bool igInputTextWithHint(const char* label,const char* hint,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data); -CIMGUI_API bool igInputFloat(const char* label,float* v,float step,float step_fast,const char* format,ImGuiInputTextFlags flags); -CIMGUI_API bool igInputFloat2(const char* label,float v[2],const char* format,ImGuiInputTextFlags flags); -CIMGUI_API bool igInputFloat3(const char* label,float v[3],const char* format,ImGuiInputTextFlags flags); -CIMGUI_API bool igInputFloat4(const char* label,float v[4],const char* format,ImGuiInputTextFlags flags); -CIMGUI_API bool igInputInt(const char* label,int* v,int step,int step_fast,ImGuiInputTextFlags flags); -CIMGUI_API bool igInputInt2(const char* label,int v[2],ImGuiInputTextFlags flags); -CIMGUI_API bool igInputInt3(const char* label,int v[3],ImGuiInputTextFlags flags); -CIMGUI_API bool igInputInt4(const char* label,int v[4],ImGuiInputTextFlags flags); -CIMGUI_API bool igInputDouble(const char* label,double* v,double step,double step_fast,const char* format,ImGuiInputTextFlags flags); -CIMGUI_API bool igInputScalar(const char* label,ImGuiDataType data_type,void* p_data,const void* p_step,const void* p_step_fast,const char* format,ImGuiInputTextFlags flags); -CIMGUI_API bool igInputScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components,const void* p_step,const void* p_step_fast,const char* format,ImGuiInputTextFlags flags); -CIMGUI_API bool igColorEdit3(const char* label,float col[3],ImGuiColorEditFlags flags); -CIMGUI_API bool igColorEdit4(const char* label,float col[4],ImGuiColorEditFlags flags); -CIMGUI_API bool igColorPicker3(const char* label,float col[3],ImGuiColorEditFlags flags); -CIMGUI_API bool igColorPicker4(const char* label,float col[4],ImGuiColorEditFlags flags,const float* ref_col); -CIMGUI_API bool igColorButton(const char* desc_id,const ImVec4 col,ImGuiColorEditFlags flags,const ImVec2 size); -CIMGUI_API void igSetColorEditOptions(ImGuiColorEditFlags flags); -CIMGUI_API bool igTreeNode_Str(const char* label); -CIMGUI_API bool igTreeNode_StrStr(const char* str_id,const char* fmt,...); -CIMGUI_API bool igTreeNode_Ptr(const void* ptr_id,const char* fmt,...); -CIMGUI_API bool igTreeNodeV_Str(const char* str_id,const char* fmt,va_list args); -CIMGUI_API bool igTreeNodeV_Ptr(const void* ptr_id,const char* fmt,va_list args); -CIMGUI_API bool igTreeNodeEx_Str(const char* label,ImGuiTreeNodeFlags flags); -CIMGUI_API bool igTreeNodeEx_StrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...); -CIMGUI_API bool igTreeNodeEx_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...); -CIMGUI_API bool igTreeNodeExV_Str(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args); -CIMGUI_API bool igTreeNodeExV_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args); -CIMGUI_API void igTreePush_Str(const char* str_id); -CIMGUI_API void igTreePush_Ptr(const void* ptr_id); -CIMGUI_API void igTreePop(void); -CIMGUI_API float igGetTreeNodeToLabelSpacing(void); -CIMGUI_API bool igCollapsingHeader_TreeNodeFlags(const char* label,ImGuiTreeNodeFlags flags); -CIMGUI_API bool igCollapsingHeader_BoolPtr(const char* label,bool* p_visible,ImGuiTreeNodeFlags flags); -CIMGUI_API void igSetNextItemOpen(bool is_open,ImGuiCond cond); -CIMGUI_API bool igSelectable_Bool(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size); -CIMGUI_API bool igSelectable_BoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size); -CIMGUI_API bool igBeginListBox(const char* label,const ImVec2 size); -CIMGUI_API void igEndListBox(void); -CIMGUI_API bool igListBox_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items); -CIMGUI_API bool igListBox_FnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int height_in_items); -CIMGUI_API void igPlotLines_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride); -CIMGUI_API void igPlotLines_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size); -CIMGUI_API void igPlotHistogram_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride); -CIMGUI_API void igPlotHistogram_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size); -CIMGUI_API void igValue_Bool(const char* prefix,bool b); -CIMGUI_API void igValue_Int(const char* prefix,int v); -CIMGUI_API void igValue_Uint(const char* prefix,unsigned int v); -CIMGUI_API void igValue_Float(const char* prefix,float v,const char* float_format); -CIMGUI_API bool igBeginMenuBar(void); -CIMGUI_API void igEndMenuBar(void); -CIMGUI_API bool igBeginMainMenuBar(void); -CIMGUI_API void igEndMainMenuBar(void); -CIMGUI_API bool igBeginMenu(const char* label,bool enabled); -CIMGUI_API void igEndMenu(void); -CIMGUI_API bool igMenuItem_Bool(const char* label,const char* shortcut,bool selected,bool enabled); -CIMGUI_API bool igMenuItem_BoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled); -CIMGUI_API void igBeginTooltip(void); -CIMGUI_API void igEndTooltip(void); -CIMGUI_API void igSetTooltip(const char* fmt,...); -CIMGUI_API void igSetTooltipV(const char* fmt,va_list args); -CIMGUI_API bool igBeginPopup(const char* str_id,ImGuiWindowFlags flags); -CIMGUI_API bool igBeginPopupModal(const char* name,bool* p_open,ImGuiWindowFlags flags); -CIMGUI_API void igEndPopup(void); -CIMGUI_API void igOpenPopup_Str(const char* str_id,ImGuiPopupFlags popup_flags); -CIMGUI_API void igOpenPopup_ID(ImGuiID id,ImGuiPopupFlags popup_flags); -CIMGUI_API void igOpenPopupOnItemClick(const char* str_id,ImGuiPopupFlags popup_flags); -CIMGUI_API void igCloseCurrentPopup(void); -CIMGUI_API bool igBeginPopupContextItem(const char* str_id,ImGuiPopupFlags popup_flags); -CIMGUI_API bool igBeginPopupContextWindow(const char* str_id,ImGuiPopupFlags popup_flags); -CIMGUI_API bool igBeginPopupContextVoid(const char* str_id,ImGuiPopupFlags popup_flags); -CIMGUI_API bool igIsPopupOpen_Str(const char* str_id,ImGuiPopupFlags flags); -CIMGUI_API bool igBeginTable(const char* str_id,int column,ImGuiTableFlags flags,const ImVec2 outer_size,float inner_width); -CIMGUI_API void igEndTable(void); -CIMGUI_API void igTableNextRow(ImGuiTableRowFlags row_flags,float min_row_height); -CIMGUI_API bool igTableNextColumn(void); -CIMGUI_API bool igTableSetColumnIndex(int column_n); -CIMGUI_API void igTableSetupColumn(const char* label,ImGuiTableColumnFlags flags,float init_width_or_weight,ImGuiID user_id); -CIMGUI_API void igTableSetupScrollFreeze(int cols,int rows); -CIMGUI_API void igTableHeadersRow(void); -CIMGUI_API void igTableHeader(const char* label); -CIMGUI_API ImGuiTableSortSpecs* igTableGetSortSpecs(void); -CIMGUI_API int igTableGetColumnCount(void); -CIMGUI_API int igTableGetColumnIndex(void); -CIMGUI_API int igTableGetRowIndex(void); -CIMGUI_API const char* igTableGetColumnName_Int(int column_n); -CIMGUI_API ImGuiTableColumnFlags igTableGetColumnFlags(int column_n); -CIMGUI_API void igTableSetColumnEnabled(int column_n,bool v); -CIMGUI_API void igTableSetBgColor(ImGuiTableBgTarget target,ImU32 color,int column_n); -CIMGUI_API void igColumns(int count,const char* id,bool border); -CIMGUI_API void igNextColumn(void); -CIMGUI_API int igGetColumnIndex(void); -CIMGUI_API float igGetColumnWidth(int column_index); -CIMGUI_API void igSetColumnWidth(int column_index,float width); -CIMGUI_API float igGetColumnOffset(int column_index); -CIMGUI_API void igSetColumnOffset(int column_index,float offset_x); -CIMGUI_API int igGetColumnsCount(void); -CIMGUI_API bool igBeginTabBar(const char* str_id,ImGuiTabBarFlags flags); -CIMGUI_API void igEndTabBar(void); -CIMGUI_API bool igBeginTabItem(const char* label,bool* p_open,ImGuiTabItemFlags flags); -CIMGUI_API void igEndTabItem(void); -CIMGUI_API bool igTabItemButton(const char* label,ImGuiTabItemFlags flags); -CIMGUI_API void igSetTabItemClosed(const char* tab_or_docked_window_label); -CIMGUI_API ImGuiID igDockSpace(ImGuiID id,const ImVec2 size,ImGuiDockNodeFlags flags,const ImGuiWindowClass* window_class); -CIMGUI_API ImGuiID igDockSpaceOverViewport(const ImGuiViewport* viewport,ImGuiDockNodeFlags flags,const ImGuiWindowClass* window_class); -CIMGUI_API void igSetNextWindowDockID(ImGuiID dock_id,ImGuiCond cond); -CIMGUI_API void igSetNextWindowClass(const ImGuiWindowClass* window_class); -CIMGUI_API ImGuiID igGetWindowDockID(void); -CIMGUI_API bool igIsWindowDocked(void); -CIMGUI_API void igLogToTTY(int auto_open_depth); -CIMGUI_API void igLogToFile(int auto_open_depth,const char* filename); -CIMGUI_API void igLogToClipboard(int auto_open_depth); -CIMGUI_API void igLogFinish(void); -CIMGUI_API void igLogButtons(void); -CIMGUI_API void igLogTextV(const char* fmt,va_list args); -CIMGUI_API bool igBeginDragDropSource(ImGuiDragDropFlags flags); -CIMGUI_API bool igSetDragDropPayload(const char* type,const void* data,size_t sz,ImGuiCond cond); -CIMGUI_API void igEndDragDropSource(void); -CIMGUI_API bool igBeginDragDropTarget(void); -CIMGUI_API const ImGuiPayload* igAcceptDragDropPayload(const char* type,ImGuiDragDropFlags flags); -CIMGUI_API void igEndDragDropTarget(void); -CIMGUI_API const ImGuiPayload* igGetDragDropPayload(void); -CIMGUI_API void igBeginDisabled(bool disabled); -CIMGUI_API void igEndDisabled(void); -CIMGUI_API void igPushClipRect(const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect); -CIMGUI_API void igPopClipRect(void); -CIMGUI_API void igSetItemDefaultFocus(void); -CIMGUI_API void igSetKeyboardFocusHere(int offset); -CIMGUI_API bool igIsItemHovered(ImGuiHoveredFlags flags); -CIMGUI_API bool igIsItemActive(void); -CIMGUI_API bool igIsItemFocused(void); -CIMGUI_API bool igIsItemClicked(ImGuiMouseButton mouse_button); -CIMGUI_API bool igIsItemVisible(void); -CIMGUI_API bool igIsItemEdited(void); -CIMGUI_API bool igIsItemActivated(void); -CIMGUI_API bool igIsItemDeactivated(void); -CIMGUI_API bool igIsItemDeactivatedAfterEdit(void); -CIMGUI_API bool igIsItemToggledOpen(void); -CIMGUI_API bool igIsAnyItemHovered(void); -CIMGUI_API bool igIsAnyItemActive(void); -CIMGUI_API bool igIsAnyItemFocused(void); -CIMGUI_API void igGetItemRectMin(ImVec2 *pOut); -CIMGUI_API void igGetItemRectMax(ImVec2 *pOut); -CIMGUI_API void igGetItemRectSize(ImVec2 *pOut); -CIMGUI_API void igSetItemAllowOverlap(void); -CIMGUI_API ImGuiViewport* igGetMainViewport(void); -CIMGUI_API ImDrawList* igGetBackgroundDrawList_Nil(void); -CIMGUI_API ImDrawList* igGetForegroundDrawList_Nil(void); -CIMGUI_API ImDrawList* igGetBackgroundDrawList_ViewportPtr(ImGuiViewport* viewport); -CIMGUI_API ImDrawList* igGetForegroundDrawList_ViewportPtr(ImGuiViewport* viewport); -CIMGUI_API bool igIsRectVisible_Nil(const ImVec2 size); -CIMGUI_API bool igIsRectVisible_Vec2(const ImVec2 rect_min,const ImVec2 rect_max); -CIMGUI_API double igGetTime(void); -CIMGUI_API int igGetFrameCount(void); -CIMGUI_API ImDrawListSharedData* igGetDrawListSharedData(void); -CIMGUI_API const char* igGetStyleColorName(ImGuiCol idx); -CIMGUI_API void igSetStateStorage(ImGuiStorage* storage); -CIMGUI_API ImGuiStorage* igGetStateStorage(void); -CIMGUI_API bool igBeginChildFrame(ImGuiID id,const ImVec2 size,ImGuiWindowFlags flags); -CIMGUI_API void igEndChildFrame(void); -CIMGUI_API void igCalcTextSize(ImVec2 *pOut,const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width); -CIMGUI_API void igColorConvertU32ToFloat4(ImVec4 *pOut,ImU32 in); -CIMGUI_API ImU32 igColorConvertFloat4ToU32(const ImVec4 in); -CIMGUI_API void igColorConvertRGBtoHSV(float r,float g,float b,float* out_h,float* out_s,float* out_v); -CIMGUI_API void igColorConvertHSVtoRGB(float h,float s,float v,float* out_r,float* out_g,float* out_b); -CIMGUI_API bool igIsKeyDown(ImGuiKey key); -CIMGUI_API bool igIsKeyPressed(ImGuiKey key,bool repeat); -CIMGUI_API bool igIsKeyReleased(ImGuiKey key); -CIMGUI_API int igGetKeyPressedAmount(ImGuiKey key,float repeat_delay,float rate); -CIMGUI_API const char* igGetKeyName(ImGuiKey key); -CIMGUI_API void igSetNextFrameWantCaptureKeyboard(bool want_capture_keyboard); -CIMGUI_API bool igIsMouseDown(ImGuiMouseButton button); -CIMGUI_API bool igIsMouseClicked(ImGuiMouseButton button,bool repeat); -CIMGUI_API bool igIsMouseReleased(ImGuiMouseButton button); -CIMGUI_API bool igIsMouseDoubleClicked(ImGuiMouseButton button); -CIMGUI_API int igGetMouseClickedCount(ImGuiMouseButton button); -CIMGUI_API bool igIsMouseHoveringRect(const ImVec2 r_min,const ImVec2 r_max,bool clip); -CIMGUI_API bool igIsMousePosValid(const ImVec2* mouse_pos); -CIMGUI_API bool igIsAnyMouseDown(void); -CIMGUI_API void igGetMousePos(ImVec2 *pOut); -CIMGUI_API void igGetMousePosOnOpeningCurrentPopup(ImVec2 *pOut); -CIMGUI_API bool igIsMouseDragging(ImGuiMouseButton button,float lock_threshold); -CIMGUI_API void igGetMouseDragDelta(ImVec2 *pOut,ImGuiMouseButton button,float lock_threshold); -CIMGUI_API void igResetMouseDragDelta(ImGuiMouseButton button); -CIMGUI_API ImGuiMouseCursor igGetMouseCursor(void); -CIMGUI_API void igSetMouseCursor(ImGuiMouseCursor cursor_type); -CIMGUI_API void igSetNextFrameWantCaptureMouse(bool want_capture_mouse); -CIMGUI_API const char* igGetClipboardText(void); -CIMGUI_API void igSetClipboardText(const char* text); -CIMGUI_API void igLoadIniSettingsFromDisk(const char* ini_filename); -CIMGUI_API void igLoadIniSettingsFromMemory(const char* ini_data,size_t ini_size); -CIMGUI_API void igSaveIniSettingsToDisk(const char* ini_filename); -CIMGUI_API const char* igSaveIniSettingsToMemory(size_t* out_ini_size); -CIMGUI_API void igDebugTextEncoding(const char* text); -CIMGUI_API bool igDebugCheckVersionAndDataLayout(const char* version_str,size_t sz_io,size_t sz_style,size_t sz_vec2,size_t sz_vec4,size_t sz_drawvert,size_t sz_drawidx); -CIMGUI_API void igSetAllocatorFunctions(ImGuiMemAllocFunc alloc_func,ImGuiMemFreeFunc free_func,void* user_data); -CIMGUI_API void igGetAllocatorFunctions(ImGuiMemAllocFunc* p_alloc_func,ImGuiMemFreeFunc* p_free_func,void** p_user_data); -CIMGUI_API void* igMemAlloc(size_t size); -CIMGUI_API void igMemFree(void* ptr); -CIMGUI_API ImGuiPlatformIO* igGetPlatformIO(void); -CIMGUI_API void igUpdatePlatformWindows(void); -CIMGUI_API void igRenderPlatformWindowsDefault(void* platform_render_arg,void* renderer_render_arg); -CIMGUI_API void igDestroyPlatformWindows(void); -CIMGUI_API ImGuiViewport* igFindViewportByID(ImGuiID id); -CIMGUI_API ImGuiViewport* igFindViewportByPlatformHandle(void* platform_handle); -CIMGUI_API ImGuiStyle* ImGuiStyle_ImGuiStyle(void); -CIMGUI_API void ImGuiStyle_destroy(ImGuiStyle* self); -CIMGUI_API void ImGuiStyle_ScaleAllSizes(ImGuiStyle* self,float scale_factor); -CIMGUI_API void ImGuiIO_AddKeyEvent(ImGuiIO* self,ImGuiKey key,bool down); -CIMGUI_API void ImGuiIO_AddKeyAnalogEvent(ImGuiIO* self,ImGuiKey key,bool down,float v); -CIMGUI_API void ImGuiIO_AddMousePosEvent(ImGuiIO* self,float x,float y); -CIMGUI_API void ImGuiIO_AddMouseButtonEvent(ImGuiIO* self,int button,bool down); -CIMGUI_API void ImGuiIO_AddMouseWheelEvent(ImGuiIO* self,float wh_x,float wh_y); -CIMGUI_API void ImGuiIO_AddMouseViewportEvent(ImGuiIO* self,ImGuiID id); -CIMGUI_API void ImGuiIO_AddFocusEvent(ImGuiIO* self,bool focused); -CIMGUI_API void ImGuiIO_AddInputCharacter(ImGuiIO* self,unsigned int c); -CIMGUI_API void ImGuiIO_AddInputCharacterUTF16(ImGuiIO* self,ImWchar16 c); -CIMGUI_API void ImGuiIO_AddInputCharactersUTF8(ImGuiIO* self,const char* str); -CIMGUI_API void ImGuiIO_SetKeyEventNativeData(ImGuiIO* self,ImGuiKey key,int native_keycode,int native_scancode,int native_legacy_index); -CIMGUI_API void ImGuiIO_SetAppAcceptingEvents(ImGuiIO* self,bool accepting_events); -CIMGUI_API void ImGuiIO_ClearInputCharacters(ImGuiIO* self); -CIMGUI_API void ImGuiIO_ClearInputKeys(ImGuiIO* self); -CIMGUI_API ImGuiIO* ImGuiIO_ImGuiIO(void); -CIMGUI_API void ImGuiIO_destroy(ImGuiIO* self); -CIMGUI_API ImGuiInputTextCallbackData* ImGuiInputTextCallbackData_ImGuiInputTextCallbackData(void); -CIMGUI_API void ImGuiInputTextCallbackData_destroy(ImGuiInputTextCallbackData* self); -CIMGUI_API void ImGuiInputTextCallbackData_DeleteChars(ImGuiInputTextCallbackData* self,int pos,int bytes_count); -CIMGUI_API void ImGuiInputTextCallbackData_InsertChars(ImGuiInputTextCallbackData* self,int pos,const char* text,const char* text_end); -CIMGUI_API void ImGuiInputTextCallbackData_SelectAll(ImGuiInputTextCallbackData* self); -CIMGUI_API void ImGuiInputTextCallbackData_ClearSelection(ImGuiInputTextCallbackData* self); -CIMGUI_API bool ImGuiInputTextCallbackData_HasSelection(ImGuiInputTextCallbackData* self); -CIMGUI_API ImGuiWindowClass* ImGuiWindowClass_ImGuiWindowClass(void); -CIMGUI_API void ImGuiWindowClass_destroy(ImGuiWindowClass* self); -CIMGUI_API ImGuiPayload* ImGuiPayload_ImGuiPayload(void); -CIMGUI_API void ImGuiPayload_destroy(ImGuiPayload* self); -CIMGUI_API void ImGuiPayload_Clear(ImGuiPayload* self); -CIMGUI_API bool ImGuiPayload_IsDataType(ImGuiPayload* self,const char* type); -CIMGUI_API bool ImGuiPayload_IsPreview(ImGuiPayload* self); -CIMGUI_API bool ImGuiPayload_IsDelivery(ImGuiPayload* self); -CIMGUI_API ImGuiTableColumnSortSpecs* ImGuiTableColumnSortSpecs_ImGuiTableColumnSortSpecs(void); -CIMGUI_API void ImGuiTableColumnSortSpecs_destroy(ImGuiTableColumnSortSpecs* self); -CIMGUI_API ImGuiTableSortSpecs* ImGuiTableSortSpecs_ImGuiTableSortSpecs(void); -CIMGUI_API void ImGuiTableSortSpecs_destroy(ImGuiTableSortSpecs* self); -CIMGUI_API ImGuiOnceUponAFrame* ImGuiOnceUponAFrame_ImGuiOnceUponAFrame(void); -CIMGUI_API void ImGuiOnceUponAFrame_destroy(ImGuiOnceUponAFrame* self); -CIMGUI_API ImGuiTextFilter* ImGuiTextFilter_ImGuiTextFilter(const char* default_filter); -CIMGUI_API void ImGuiTextFilter_destroy(ImGuiTextFilter* self); -CIMGUI_API bool ImGuiTextFilter_Draw(ImGuiTextFilter* self,const char* label,float width); -CIMGUI_API bool ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text,const char* text_end); -CIMGUI_API void ImGuiTextFilter_Build(ImGuiTextFilter* self); -CIMGUI_API void ImGuiTextFilter_Clear(ImGuiTextFilter* self); -CIMGUI_API bool ImGuiTextFilter_IsActive(ImGuiTextFilter* self); -CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Nil(void); -CIMGUI_API void ImGuiTextRange_destroy(ImGuiTextRange* self); -CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Str(const char* _b,const char* _e); -CIMGUI_API bool ImGuiTextRange_empty(ImGuiTextRange* self); -CIMGUI_API void ImGuiTextRange_split(ImGuiTextRange* self,char separator,ImVector_ImGuiTextRange* out); -CIMGUI_API ImGuiTextBuffer* ImGuiTextBuffer_ImGuiTextBuffer(void); -CIMGUI_API void ImGuiTextBuffer_destroy(ImGuiTextBuffer* self); -CIMGUI_API const char* ImGuiTextBuffer_begin(ImGuiTextBuffer* self); -CIMGUI_API const char* ImGuiTextBuffer_end(ImGuiTextBuffer* self); -CIMGUI_API int ImGuiTextBuffer_size(ImGuiTextBuffer* self); -CIMGUI_API bool ImGuiTextBuffer_empty(ImGuiTextBuffer* self); -CIMGUI_API void ImGuiTextBuffer_clear(ImGuiTextBuffer* self); -CIMGUI_API void ImGuiTextBuffer_reserve(ImGuiTextBuffer* self,int capacity); -CIMGUI_API const char* ImGuiTextBuffer_c_str(ImGuiTextBuffer* self); -CIMGUI_API void ImGuiTextBuffer_append(ImGuiTextBuffer* self,const char* str,const char* str_end); -CIMGUI_API void ImGuiTextBuffer_appendfv(ImGuiTextBuffer* self,const char* fmt,va_list args); -CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Int(ImGuiID _key,int _val_i); -CIMGUI_API void ImGuiStoragePair_destroy(ImGuiStoragePair* self); -CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Float(ImGuiID _key,float _val_f); -CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Ptr(ImGuiID _key,void* _val_p); -CIMGUI_API void ImGuiStorage_Clear(ImGuiStorage* self); -CIMGUI_API int ImGuiStorage_GetInt(ImGuiStorage* self,ImGuiID key,int default_val); -CIMGUI_API void ImGuiStorage_SetInt(ImGuiStorage* self,ImGuiID key,int val); -CIMGUI_API bool ImGuiStorage_GetBool(ImGuiStorage* self,ImGuiID key,bool default_val); -CIMGUI_API void ImGuiStorage_SetBool(ImGuiStorage* self,ImGuiID key,bool val); -CIMGUI_API float ImGuiStorage_GetFloat(ImGuiStorage* self,ImGuiID key,float default_val); -CIMGUI_API void ImGuiStorage_SetFloat(ImGuiStorage* self,ImGuiID key,float val); -CIMGUI_API void* ImGuiStorage_GetVoidPtr(ImGuiStorage* self,ImGuiID key); -CIMGUI_API void ImGuiStorage_SetVoidPtr(ImGuiStorage* self,ImGuiID key,void* val); -CIMGUI_API int* ImGuiStorage_GetIntRef(ImGuiStorage* self,ImGuiID key,int default_val); -CIMGUI_API bool* ImGuiStorage_GetBoolRef(ImGuiStorage* self,ImGuiID key,bool default_val); -CIMGUI_API float* ImGuiStorage_GetFloatRef(ImGuiStorage* self,ImGuiID key,float default_val); -CIMGUI_API void** ImGuiStorage_GetVoidPtrRef(ImGuiStorage* self,ImGuiID key,void* default_val); -CIMGUI_API void ImGuiStorage_SetAllInt(ImGuiStorage* self,int val); -CIMGUI_API void ImGuiStorage_BuildSortByKey(ImGuiStorage* self); -CIMGUI_API ImGuiListClipper* ImGuiListClipper_ImGuiListClipper(void); -CIMGUI_API void ImGuiListClipper_destroy(ImGuiListClipper* self); -CIMGUI_API void ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count,float items_height); -CIMGUI_API void ImGuiListClipper_End(ImGuiListClipper* self); -CIMGUI_API bool ImGuiListClipper_Step(ImGuiListClipper* self); -CIMGUI_API void ImGuiListClipper_ForceDisplayRangeByIndices(ImGuiListClipper* self,int item_min,int item_max); -CIMGUI_API ImColor* ImColor_ImColor_Nil(void); -CIMGUI_API void ImColor_destroy(ImColor* self); -CIMGUI_API ImColor* ImColor_ImColor_Float(float r,float g,float b,float a); -CIMGUI_API ImColor* ImColor_ImColor_Vec4(const ImVec4 col); -CIMGUI_API ImColor* ImColor_ImColor_Int(int r,int g,int b,int a); -CIMGUI_API ImColor* ImColor_ImColor_U32(ImU32 rgba); -CIMGUI_API void ImColor_SetHSV(ImColor* self,float h,float s,float v,float a); -CIMGUI_API void ImColor_HSV(ImColor *pOut,float h,float s,float v,float a); -CIMGUI_API ImDrawCmd* ImDrawCmd_ImDrawCmd(void); -CIMGUI_API void ImDrawCmd_destroy(ImDrawCmd* self); -CIMGUI_API ImTextureID ImDrawCmd_GetTexID(ImDrawCmd* self); -CIMGUI_API ImDrawListSplitter* ImDrawListSplitter_ImDrawListSplitter(void); -CIMGUI_API void ImDrawListSplitter_destroy(ImDrawListSplitter* self); -CIMGUI_API void ImDrawListSplitter_Clear(ImDrawListSplitter* self); -CIMGUI_API void ImDrawListSplitter_ClearFreeMemory(ImDrawListSplitter* self); -CIMGUI_API void ImDrawListSplitter_Split(ImDrawListSplitter* self,ImDrawList* draw_list,int count); -CIMGUI_API void ImDrawListSplitter_Merge(ImDrawListSplitter* self,ImDrawList* draw_list); -CIMGUI_API void ImDrawListSplitter_SetCurrentChannel(ImDrawListSplitter* self,ImDrawList* draw_list,int channel_idx); -CIMGUI_API ImDrawList* ImDrawList_ImDrawList(const ImDrawListSharedData* shared_data); -CIMGUI_API void ImDrawList_destroy(ImDrawList* self); -CIMGUI_API void ImDrawList_PushClipRect(ImDrawList* self,const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect); -CIMGUI_API void ImDrawList_PushClipRectFullScreen(ImDrawList* self); -CIMGUI_API void ImDrawList_PopClipRect(ImDrawList* self); -CIMGUI_API void ImDrawList_PushTextureID(ImDrawList* self,ImTextureID texture_id); -CIMGUI_API void ImDrawList_PopTextureID(ImDrawList* self); -CIMGUI_API void ImDrawList_GetClipRectMin(ImVec2 *pOut,ImDrawList* self); -CIMGUI_API void ImDrawList_GetClipRectMax(ImVec2 *pOut,ImDrawList* self); -CIMGUI_API void ImDrawList_AddLine(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,ImU32 col,float thickness); -CIMGUI_API void ImDrawList_AddRect(ImDrawList* self,const ImVec2 p_min,const ImVec2 p_max,ImU32 col,float rounding,ImDrawFlags flags,float thickness); -CIMGUI_API void ImDrawList_AddRectFilled(ImDrawList* self,const ImVec2 p_min,const ImVec2 p_max,ImU32 col,float rounding,ImDrawFlags flags); -CIMGUI_API void ImDrawList_AddRectFilledMultiColor(ImDrawList* self,const ImVec2 p_min,const ImVec2 p_max,ImU32 col_upr_left,ImU32 col_upr_right,ImU32 col_bot_right,ImU32 col_bot_left); -CIMGUI_API void ImDrawList_AddQuad(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col,float thickness); -CIMGUI_API void ImDrawList_AddQuadFilled(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col); -CIMGUI_API void ImDrawList_AddTriangle(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,ImU32 col,float thickness); -CIMGUI_API void ImDrawList_AddTriangleFilled(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,ImU32 col); -CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments,float thickness); -CIMGUI_API void ImDrawList_AddCircleFilled(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments); -CIMGUI_API void ImDrawList_AddNgon(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments,float thickness); -CIMGUI_API void ImDrawList_AddNgonFilled(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments); -CIMGUI_API void ImDrawList_AddText_Vec2(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end); -CIMGUI_API void ImDrawList_AddText_FontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect); -CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness); -CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col); -CIMGUI_API void ImDrawList_AddBezierCubic(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col,float thickness,int num_segments); -CIMGUI_API void ImDrawList_AddBezierQuadratic(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,ImU32 col,float thickness,int num_segments); -CIMGUI_API void ImDrawList_AddImage(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 p_min,const ImVec2 p_max,const ImVec2 uv_min,const ImVec2 uv_max,ImU32 col); -CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,const ImVec2 uv1,const ImVec2 uv2,const ImVec2 uv3,const ImVec2 uv4,ImU32 col); -CIMGUI_API void ImDrawList_AddImageRounded(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 p_min,const ImVec2 p_max,const ImVec2 uv_min,const ImVec2 uv_max,ImU32 col,float rounding,ImDrawFlags flags); -CIMGUI_API void ImDrawList_PathClear(ImDrawList* self); -CIMGUI_API void ImDrawList_PathLineTo(ImDrawList* self,const ImVec2 pos); -CIMGUI_API void ImDrawList_PathLineToMergeDuplicate(ImDrawList* self,const ImVec2 pos); -CIMGUI_API void ImDrawList_PathFillConvex(ImDrawList* self,ImU32 col); -CIMGUI_API void ImDrawList_PathStroke(ImDrawList* self,ImU32 col,ImDrawFlags flags,float thickness); -CIMGUI_API void ImDrawList_PathArcTo(ImDrawList* self,const ImVec2 center,float radius,float a_min,float a_max,int num_segments); -CIMGUI_API void ImDrawList_PathArcToFast(ImDrawList* self,const ImVec2 center,float radius,int a_min_of_12,int a_max_of_12); -CIMGUI_API void ImDrawList_PathBezierCubicCurveTo(ImDrawList* self,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,int num_segments); -CIMGUI_API void ImDrawList_PathBezierQuadraticCurveTo(ImDrawList* self,const ImVec2 p2,const ImVec2 p3,int num_segments); -CIMGUI_API void ImDrawList_PathRect(ImDrawList* self,const ImVec2 rect_min,const ImVec2 rect_max,float rounding,ImDrawFlags flags); -CIMGUI_API void ImDrawList_AddCallback(ImDrawList* self,ImDrawCallback callback,void* callback_data); -CIMGUI_API void ImDrawList_AddDrawCmd(ImDrawList* self); -CIMGUI_API ImDrawList* ImDrawList_CloneOutput(ImDrawList* self); -CIMGUI_API void ImDrawList_ChannelsSplit(ImDrawList* self,int count); -CIMGUI_API void ImDrawList_ChannelsMerge(ImDrawList* self); -CIMGUI_API void ImDrawList_ChannelsSetCurrent(ImDrawList* self,int n); -CIMGUI_API void ImDrawList_PrimReserve(ImDrawList* self,int idx_count,int vtx_count); -CIMGUI_API void ImDrawList_PrimUnreserve(ImDrawList* self,int idx_count,int vtx_count); -CIMGUI_API void ImDrawList_PrimRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col); -CIMGUI_API void ImDrawList_PrimRectUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col); -CIMGUI_API void ImDrawList_PrimQuadUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,const ImVec2 uv_a,const ImVec2 uv_b,const ImVec2 uv_c,const ImVec2 uv_d,ImU32 col); -CIMGUI_API void ImDrawList_PrimWriteVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col); -CIMGUI_API void ImDrawList_PrimWriteIdx(ImDrawList* self,ImDrawIdx idx); -CIMGUI_API void ImDrawList_PrimVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col); -CIMGUI_API void ImDrawList__ResetForNewFrame(ImDrawList* self); -CIMGUI_API void ImDrawList__ClearFreeMemory(ImDrawList* self); -CIMGUI_API void ImDrawList__PopUnusedDrawCmd(ImDrawList* self); -CIMGUI_API void ImDrawList__TryMergeDrawCmds(ImDrawList* self); -CIMGUI_API void ImDrawList__OnChangedClipRect(ImDrawList* self); -CIMGUI_API void ImDrawList__OnChangedTextureID(ImDrawList* self); -CIMGUI_API void ImDrawList__OnChangedVtxOffset(ImDrawList* self); -CIMGUI_API int ImDrawList__CalcCircleAutoSegmentCount(ImDrawList* self,float radius); -CIMGUI_API void ImDrawList__PathArcToFastEx(ImDrawList* self,const ImVec2 center,float radius,int a_min_sample,int a_max_sample,int a_step); -CIMGUI_API void ImDrawList__PathArcToN(ImDrawList* self,const ImVec2 center,float radius,float a_min,float a_max,int num_segments); -CIMGUI_API ImDrawData* ImDrawData_ImDrawData(void); -CIMGUI_API void ImDrawData_destroy(ImDrawData* self); -CIMGUI_API void ImDrawData_Clear(ImDrawData* self); -CIMGUI_API void ImDrawData_DeIndexAllBuffers(ImDrawData* self); -CIMGUI_API void ImDrawData_ScaleClipRects(ImDrawData* self,const ImVec2 fb_scale); -CIMGUI_API ImFontConfig* ImFontConfig_ImFontConfig(void); -CIMGUI_API void ImFontConfig_destroy(ImFontConfig* self); -CIMGUI_API ImFontGlyphRangesBuilder* ImFontGlyphRangesBuilder_ImFontGlyphRangesBuilder(void); -CIMGUI_API void ImFontGlyphRangesBuilder_destroy(ImFontGlyphRangesBuilder* self); -CIMGUI_API void ImFontGlyphRangesBuilder_Clear(ImFontGlyphRangesBuilder* self); -CIMGUI_API bool ImFontGlyphRangesBuilder_GetBit(ImFontGlyphRangesBuilder* self,size_t n); -CIMGUI_API void ImFontGlyphRangesBuilder_SetBit(ImFontGlyphRangesBuilder* self,size_t n); -CIMGUI_API void ImFontGlyphRangesBuilder_AddChar(ImFontGlyphRangesBuilder* self,ImWchar c); -CIMGUI_API void ImFontGlyphRangesBuilder_AddText(ImFontGlyphRangesBuilder* self,const char* text,const char* text_end); -CIMGUI_API void ImFontGlyphRangesBuilder_AddRanges(ImFontGlyphRangesBuilder* self,const ImWchar* ranges); -CIMGUI_API void ImFontGlyphRangesBuilder_BuildRanges(ImFontGlyphRangesBuilder* self,ImVector_ImWchar* out_ranges); -CIMGUI_API ImFontAtlasCustomRect* ImFontAtlasCustomRect_ImFontAtlasCustomRect(void); -CIMGUI_API void ImFontAtlasCustomRect_destroy(ImFontAtlasCustomRect* self); -CIMGUI_API bool ImFontAtlasCustomRect_IsPacked(ImFontAtlasCustomRect* self); -CIMGUI_API ImFontAtlas* ImFontAtlas_ImFontAtlas(void); -CIMGUI_API void ImFontAtlas_destroy(ImFontAtlas* self); -CIMGUI_API ImFont* ImFontAtlas_AddFont(ImFontAtlas* self,const ImFontConfig* font_cfg); -CIMGUI_API ImFont* ImFontAtlas_AddFontDefault(ImFontAtlas* self,const ImFontConfig* font_cfg); -CIMGUI_API ImFont* ImFontAtlas_AddFontFromFileTTF(ImFontAtlas* self,const char* filename,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); -CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self,void* font_data,int font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); -CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self,const void* compressed_font_data,int compressed_font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); -CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(ImFontAtlas* self,const char* compressed_font_data_base85,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); -CIMGUI_API void ImFontAtlas_ClearInputData(ImFontAtlas* self); -CIMGUI_API void ImFontAtlas_ClearTexData(ImFontAtlas* self); -CIMGUI_API void ImFontAtlas_ClearFonts(ImFontAtlas* self); -CIMGUI_API void ImFontAtlas_Clear(ImFontAtlas* self); -CIMGUI_API bool ImFontAtlas_Build(ImFontAtlas* self); -CIMGUI_API void ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel); -CIMGUI_API void ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel); -CIMGUI_API bool ImFontAtlas_IsBuilt(ImFontAtlas* self); -CIMGUI_API void ImFontAtlas_SetTexID(ImFontAtlas* self,ImTextureID id); -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesDefault(ImFontAtlas* self); -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesKorean(ImFontAtlas* self); -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesJapanese(ImFontAtlas* self); -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseFull(ImFontAtlas* self); -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(ImFontAtlas* self); -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesCyrillic(ImFontAtlas* self); -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesThai(ImFontAtlas* self); -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesVietnamese(ImFontAtlas* self); -CIMGUI_API int ImFontAtlas_AddCustomRectRegular(ImFontAtlas* self,int width,int height); -CIMGUI_API int ImFontAtlas_AddCustomRectFontGlyph(ImFontAtlas* self,ImFont* font,ImWchar id,int width,int height,float advance_x,const ImVec2 offset); -CIMGUI_API ImFontAtlasCustomRect* ImFontAtlas_GetCustomRectByIndex(ImFontAtlas* self,int index); -CIMGUI_API void ImFontAtlas_CalcCustomRectUV(ImFontAtlas* self,const ImFontAtlasCustomRect* rect,ImVec2* out_uv_min,ImVec2* out_uv_max); -CIMGUI_API bool ImFontAtlas_GetMouseCursorTexData(ImFontAtlas* self,ImGuiMouseCursor cursor,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]); -CIMGUI_API ImFont* ImFont_ImFont(void); -CIMGUI_API void ImFont_destroy(ImFont* self); -CIMGUI_API const ImFontGlyph* ImFont_FindGlyph(ImFont* self,ImWchar c); -CIMGUI_API const ImFontGlyph* ImFont_FindGlyphNoFallback(ImFont* self,ImWchar c); -CIMGUI_API float ImFont_GetCharAdvance(ImFont* self,ImWchar c); -CIMGUI_API bool ImFont_IsLoaded(ImFont* self); -CIMGUI_API const char* ImFont_GetDebugName(ImFont* self); -CIMGUI_API void ImFont_CalcTextSizeA(ImVec2 *pOut,ImFont* self,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end,const char** remaining); -CIMGUI_API const char* ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,const char* text_end,float wrap_width); -CIMGUI_API void ImFont_RenderChar(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,ImWchar c); -CIMGUI_API void ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin,const char* text_end,float wrap_width,bool cpu_fine_clip); -CIMGUI_API void ImFont_BuildLookupTable(ImFont* self); -CIMGUI_API void ImFont_ClearOutputData(ImFont* self); -CIMGUI_API void ImFont_GrowIndex(ImFont* self,int new_size); -CIMGUI_API void ImFont_AddGlyph(ImFont* self,const ImFontConfig* src_cfg,ImWchar c,float x0,float y0,float x1,float y1,float u0,float v0,float u1,float v1,float advance_x); -CIMGUI_API void ImFont_AddRemapChar(ImFont* self,ImWchar dst,ImWchar src,bool overwrite_dst); -CIMGUI_API void ImFont_SetGlyphVisible(ImFont* self,ImWchar c,bool visible); -CIMGUI_API bool ImFont_IsGlyphRangeUnused(ImFont* self,unsigned int c_begin,unsigned int c_last); -CIMGUI_API ImGuiViewport* ImGuiViewport_ImGuiViewport(void); -CIMGUI_API void ImGuiViewport_destroy(ImGuiViewport* self); -CIMGUI_API void ImGuiViewport_GetCenter(ImVec2 *pOut,ImGuiViewport* self); -CIMGUI_API void ImGuiViewport_GetWorkCenter(ImVec2 *pOut,ImGuiViewport* self); -CIMGUI_API ImGuiPlatformIO* ImGuiPlatformIO_ImGuiPlatformIO(void); -CIMGUI_API void ImGuiPlatformIO_destroy(ImGuiPlatformIO* self); -CIMGUI_API ImGuiPlatformMonitor* ImGuiPlatformMonitor_ImGuiPlatformMonitor(void); -CIMGUI_API void ImGuiPlatformMonitor_destroy(ImGuiPlatformMonitor* self); -CIMGUI_API ImGuiPlatformImeData* ImGuiPlatformImeData_ImGuiPlatformImeData(void); -CIMGUI_API void ImGuiPlatformImeData_destroy(ImGuiPlatformImeData* self); -CIMGUI_API int igGetKeyIndex(ImGuiKey key); -CIMGUI_API ImGuiID igImHashData(const void* data,size_t data_size,ImU32 seed); -CIMGUI_API ImGuiID igImHashStr(const char* data,size_t data_size,ImU32 seed); -CIMGUI_API void igImQsort(void* base,size_t count,size_t size_of_element,int(*compare_func)(void const*,void const*)); -CIMGUI_API ImU32 igImAlphaBlendColors(ImU32 col_a,ImU32 col_b); -CIMGUI_API bool igImIsPowerOfTwo_Int(int v); -CIMGUI_API bool igImIsPowerOfTwo_U64(ImU64 v); -CIMGUI_API int igImUpperPowerOfTwo(int v); -CIMGUI_API int igImStricmp(const char* str1,const char* str2); -CIMGUI_API int igImStrnicmp(const char* str1,const char* str2,size_t count); -CIMGUI_API void igImStrncpy(char* dst,const char* src,size_t count); -CIMGUI_API char* igImStrdup(const char* str); -CIMGUI_API char* igImStrdupcpy(char* dst,size_t* p_dst_size,const char* str); -CIMGUI_API const char* igImStrchrRange(const char* str_begin,const char* str_end,char c); -CIMGUI_API int igImStrlenW(const ImWchar* str); -CIMGUI_API const char* igImStreolRange(const char* str,const char* str_end); -CIMGUI_API const ImWchar* igImStrbolW(const ImWchar* buf_mid_line,const ImWchar* buf_begin); -CIMGUI_API const char* igImStristr(const char* haystack,const char* haystack_end,const char* needle,const char* needle_end); -CIMGUI_API void igImStrTrimBlanks(char* str); -CIMGUI_API const char* igImStrSkipBlank(const char* str); -CIMGUI_API bool igImCharIsBlankA(char c); -CIMGUI_API bool igImCharIsBlankW(unsigned int c); -CIMGUI_API int igImFormatString(char* buf,size_t buf_size,const char* fmt,...); -CIMGUI_API int igImFormatStringV(char* buf,size_t buf_size,const char* fmt,va_list args); -CIMGUI_API void igImFormatStringToTempBuffer(const char** out_buf,const char** out_buf_end,const char* fmt,...); -CIMGUI_API void igImFormatStringToTempBufferV(const char** out_buf,const char** out_buf_end,const char* fmt,va_list args); -CIMGUI_API const char* igImParseFormatFindStart(const char* format); -CIMGUI_API const char* igImParseFormatFindEnd(const char* format); -CIMGUI_API const char* igImParseFormatTrimDecorations(const char* format,char* buf,size_t buf_size); -CIMGUI_API void igImParseFormatSanitizeForPrinting(const char* fmt_in,char* fmt_out,size_t fmt_out_size); -CIMGUI_API const char* igImParseFormatSanitizeForScanning(const char* fmt_in,char* fmt_out,size_t fmt_out_size); -CIMGUI_API int igImParseFormatPrecision(const char* format,int default_value); -CIMGUI_API const char* igImTextCharToUtf8(char out_buf[5],unsigned int c); -CIMGUI_API int igImTextStrToUtf8(char* out_buf,int out_buf_size,const ImWchar* in_text,const ImWchar* in_text_end); -CIMGUI_API int igImTextCharFromUtf8(unsigned int* out_char,const char* in_text,const char* in_text_end); -CIMGUI_API int igImTextStrFromUtf8(ImWchar* out_buf,int out_buf_size,const char* in_text,const char* in_text_end,const char** in_remaining); -CIMGUI_API int igImTextCountCharsFromUtf8(const char* in_text,const char* in_text_end); -CIMGUI_API int igImTextCountUtf8BytesFromChar(const char* in_text,const char* in_text_end); -CIMGUI_API int igImTextCountUtf8BytesFromStr(const ImWchar* in_text,const ImWchar* in_text_end); -CIMGUI_API ImFileHandle igImFileOpen(const char* filename,const char* mode); -CIMGUI_API bool igImFileClose(ImFileHandle file); -CIMGUI_API ImU64 igImFileGetSize(ImFileHandle file); -CIMGUI_API ImU64 igImFileRead(void* data,ImU64 size,ImU64 count,ImFileHandle file); -CIMGUI_API ImU64 igImFileWrite(const void* data,ImU64 size,ImU64 count,ImFileHandle file); -CIMGUI_API void* igImFileLoadToMemory(const char* filename,const char* mode,size_t* out_file_size,int padding_bytes); -CIMGUI_API float igImPow_Float(float x,float y); -CIMGUI_API double igImPow_double(double x,double y); -CIMGUI_API float igImLog_Float(float x); -CIMGUI_API double igImLog_double(double x); -CIMGUI_API int igImAbs_Int(int x); -CIMGUI_API float igImAbs_Float(float x); -CIMGUI_API double igImAbs_double(double x); -CIMGUI_API float igImSign_Float(float x); -CIMGUI_API double igImSign_double(double x); -CIMGUI_API float igImRsqrt_Float(float x); -CIMGUI_API double igImRsqrt_double(double x); -CIMGUI_API void igImMin(ImVec2 *pOut,const ImVec2 lhs,const ImVec2 rhs); -CIMGUI_API void igImMax(ImVec2 *pOut,const ImVec2 lhs,const ImVec2 rhs); -CIMGUI_API void igImClamp(ImVec2 *pOut,const ImVec2 v,const ImVec2 mn,ImVec2 mx); -CIMGUI_API void igImLerp_Vec2Float(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,float t); -CIMGUI_API void igImLerp_Vec2Vec2(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,const ImVec2 t); -CIMGUI_API void igImLerp_Vec4(ImVec4 *pOut,const ImVec4 a,const ImVec4 b,float t); -CIMGUI_API float igImSaturate(float f); -CIMGUI_API float igImLengthSqr_Vec2(const ImVec2 lhs); -CIMGUI_API float igImLengthSqr_Vec4(const ImVec4 lhs); -CIMGUI_API float igImInvLength(const ImVec2 lhs,float fail_value); -CIMGUI_API float igImFloor_Float(float f); -CIMGUI_API float igImFloorSigned_Float(float f); -CIMGUI_API void igImFloor_Vec2(ImVec2 *pOut,const ImVec2 v); -CIMGUI_API void igImFloorSigned_Vec2(ImVec2 *pOut,const ImVec2 v); -CIMGUI_API int igImModPositive(int a,int b); -CIMGUI_API float igImDot(const ImVec2 a,const ImVec2 b); -CIMGUI_API void igImRotate(ImVec2 *pOut,const ImVec2 v,float cos_a,float sin_a); -CIMGUI_API float igImLinearSweep(float current,float target,float speed); -CIMGUI_API void igImMul(ImVec2 *pOut,const ImVec2 lhs,const ImVec2 rhs); -CIMGUI_API bool igImIsFloatAboveGuaranteedIntegerPrecision(float f); -CIMGUI_API void igImBezierCubicCalc(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,float t); -CIMGUI_API void igImBezierCubicClosestPoint(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,const ImVec2 p,int num_segments); -CIMGUI_API void igImBezierCubicClosestPointCasteljau(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,const ImVec2 p,float tess_tol); -CIMGUI_API void igImBezierQuadraticCalc(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,float t); -CIMGUI_API void igImLineClosestPoint(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,const ImVec2 p); -CIMGUI_API bool igImTriangleContainsPoint(const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 p); -CIMGUI_API void igImTriangleClosestPoint(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 p); -CIMGUI_API void igImTriangleBarycentricCoords(const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 p,float* out_u,float* out_v,float* out_w); -CIMGUI_API float igImTriangleArea(const ImVec2 a,const ImVec2 b,const ImVec2 c); -CIMGUI_API ImGuiDir igImGetDirQuadrantFromDelta(float dx,float dy); -CIMGUI_API ImVec1* ImVec1_ImVec1_Nil(void); -CIMGUI_API void ImVec1_destroy(ImVec1* self); -CIMGUI_API ImVec1* ImVec1_ImVec1_Float(float _x); -CIMGUI_API ImVec2ih* ImVec2ih_ImVec2ih_Nil(void); -CIMGUI_API void ImVec2ih_destroy(ImVec2ih* self); -CIMGUI_API ImVec2ih* ImVec2ih_ImVec2ih_short(short _x,short _y); -CIMGUI_API ImVec2ih* ImVec2ih_ImVec2ih_Vec2(const ImVec2 rhs); -CIMGUI_API ImRect* ImRect_ImRect_Nil(void); -CIMGUI_API void ImRect_destroy(ImRect* self); -CIMGUI_API ImRect* ImRect_ImRect_Vec2(const ImVec2 min,const ImVec2 max); -CIMGUI_API ImRect* ImRect_ImRect_Vec4(const ImVec4 v); -CIMGUI_API ImRect* ImRect_ImRect_Float(float x1,float y1,float x2,float y2); -CIMGUI_API void ImRect_GetCenter(ImVec2 *pOut,ImRect* self); -CIMGUI_API void ImRect_GetSize(ImVec2 *pOut,ImRect* self); -CIMGUI_API float ImRect_GetWidth(ImRect* self); -CIMGUI_API float ImRect_GetHeight(ImRect* self); -CIMGUI_API float ImRect_GetArea(ImRect* self); -CIMGUI_API void ImRect_GetTL(ImVec2 *pOut,ImRect* self); -CIMGUI_API void ImRect_GetTR(ImVec2 *pOut,ImRect* self); -CIMGUI_API void ImRect_GetBL(ImVec2 *pOut,ImRect* self); -CIMGUI_API void ImRect_GetBR(ImVec2 *pOut,ImRect* self); -CIMGUI_API bool ImRect_Contains_Vec2(ImRect* self,const ImVec2 p); -CIMGUI_API bool ImRect_Contains_Rect(ImRect* self,const ImRect r); -CIMGUI_API bool ImRect_Overlaps(ImRect* self,const ImRect r); -CIMGUI_API void ImRect_Add_Vec2(ImRect* self,const ImVec2 p); -CIMGUI_API void ImRect_Add_Rect(ImRect* self,const ImRect r); -CIMGUI_API void ImRect_Expand_Float(ImRect* self,const float amount); -CIMGUI_API void ImRect_Expand_Vec2(ImRect* self,const ImVec2 amount); -CIMGUI_API void ImRect_Translate(ImRect* self,const ImVec2 d); -CIMGUI_API void ImRect_TranslateX(ImRect* self,float dx); -CIMGUI_API void ImRect_TranslateY(ImRect* self,float dy); -CIMGUI_API void ImRect_ClipWith(ImRect* self,const ImRect r); -CIMGUI_API void ImRect_ClipWithFull(ImRect* self,const ImRect r); -CIMGUI_API void ImRect_Floor(ImRect* self); -CIMGUI_API bool ImRect_IsInverted(ImRect* self); -CIMGUI_API void ImRect_ToVec4(ImVec4 *pOut,ImRect* self); -CIMGUI_API bool igImBitArrayTestBit(const ImU32* arr,int n); -CIMGUI_API void igImBitArrayClearBit(ImU32* arr,int n); -CIMGUI_API void igImBitArraySetBit(ImU32* arr,int n); -CIMGUI_API void igImBitArraySetBitRange(ImU32* arr,int n,int n2); -CIMGUI_API void ImBitVector_Create(ImBitVector* self,int sz); -CIMGUI_API void ImBitVector_Clear(ImBitVector* self); -CIMGUI_API bool ImBitVector_TestBit(ImBitVector* self,int n); -CIMGUI_API void ImBitVector_SetBit(ImBitVector* self,int n); -CIMGUI_API void ImBitVector_ClearBit(ImBitVector* self,int n); -CIMGUI_API ImDrawListSharedData* ImDrawListSharedData_ImDrawListSharedData(void); -CIMGUI_API void ImDrawListSharedData_destroy(ImDrawListSharedData* self); -CIMGUI_API void ImDrawListSharedData_SetCircleTessellationMaxError(ImDrawListSharedData* self,float max_error); -CIMGUI_API void ImDrawDataBuilder_Clear(ImDrawDataBuilder* self); -CIMGUI_API void ImDrawDataBuilder_ClearFreeMemory(ImDrawDataBuilder* self); -CIMGUI_API int ImDrawDataBuilder_GetDrawListCount(ImDrawDataBuilder* self); -CIMGUI_API void ImDrawDataBuilder_FlattenIntoSingleLayer(ImDrawDataBuilder* self); -CIMGUI_API ImGuiStyleMod* ImGuiStyleMod_ImGuiStyleMod_Int(ImGuiStyleVar idx,int v); -CIMGUI_API void ImGuiStyleMod_destroy(ImGuiStyleMod* self); -CIMGUI_API ImGuiStyleMod* ImGuiStyleMod_ImGuiStyleMod_Float(ImGuiStyleVar idx,float v); -CIMGUI_API ImGuiStyleMod* ImGuiStyleMod_ImGuiStyleMod_Vec2(ImGuiStyleVar idx,ImVec2 v); -CIMGUI_API ImGuiComboPreviewData* ImGuiComboPreviewData_ImGuiComboPreviewData(void); -CIMGUI_API void ImGuiComboPreviewData_destroy(ImGuiComboPreviewData* self); -CIMGUI_API ImGuiMenuColumns* ImGuiMenuColumns_ImGuiMenuColumns(void); -CIMGUI_API void ImGuiMenuColumns_destroy(ImGuiMenuColumns* self); -CIMGUI_API void ImGuiMenuColumns_Update(ImGuiMenuColumns* self,float spacing,bool window_reappearing); -CIMGUI_API float ImGuiMenuColumns_DeclColumns(ImGuiMenuColumns* self,float w_icon,float w_label,float w_shortcut,float w_mark); -CIMGUI_API void ImGuiMenuColumns_CalcNextTotalWidth(ImGuiMenuColumns* self,bool update_offsets); -CIMGUI_API ImGuiInputTextState* ImGuiInputTextState_ImGuiInputTextState(void); -CIMGUI_API void ImGuiInputTextState_destroy(ImGuiInputTextState* self); -CIMGUI_API void ImGuiInputTextState_ClearText(ImGuiInputTextState* self); -CIMGUI_API void ImGuiInputTextState_ClearFreeMemory(ImGuiInputTextState* self); -CIMGUI_API int ImGuiInputTextState_GetUndoAvailCount(ImGuiInputTextState* self); -CIMGUI_API int ImGuiInputTextState_GetRedoAvailCount(ImGuiInputTextState* self); -CIMGUI_API void ImGuiInputTextState_OnKeyPressed(ImGuiInputTextState* self,int key); -CIMGUI_API void ImGuiInputTextState_CursorAnimReset(ImGuiInputTextState* self); -CIMGUI_API void ImGuiInputTextState_CursorClamp(ImGuiInputTextState* self); -CIMGUI_API bool ImGuiInputTextState_HasSelection(ImGuiInputTextState* self); -CIMGUI_API void ImGuiInputTextState_ClearSelection(ImGuiInputTextState* self); -CIMGUI_API int ImGuiInputTextState_GetCursorPos(ImGuiInputTextState* self); -CIMGUI_API int ImGuiInputTextState_GetSelectionStart(ImGuiInputTextState* self); -CIMGUI_API int ImGuiInputTextState_GetSelectionEnd(ImGuiInputTextState* self); -CIMGUI_API void ImGuiInputTextState_SelectAll(ImGuiInputTextState* self); -CIMGUI_API ImGuiPopupData* ImGuiPopupData_ImGuiPopupData(void); -CIMGUI_API void ImGuiPopupData_destroy(ImGuiPopupData* self); -CIMGUI_API ImGuiNextWindowData* ImGuiNextWindowData_ImGuiNextWindowData(void); -CIMGUI_API void ImGuiNextWindowData_destroy(ImGuiNextWindowData* self); -CIMGUI_API void ImGuiNextWindowData_ClearFlags(ImGuiNextWindowData* self); -CIMGUI_API ImGuiNextItemData* ImGuiNextItemData_ImGuiNextItemData(void); -CIMGUI_API void ImGuiNextItemData_destroy(ImGuiNextItemData* self); -CIMGUI_API void ImGuiNextItemData_ClearFlags(ImGuiNextItemData* self); -CIMGUI_API ImGuiLastItemData* ImGuiLastItemData_ImGuiLastItemData(void); -CIMGUI_API void ImGuiLastItemData_destroy(ImGuiLastItemData* self); -CIMGUI_API ImGuiStackSizes* ImGuiStackSizes_ImGuiStackSizes(void); -CIMGUI_API void ImGuiStackSizes_destroy(ImGuiStackSizes* self); -CIMGUI_API void ImGuiStackSizes_SetToCurrentState(ImGuiStackSizes* self); -CIMGUI_API void ImGuiStackSizes_CompareWithCurrentState(ImGuiStackSizes* self); -CIMGUI_API ImGuiPtrOrIndex* ImGuiPtrOrIndex_ImGuiPtrOrIndex_Ptr(void* ptr); -CIMGUI_API void ImGuiPtrOrIndex_destroy(ImGuiPtrOrIndex* self); -CIMGUI_API ImGuiPtrOrIndex* ImGuiPtrOrIndex_ImGuiPtrOrIndex_Int(int index); -CIMGUI_API ImGuiInputEvent* ImGuiInputEvent_ImGuiInputEvent(void); -CIMGUI_API void ImGuiInputEvent_destroy(ImGuiInputEvent* self); -CIMGUI_API ImGuiListClipperRange ImGuiListClipperRange_FromIndices(int min,int max); -CIMGUI_API ImGuiListClipperRange ImGuiListClipperRange_FromPositions(float y1,float y2,int off_min,int off_max); -CIMGUI_API ImGuiListClipperData* ImGuiListClipperData_ImGuiListClipperData(void); -CIMGUI_API void ImGuiListClipperData_destroy(ImGuiListClipperData* self); -CIMGUI_API void ImGuiListClipperData_Reset(ImGuiListClipperData* self,ImGuiListClipper* clipper); -CIMGUI_API ImGuiNavItemData* ImGuiNavItemData_ImGuiNavItemData(void); -CIMGUI_API void ImGuiNavItemData_destroy(ImGuiNavItemData* self); -CIMGUI_API void ImGuiNavItemData_Clear(ImGuiNavItemData* self); -CIMGUI_API ImGuiOldColumnData* ImGuiOldColumnData_ImGuiOldColumnData(void); -CIMGUI_API void ImGuiOldColumnData_destroy(ImGuiOldColumnData* self); -CIMGUI_API ImGuiOldColumns* ImGuiOldColumns_ImGuiOldColumns(void); -CIMGUI_API void ImGuiOldColumns_destroy(ImGuiOldColumns* self); -CIMGUI_API ImGuiDockNode* ImGuiDockNode_ImGuiDockNode(ImGuiID id); -CIMGUI_API void ImGuiDockNode_destroy(ImGuiDockNode* self); -CIMGUI_API bool ImGuiDockNode_IsRootNode(ImGuiDockNode* self); -CIMGUI_API bool ImGuiDockNode_IsDockSpace(ImGuiDockNode* self); -CIMGUI_API bool ImGuiDockNode_IsFloatingNode(ImGuiDockNode* self); -CIMGUI_API bool ImGuiDockNode_IsCentralNode(ImGuiDockNode* self); -CIMGUI_API bool ImGuiDockNode_IsHiddenTabBar(ImGuiDockNode* self); -CIMGUI_API bool ImGuiDockNode_IsNoTabBar(ImGuiDockNode* self); -CIMGUI_API bool ImGuiDockNode_IsSplitNode(ImGuiDockNode* self); -CIMGUI_API bool ImGuiDockNode_IsLeafNode(ImGuiDockNode* self); -CIMGUI_API bool ImGuiDockNode_IsEmpty(ImGuiDockNode* self); -CIMGUI_API void ImGuiDockNode_Rect(ImRect *pOut,ImGuiDockNode* self); -CIMGUI_API void ImGuiDockNode_SetLocalFlags(ImGuiDockNode* self,ImGuiDockNodeFlags flags); -CIMGUI_API void ImGuiDockNode_UpdateMergedFlags(ImGuiDockNode* self); -CIMGUI_API ImGuiDockContext* ImGuiDockContext_ImGuiDockContext(void); -CIMGUI_API void ImGuiDockContext_destroy(ImGuiDockContext* self); -CIMGUI_API ImGuiViewportP* ImGuiViewportP_ImGuiViewportP(void); -CIMGUI_API void ImGuiViewportP_destroy(ImGuiViewportP* self); -CIMGUI_API void ImGuiViewportP_ClearRequestFlags(ImGuiViewportP* self); -CIMGUI_API void ImGuiViewportP_CalcWorkRectPos(ImVec2 *pOut,ImGuiViewportP* self,const ImVec2 off_min); -CIMGUI_API void ImGuiViewportP_CalcWorkRectSize(ImVec2 *pOut,ImGuiViewportP* self,const ImVec2 off_min,const ImVec2 off_max); -CIMGUI_API void ImGuiViewportP_UpdateWorkRect(ImGuiViewportP* self); -CIMGUI_API void ImGuiViewportP_GetMainRect(ImRect *pOut,ImGuiViewportP* self); -CIMGUI_API void ImGuiViewportP_GetWorkRect(ImRect *pOut,ImGuiViewportP* self); -CIMGUI_API void ImGuiViewportP_GetBuildWorkRect(ImRect *pOut,ImGuiViewportP* self); -CIMGUI_API ImGuiWindowSettings* ImGuiWindowSettings_ImGuiWindowSettings(void); -CIMGUI_API void ImGuiWindowSettings_destroy(ImGuiWindowSettings* self); -CIMGUI_API char* ImGuiWindowSettings_GetName(ImGuiWindowSettings* self); -CIMGUI_API ImGuiSettingsHandler* ImGuiSettingsHandler_ImGuiSettingsHandler(void); -CIMGUI_API void ImGuiSettingsHandler_destroy(ImGuiSettingsHandler* self); -CIMGUI_API ImGuiMetricsConfig* ImGuiMetricsConfig_ImGuiMetricsConfig(void); -CIMGUI_API void ImGuiMetricsConfig_destroy(ImGuiMetricsConfig* self); -CIMGUI_API ImGuiStackLevelInfo* ImGuiStackLevelInfo_ImGuiStackLevelInfo(void); -CIMGUI_API void ImGuiStackLevelInfo_destroy(ImGuiStackLevelInfo* self); -CIMGUI_API ImGuiStackTool* ImGuiStackTool_ImGuiStackTool(void); -CIMGUI_API void ImGuiStackTool_destroy(ImGuiStackTool* self); -CIMGUI_API ImGuiContextHook* ImGuiContextHook_ImGuiContextHook(void); -CIMGUI_API void ImGuiContextHook_destroy(ImGuiContextHook* self); -CIMGUI_API ImGuiContext* ImGuiContext_ImGuiContext(ImFontAtlas* shared_font_atlas); -CIMGUI_API void ImGuiContext_destroy(ImGuiContext* self); -CIMGUI_API ImGuiWindow* ImGuiWindow_ImGuiWindow(ImGuiContext* context,const char* name); -CIMGUI_API void ImGuiWindow_destroy(ImGuiWindow* self); -CIMGUI_API ImGuiID ImGuiWindow_GetID_Str(ImGuiWindow* self,const char* str,const char* str_end); -CIMGUI_API ImGuiID ImGuiWindow_GetID_Ptr(ImGuiWindow* self,const void* ptr); -CIMGUI_API ImGuiID ImGuiWindow_GetID_Int(ImGuiWindow* self,int n); -CIMGUI_API ImGuiID ImGuiWindow_GetIDFromRectangle(ImGuiWindow* self,const ImRect r_abs); -CIMGUI_API void ImGuiWindow_Rect(ImRect *pOut,ImGuiWindow* self); -CIMGUI_API float ImGuiWindow_CalcFontSize(ImGuiWindow* self); -CIMGUI_API float ImGuiWindow_TitleBarHeight(ImGuiWindow* self); -CIMGUI_API void ImGuiWindow_TitleBarRect(ImRect *pOut,ImGuiWindow* self); -CIMGUI_API float ImGuiWindow_MenuBarHeight(ImGuiWindow* self); -CIMGUI_API void ImGuiWindow_MenuBarRect(ImRect *pOut,ImGuiWindow* self); -CIMGUI_API ImGuiTabItem* ImGuiTabItem_ImGuiTabItem(void); -CIMGUI_API void ImGuiTabItem_destroy(ImGuiTabItem* self); -CIMGUI_API ImGuiTabBar* ImGuiTabBar_ImGuiTabBar(void); -CIMGUI_API void ImGuiTabBar_destroy(ImGuiTabBar* self); -CIMGUI_API int ImGuiTabBar_GetTabOrder(ImGuiTabBar* self,const ImGuiTabItem* tab); -CIMGUI_API const char* ImGuiTabBar_GetTabName(ImGuiTabBar* self,const ImGuiTabItem* tab); -CIMGUI_API ImGuiTableColumn* ImGuiTableColumn_ImGuiTableColumn(void); -CIMGUI_API void ImGuiTableColumn_destroy(ImGuiTableColumn* self); -CIMGUI_API ImGuiTableInstanceData* ImGuiTableInstanceData_ImGuiTableInstanceData(void); -CIMGUI_API void ImGuiTableInstanceData_destroy(ImGuiTableInstanceData* self); -CIMGUI_API ImGuiTable* ImGuiTable_ImGuiTable(void); -CIMGUI_API void ImGuiTable_destroy(ImGuiTable* self); -CIMGUI_API ImGuiTableTempData* ImGuiTableTempData_ImGuiTableTempData(void); -CIMGUI_API void ImGuiTableTempData_destroy(ImGuiTableTempData* self); -CIMGUI_API ImGuiTableColumnSettings* ImGuiTableColumnSettings_ImGuiTableColumnSettings(void); -CIMGUI_API void ImGuiTableColumnSettings_destroy(ImGuiTableColumnSettings* self); -CIMGUI_API ImGuiTableSettings* ImGuiTableSettings_ImGuiTableSettings(void); -CIMGUI_API void ImGuiTableSettings_destroy(ImGuiTableSettings* self); -CIMGUI_API ImGuiTableColumnSettings* ImGuiTableSettings_GetColumnSettings(ImGuiTableSettings* self); -CIMGUI_API ImGuiWindow* igGetCurrentWindowRead(void); -CIMGUI_API ImGuiWindow* igGetCurrentWindow(void); -CIMGUI_API ImGuiWindow* igFindWindowByID(ImGuiID id); -CIMGUI_API ImGuiWindow* igFindWindowByName(const char* name); -CIMGUI_API void igUpdateWindowParentAndRootLinks(ImGuiWindow* window,ImGuiWindowFlags flags,ImGuiWindow* parent_window); -CIMGUI_API void igCalcWindowNextAutoFitSize(ImVec2 *pOut,ImGuiWindow* window); -CIMGUI_API bool igIsWindowChildOf(ImGuiWindow* window,ImGuiWindow* potential_parent,bool popup_hierarchy,bool dock_hierarchy); -CIMGUI_API bool igIsWindowWithinBeginStackOf(ImGuiWindow* window,ImGuiWindow* potential_parent); -CIMGUI_API bool igIsWindowAbove(ImGuiWindow* potential_above,ImGuiWindow* potential_below); -CIMGUI_API bool igIsWindowNavFocusable(ImGuiWindow* window); -CIMGUI_API void igSetWindowPos_WindowPtr(ImGuiWindow* window,const ImVec2 pos,ImGuiCond cond); -CIMGUI_API void igSetWindowSize_WindowPtr(ImGuiWindow* window,const ImVec2 size,ImGuiCond cond); -CIMGUI_API void igSetWindowCollapsed_WindowPtr(ImGuiWindow* window,bool collapsed,ImGuiCond cond); -CIMGUI_API void igSetWindowHitTestHole(ImGuiWindow* window,const ImVec2 pos,const ImVec2 size); -CIMGUI_API void igWindowRectAbsToRel(ImRect *pOut,ImGuiWindow* window,const ImRect r); -CIMGUI_API void igWindowRectRelToAbs(ImRect *pOut,ImGuiWindow* window,const ImRect r); -CIMGUI_API void igFocusWindow(ImGuiWindow* window); -CIMGUI_API void igFocusTopMostWindowUnderOne(ImGuiWindow* under_this_window,ImGuiWindow* ignore_window); -CIMGUI_API void igBringWindowToFocusFront(ImGuiWindow* window); -CIMGUI_API void igBringWindowToDisplayFront(ImGuiWindow* window); -CIMGUI_API void igBringWindowToDisplayBack(ImGuiWindow* window); -CIMGUI_API void igBringWindowToDisplayBehind(ImGuiWindow* window,ImGuiWindow* above_window); -CIMGUI_API int igFindWindowDisplayIndex(ImGuiWindow* window); -CIMGUI_API ImGuiWindow* igFindBottomMostVisibleWindowWithinBeginStack(ImGuiWindow* window); -CIMGUI_API void igSetCurrentFont(ImFont* font); -CIMGUI_API ImFont* igGetDefaultFont(void); -CIMGUI_API ImDrawList* igGetForegroundDrawList_WindowPtr(ImGuiWindow* window); -CIMGUI_API void igInitialize(void); -CIMGUI_API void igShutdown(void); -CIMGUI_API void igUpdateInputEvents(bool trickle_fast_inputs); -CIMGUI_API void igUpdateHoveredWindowAndCaptureFlags(void); -CIMGUI_API void igStartMouseMovingWindow(ImGuiWindow* window); -CIMGUI_API void igStartMouseMovingWindowOrNode(ImGuiWindow* window,ImGuiDockNode* node,bool undock_floating_node); -CIMGUI_API void igUpdateMouseMovingWindowNewFrame(void); -CIMGUI_API void igUpdateMouseMovingWindowEndFrame(void); -CIMGUI_API ImGuiID igAddContextHook(ImGuiContext* context,const ImGuiContextHook* hook); -CIMGUI_API void igRemoveContextHook(ImGuiContext* context,ImGuiID hook_to_remove); -CIMGUI_API void igCallContextHooks(ImGuiContext* context,ImGuiContextHookType type); -CIMGUI_API void igTranslateWindowsInViewport(ImGuiViewportP* viewport,const ImVec2 old_pos,const ImVec2 new_pos); -CIMGUI_API void igScaleWindowsInViewport(ImGuiViewportP* viewport,float scale); -CIMGUI_API void igDestroyPlatformWindow(ImGuiViewportP* viewport); -CIMGUI_API void igSetWindowViewport(ImGuiWindow* window,ImGuiViewportP* viewport); -CIMGUI_API void igSetCurrentViewport(ImGuiWindow* window,ImGuiViewportP* viewport); -CIMGUI_API const ImGuiPlatformMonitor* igGetViewportPlatformMonitor(ImGuiViewport* viewport); -CIMGUI_API ImGuiViewportP* igFindHoveredViewportFromPlatformWindowStack(const ImVec2 mouse_platform_pos); -CIMGUI_API void igMarkIniSettingsDirty_Nil(void); -CIMGUI_API void igMarkIniSettingsDirty_WindowPtr(ImGuiWindow* window); -CIMGUI_API void igClearIniSettings(void); -CIMGUI_API ImGuiWindowSettings* igCreateNewWindowSettings(const char* name); -CIMGUI_API ImGuiWindowSettings* igFindWindowSettings(ImGuiID id); -CIMGUI_API ImGuiWindowSettings* igFindOrCreateWindowSettings(const char* name); -CIMGUI_API void igAddSettingsHandler(const ImGuiSettingsHandler* handler); -CIMGUI_API void igRemoveSettingsHandler(const char* type_name); -CIMGUI_API ImGuiSettingsHandler* igFindSettingsHandler(const char* type_name); -CIMGUI_API void igSetNextWindowScroll(const ImVec2 scroll); -CIMGUI_API void igSetScrollX_WindowPtr(ImGuiWindow* window,float scroll_x); -CIMGUI_API void igSetScrollY_WindowPtr(ImGuiWindow* window,float scroll_y); -CIMGUI_API void igSetScrollFromPosX_WindowPtr(ImGuiWindow* window,float local_x,float center_x_ratio); -CIMGUI_API void igSetScrollFromPosY_WindowPtr(ImGuiWindow* window,float local_y,float center_y_ratio); -CIMGUI_API void igScrollToItem(ImGuiScrollFlags flags); -CIMGUI_API void igScrollToRect(ImGuiWindow* window,const ImRect rect,ImGuiScrollFlags flags); -CIMGUI_API void igScrollToRectEx(ImVec2 *pOut,ImGuiWindow* window,const ImRect rect,ImGuiScrollFlags flags); -CIMGUI_API void igScrollToBringRectIntoView(ImGuiWindow* window,const ImRect rect); -CIMGUI_API ImGuiID igGetItemID(void); -CIMGUI_API ImGuiItemStatusFlags igGetItemStatusFlags(void); -CIMGUI_API ImGuiItemFlags igGetItemFlags(void); -CIMGUI_API ImGuiID igGetActiveID(void); -CIMGUI_API ImGuiID igGetFocusID(void); -CIMGUI_API void igSetActiveID(ImGuiID id,ImGuiWindow* window); -CIMGUI_API void igSetFocusID(ImGuiID id,ImGuiWindow* window); -CIMGUI_API void igClearActiveID(void); -CIMGUI_API ImGuiID igGetHoveredID(void); -CIMGUI_API void igSetHoveredID(ImGuiID id); -CIMGUI_API void igKeepAliveID(ImGuiID id); -CIMGUI_API void igMarkItemEdited(ImGuiID id); -CIMGUI_API void igPushOverrideID(ImGuiID id); -CIMGUI_API ImGuiID igGetIDWithSeed(const char* str_id_begin,const char* str_id_end,ImGuiID seed); -CIMGUI_API void igItemSize_Vec2(const ImVec2 size,float text_baseline_y); -CIMGUI_API void igItemSize_Rect(const ImRect bb,float text_baseline_y); -CIMGUI_API bool igItemAdd(const ImRect bb,ImGuiID id,const ImRect* nav_bb,ImGuiItemFlags extra_flags); -CIMGUI_API bool igItemHoverable(const ImRect bb,ImGuiID id); -CIMGUI_API bool igIsClippedEx(const ImRect bb,ImGuiID id); -CIMGUI_API void igSetLastItemData(ImGuiID item_id,ImGuiItemFlags in_flags,ImGuiItemStatusFlags status_flags,const ImRect item_rect); -CIMGUI_API void igCalcItemSize(ImVec2 *pOut,ImVec2 size,float default_w,float default_h); -CIMGUI_API float igCalcWrapWidthForPos(const ImVec2 pos,float wrap_pos_x); -CIMGUI_API void igPushMultiItemsWidths(int components,float width_full); -CIMGUI_API bool igIsItemToggledSelection(void); -CIMGUI_API void igGetContentRegionMaxAbs(ImVec2 *pOut); -CIMGUI_API void igShrinkWidths(ImGuiShrinkWidthItem* items,int count,float width_excess); -CIMGUI_API void igPushItemFlag(ImGuiItemFlags option,bool enabled); -CIMGUI_API void igPopItemFlag(void); -CIMGUI_API void igLogBegin(ImGuiLogType type,int auto_open_depth); -CIMGUI_API void igLogToBuffer(int auto_open_depth); -CIMGUI_API void igLogRenderedText(const ImVec2* ref_pos,const char* text,const char* text_end); -CIMGUI_API void igLogSetNextTextDecoration(const char* prefix,const char* suffix); -CIMGUI_API bool igBeginChildEx(const char* name,ImGuiID id,const ImVec2 size_arg,bool border,ImGuiWindowFlags flags); -CIMGUI_API void igOpenPopupEx(ImGuiID id,ImGuiPopupFlags popup_flags); -CIMGUI_API void igClosePopupToLevel(int remaining,bool restore_focus_to_window_under_popup); -CIMGUI_API void igClosePopupsOverWindow(ImGuiWindow* ref_window,bool restore_focus_to_window_under_popup); -CIMGUI_API void igClosePopupsExceptModals(void); -CIMGUI_API bool igIsPopupOpen_ID(ImGuiID id,ImGuiPopupFlags popup_flags); -CIMGUI_API bool igBeginPopupEx(ImGuiID id,ImGuiWindowFlags extra_flags); -CIMGUI_API void igBeginTooltipEx(ImGuiTooltipFlags tooltip_flags,ImGuiWindowFlags extra_window_flags); -CIMGUI_API void igGetPopupAllowedExtentRect(ImRect *pOut,ImGuiWindow* window); -CIMGUI_API ImGuiWindow* igGetTopMostPopupModal(void); -CIMGUI_API ImGuiWindow* igGetTopMostAndVisiblePopupModal(void); -CIMGUI_API void igFindBestWindowPosForPopup(ImVec2 *pOut,ImGuiWindow* window); -CIMGUI_API void igFindBestWindowPosForPopupEx(ImVec2 *pOut,const ImVec2 ref_pos,const ImVec2 size,ImGuiDir* last_dir,const ImRect r_outer,const ImRect r_avoid,ImGuiPopupPositionPolicy policy); -CIMGUI_API bool igBeginViewportSideBar(const char* name,ImGuiViewport* viewport,ImGuiDir dir,float size,ImGuiWindowFlags window_flags); -CIMGUI_API bool igBeginMenuEx(const char* label,const char* icon,bool enabled); -CIMGUI_API bool igMenuItemEx(const char* label,const char* icon,const char* shortcut,bool selected,bool enabled); -CIMGUI_API bool igBeginComboPopup(ImGuiID popup_id,const ImRect bb,ImGuiComboFlags flags); -CIMGUI_API bool igBeginComboPreview(void); -CIMGUI_API void igEndComboPreview(void); -CIMGUI_API void igNavInitWindow(ImGuiWindow* window,bool force_reinit); -CIMGUI_API void igNavInitRequestApplyResult(void); -CIMGUI_API bool igNavMoveRequestButNoResultYet(void); -CIMGUI_API void igNavMoveRequestSubmit(ImGuiDir move_dir,ImGuiDir clip_dir,ImGuiNavMoveFlags move_flags,ImGuiScrollFlags scroll_flags); -CIMGUI_API void igNavMoveRequestForward(ImGuiDir move_dir,ImGuiDir clip_dir,ImGuiNavMoveFlags move_flags,ImGuiScrollFlags scroll_flags); -CIMGUI_API void igNavMoveRequestResolveWithLastItem(ImGuiNavItemData* result); -CIMGUI_API void igNavMoveRequestCancel(void); -CIMGUI_API void igNavMoveRequestApplyResult(void); -CIMGUI_API void igNavMoveRequestTryWrapping(ImGuiWindow* window,ImGuiNavMoveFlags move_flags); -CIMGUI_API const char* igGetNavInputName(ImGuiNavInput n); -CIMGUI_API float igGetNavInputAmount(ImGuiNavInput n,ImGuiNavReadMode mode); -CIMGUI_API void igGetNavInputAmount2d(ImVec2 *pOut,ImGuiNavDirSourceFlags dir_sources,ImGuiNavReadMode mode,float slow_factor,float fast_factor); -CIMGUI_API int igCalcTypematicRepeatAmount(float t0,float t1,float repeat_delay,float repeat_rate); -CIMGUI_API void igActivateItem(ImGuiID id); -CIMGUI_API void igSetNavWindow(ImGuiWindow* window); -CIMGUI_API void igSetNavID(ImGuiID id,ImGuiNavLayer nav_layer,ImGuiID focus_scope_id,const ImRect rect_rel); -CIMGUI_API void igPushFocusScope(ImGuiID id); -CIMGUI_API void igPopFocusScope(void); -CIMGUI_API ImGuiID igGetFocusedFocusScope(void); -CIMGUI_API ImGuiID igGetFocusScope(void); -CIMGUI_API bool igIsNamedKey(ImGuiKey key); -CIMGUI_API bool igIsLegacyKey(ImGuiKey key); -CIMGUI_API bool igIsGamepadKey(ImGuiKey key); -CIMGUI_API ImGuiKeyData* igGetKeyData(ImGuiKey key); -CIMGUI_API void igSetItemUsingMouseWheel(void); -CIMGUI_API void igSetActiveIdUsingNavAndKeys(void); -CIMGUI_API bool igIsActiveIdUsingNavDir(ImGuiDir dir); -CIMGUI_API bool igIsActiveIdUsingNavInput(ImGuiNavInput input); -CIMGUI_API bool igIsActiveIdUsingKey(ImGuiKey key); -CIMGUI_API void igSetActiveIdUsingKey(ImGuiKey key); -CIMGUI_API bool igIsMouseDragPastThreshold(ImGuiMouseButton button,float lock_threshold); -CIMGUI_API bool igIsNavInputDown(ImGuiNavInput n); -CIMGUI_API bool igIsNavInputTest(ImGuiNavInput n,ImGuiNavReadMode rm); -CIMGUI_API ImGuiModFlags igGetMergedModFlags(void); -CIMGUI_API bool igIsKeyPressedMap(ImGuiKey key,bool repeat); -CIMGUI_API void igDockContextInitialize(ImGuiContext* ctx); -CIMGUI_API void igDockContextShutdown(ImGuiContext* ctx); -CIMGUI_API void igDockContextClearNodes(ImGuiContext* ctx,ImGuiID root_id,bool clear_settings_refs); -CIMGUI_API void igDockContextRebuildNodes(ImGuiContext* ctx); -CIMGUI_API void igDockContextNewFrameUpdateUndocking(ImGuiContext* ctx); -CIMGUI_API void igDockContextNewFrameUpdateDocking(ImGuiContext* ctx); -CIMGUI_API void igDockContextEndFrame(ImGuiContext* ctx); -CIMGUI_API ImGuiID igDockContextGenNodeID(ImGuiContext* ctx); -CIMGUI_API void igDockContextQueueDock(ImGuiContext* ctx,ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload,ImGuiDir split_dir,float split_ratio,bool split_outer); -CIMGUI_API void igDockContextQueueUndockWindow(ImGuiContext* ctx,ImGuiWindow* window); -CIMGUI_API void igDockContextQueueUndockNode(ImGuiContext* ctx,ImGuiDockNode* node); -CIMGUI_API bool igDockContextCalcDropPosForDocking(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload,ImGuiDir split_dir,bool split_outer,ImVec2* out_pos); -CIMGUI_API bool igDockNodeBeginAmendTabBar(ImGuiDockNode* node); -CIMGUI_API void igDockNodeEndAmendTabBar(void); -CIMGUI_API ImGuiDockNode* igDockNodeGetRootNode(ImGuiDockNode* node); -CIMGUI_API bool igDockNodeIsInHierarchyOf(ImGuiDockNode* node,ImGuiDockNode* parent); -CIMGUI_API int igDockNodeGetDepth(const ImGuiDockNode* node); -CIMGUI_API ImGuiID igDockNodeGetWindowMenuButtonId(const ImGuiDockNode* node); -CIMGUI_API ImGuiDockNode* igGetWindowDockNode(void); -CIMGUI_API bool igGetWindowAlwaysWantOwnTabBar(ImGuiWindow* window); -CIMGUI_API void igBeginDocked(ImGuiWindow* window,bool* p_open); -CIMGUI_API void igBeginDockableDragDropSource(ImGuiWindow* window); -CIMGUI_API void igBeginDockableDragDropTarget(ImGuiWindow* window); -CIMGUI_API void igSetWindowDock(ImGuiWindow* window,ImGuiID dock_id,ImGuiCond cond); -CIMGUI_API void igDockBuilderDockWindow(const char* window_name,ImGuiID node_id); -CIMGUI_API ImGuiDockNode* igDockBuilderGetNode(ImGuiID node_id); -CIMGUI_API ImGuiDockNode* igDockBuilderGetCentralNode(ImGuiID node_id); -CIMGUI_API ImGuiID igDockBuilderAddNode(ImGuiID node_id,ImGuiDockNodeFlags flags); -CIMGUI_API void igDockBuilderRemoveNode(ImGuiID node_id); -CIMGUI_API void igDockBuilderRemoveNodeDockedWindows(ImGuiID node_id,bool clear_settings_refs); -CIMGUI_API void igDockBuilderRemoveNodeChildNodes(ImGuiID node_id); -CIMGUI_API void igDockBuilderSetNodePos(ImGuiID node_id,ImVec2 pos); -CIMGUI_API void igDockBuilderSetNodeSize(ImGuiID node_id,ImVec2 size); -CIMGUI_API ImGuiID igDockBuilderSplitNode(ImGuiID node_id,ImGuiDir split_dir,float size_ratio_for_node_at_dir,ImGuiID* out_id_at_dir,ImGuiID* out_id_at_opposite_dir); -CIMGUI_API void igDockBuilderCopyDockSpace(ImGuiID src_dockspace_id,ImGuiID dst_dockspace_id,ImVector_const_charPtr* in_window_remap_pairs); -CIMGUI_API void igDockBuilderCopyNode(ImGuiID src_node_id,ImGuiID dst_node_id,ImVector_ImGuiID* out_node_remap_pairs); -CIMGUI_API void igDockBuilderCopyWindowSettings(const char* src_name,const char* dst_name); -CIMGUI_API void igDockBuilderFinish(ImGuiID node_id); -CIMGUI_API bool igIsDragDropActive(void); -CIMGUI_API bool igBeginDragDropTargetCustom(const ImRect bb,ImGuiID id); -CIMGUI_API void igClearDragDrop(void); -CIMGUI_API bool igIsDragDropPayloadBeingAccepted(void); -CIMGUI_API void igSetWindowClipRectBeforeSetChannel(ImGuiWindow* window,const ImRect clip_rect); -CIMGUI_API void igBeginColumns(const char* str_id,int count,ImGuiOldColumnFlags flags); -CIMGUI_API void igEndColumns(void); -CIMGUI_API void igPushColumnClipRect(int column_index); -CIMGUI_API void igPushColumnsBackground(void); -CIMGUI_API void igPopColumnsBackground(void); -CIMGUI_API ImGuiID igGetColumnsID(const char* str_id,int count); -CIMGUI_API ImGuiOldColumns* igFindOrCreateColumns(ImGuiWindow* window,ImGuiID id); -CIMGUI_API float igGetColumnOffsetFromNorm(const ImGuiOldColumns* columns,float offset_norm); -CIMGUI_API float igGetColumnNormFromOffset(const ImGuiOldColumns* columns,float offset); -CIMGUI_API void igTableOpenContextMenu(int column_n); -CIMGUI_API void igTableSetColumnWidth(int column_n,float width); -CIMGUI_API void igTableSetColumnSortDirection(int column_n,ImGuiSortDirection sort_direction,bool append_to_sort_specs); -CIMGUI_API int igTableGetHoveredColumn(void); -CIMGUI_API float igTableGetHeaderRowHeight(void); -CIMGUI_API void igTablePushBackgroundChannel(void); -CIMGUI_API void igTablePopBackgroundChannel(void); -CIMGUI_API ImGuiTable* igGetCurrentTable(void); -CIMGUI_API ImGuiTable* igTableFindByID(ImGuiID id); -CIMGUI_API bool igBeginTableEx(const char* name,ImGuiID id,int columns_count,ImGuiTableFlags flags,const ImVec2 outer_size,float inner_width); -CIMGUI_API void igTableBeginInitMemory(ImGuiTable* table,int columns_count); -CIMGUI_API void igTableBeginApplyRequests(ImGuiTable* table); -CIMGUI_API void igTableSetupDrawChannels(ImGuiTable* table); -CIMGUI_API void igTableUpdateLayout(ImGuiTable* table); -CIMGUI_API void igTableUpdateBorders(ImGuiTable* table); -CIMGUI_API void igTableUpdateColumnsWeightFromWidth(ImGuiTable* table); -CIMGUI_API void igTableDrawBorders(ImGuiTable* table); -CIMGUI_API void igTableDrawContextMenu(ImGuiTable* table); -CIMGUI_API void igTableMergeDrawChannels(ImGuiTable* table); -CIMGUI_API ImGuiTableInstanceData* igTableGetInstanceData(ImGuiTable* table,int instance_no); -CIMGUI_API void igTableSortSpecsSanitize(ImGuiTable* table); -CIMGUI_API void igTableSortSpecsBuild(ImGuiTable* table); -CIMGUI_API ImGuiSortDirection igTableGetColumnNextSortDirection(ImGuiTableColumn* column); -CIMGUI_API void igTableFixColumnSortDirection(ImGuiTable* table,ImGuiTableColumn* column); -CIMGUI_API float igTableGetColumnWidthAuto(ImGuiTable* table,ImGuiTableColumn* column); -CIMGUI_API void igTableBeginRow(ImGuiTable* table); -CIMGUI_API void igTableEndRow(ImGuiTable* table); -CIMGUI_API void igTableBeginCell(ImGuiTable* table,int column_n); -CIMGUI_API void igTableEndCell(ImGuiTable* table); -CIMGUI_API void igTableGetCellBgRect(ImRect *pOut,const ImGuiTable* table,int column_n); -CIMGUI_API const char* igTableGetColumnName_TablePtr(const ImGuiTable* table,int column_n); -CIMGUI_API ImGuiID igTableGetColumnResizeID(const ImGuiTable* table,int column_n,int instance_no); -CIMGUI_API float igTableGetMaxColumnWidth(const ImGuiTable* table,int column_n); -CIMGUI_API void igTableSetColumnWidthAutoSingle(ImGuiTable* table,int column_n); -CIMGUI_API void igTableSetColumnWidthAutoAll(ImGuiTable* table); -CIMGUI_API void igTableRemove(ImGuiTable* table); -CIMGUI_API void igTableGcCompactTransientBuffers_TablePtr(ImGuiTable* table); -CIMGUI_API void igTableGcCompactTransientBuffers_TableTempDataPtr(ImGuiTableTempData* table); -CIMGUI_API void igTableGcCompactSettings(void); -CIMGUI_API void igTableLoadSettings(ImGuiTable* table); -CIMGUI_API void igTableSaveSettings(ImGuiTable* table); -CIMGUI_API void igTableResetSettings(ImGuiTable* table); -CIMGUI_API ImGuiTableSettings* igTableGetBoundSettings(ImGuiTable* table); -CIMGUI_API void igTableSettingsAddSettingsHandler(void); -CIMGUI_API ImGuiTableSettings* igTableSettingsCreate(ImGuiID id,int columns_count); -CIMGUI_API ImGuiTableSettings* igTableSettingsFindByID(ImGuiID id); -CIMGUI_API bool igBeginTabBarEx(ImGuiTabBar* tab_bar,const ImRect bb,ImGuiTabBarFlags flags,ImGuiDockNode* dock_node); -CIMGUI_API ImGuiTabItem* igTabBarFindTabByID(ImGuiTabBar* tab_bar,ImGuiID tab_id); -CIMGUI_API ImGuiTabItem* igTabBarFindMostRecentlySelectedTabForActiveWindow(ImGuiTabBar* tab_bar); -CIMGUI_API void igTabBarAddTab(ImGuiTabBar* tab_bar,ImGuiTabItemFlags tab_flags,ImGuiWindow* window); -CIMGUI_API void igTabBarRemoveTab(ImGuiTabBar* tab_bar,ImGuiID tab_id); -CIMGUI_API void igTabBarCloseTab(ImGuiTabBar* tab_bar,ImGuiTabItem* tab); -CIMGUI_API void igTabBarQueueReorder(ImGuiTabBar* tab_bar,const ImGuiTabItem* tab,int offset); -CIMGUI_API void igTabBarQueueReorderFromMousePos(ImGuiTabBar* tab_bar,const ImGuiTabItem* tab,ImVec2 mouse_pos); -CIMGUI_API bool igTabBarProcessReorder(ImGuiTabBar* tab_bar); -CIMGUI_API bool igTabItemEx(ImGuiTabBar* tab_bar,const char* label,bool* p_open,ImGuiTabItemFlags flags,ImGuiWindow* docked_window); -CIMGUI_API void igTabItemCalcSize(ImVec2 *pOut,const char* label,bool has_close_button); -CIMGUI_API void igTabItemBackground(ImDrawList* draw_list,const ImRect bb,ImGuiTabItemFlags flags,ImU32 col); -CIMGUI_API void igTabItemLabelAndCloseButton(ImDrawList* draw_list,const ImRect bb,ImGuiTabItemFlags flags,ImVec2 frame_padding,const char* label,ImGuiID tab_id,ImGuiID close_button_id,bool is_contents_visible,bool* out_just_closed,bool* out_text_clipped); -CIMGUI_API void igRenderText(ImVec2 pos,const char* text,const char* text_end,bool hide_text_after_hash); -CIMGUI_API void igRenderTextWrapped(ImVec2 pos,const char* text,const char* text_end,float wrap_width); -CIMGUI_API void igRenderTextClipped(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect); -CIMGUI_API void igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect); -CIMGUI_API void igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,float clip_max_x,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2* text_size_if_known); -CIMGUI_API void igRenderFrame(ImVec2 p_min,ImVec2 p_max,ImU32 fill_col,bool border,float rounding); -CIMGUI_API void igRenderFrameBorder(ImVec2 p_min,ImVec2 p_max,float rounding); -CIMGUI_API void igRenderColorRectWithAlphaCheckerboard(ImDrawList* draw_list,ImVec2 p_min,ImVec2 p_max,ImU32 fill_col,float grid_step,ImVec2 grid_off,float rounding,ImDrawFlags flags); -CIMGUI_API void igRenderNavHighlight(const ImRect bb,ImGuiID id,ImGuiNavHighlightFlags flags); -CIMGUI_API const char* igFindRenderedTextEnd(const char* text,const char* text_end); -CIMGUI_API void igRenderMouseCursor(ImVec2 pos,float scale,ImGuiMouseCursor mouse_cursor,ImU32 col_fill,ImU32 col_border,ImU32 col_shadow); -CIMGUI_API void igRenderArrow(ImDrawList* draw_list,ImVec2 pos,ImU32 col,ImGuiDir dir,float scale); -CIMGUI_API void igRenderBullet(ImDrawList* draw_list,ImVec2 pos,ImU32 col); -CIMGUI_API void igRenderCheckMark(ImDrawList* draw_list,ImVec2 pos,ImU32 col,float sz); -CIMGUI_API void igRenderArrowPointingAt(ImDrawList* draw_list,ImVec2 pos,ImVec2 half_sz,ImGuiDir direction,ImU32 col); -CIMGUI_API void igRenderArrowDockMenu(ImDrawList* draw_list,ImVec2 p_min,float sz,ImU32 col); -CIMGUI_API void igRenderRectFilledRangeH(ImDrawList* draw_list,const ImRect rect,ImU32 col,float x_start_norm,float x_end_norm,float rounding); -CIMGUI_API void igRenderRectFilledWithHole(ImDrawList* draw_list,const ImRect outer,const ImRect inner,ImU32 col,float rounding); -CIMGUI_API ImDrawFlags igCalcRoundingFlagsForRectInRect(const ImRect r_in,const ImRect r_outer,float threshold); -CIMGUI_API void igTextEx(const char* text,const char* text_end,ImGuiTextFlags flags); -CIMGUI_API bool igButtonEx(const char* label,const ImVec2 size_arg,ImGuiButtonFlags flags); -CIMGUI_API bool igCloseButton(ImGuiID id,const ImVec2 pos); -CIMGUI_API bool igCollapseButton(ImGuiID id,const ImVec2 pos,ImGuiDockNode* dock_node); -CIMGUI_API bool igArrowButtonEx(const char* str_id,ImGuiDir dir,ImVec2 size_arg,ImGuiButtonFlags flags); -CIMGUI_API void igScrollbar(ImGuiAxis axis); -CIMGUI_API bool igScrollbarEx(const ImRect bb,ImGuiID id,ImGuiAxis axis,ImS64* p_scroll_v,ImS64 avail_v,ImS64 contents_v,ImDrawFlags flags); -CIMGUI_API bool igImageButtonEx(ImGuiID id,ImTextureID texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec2 padding,const ImVec4 bg_col,const ImVec4 tint_col); -CIMGUI_API void igGetWindowScrollbarRect(ImRect *pOut,ImGuiWindow* window,ImGuiAxis axis); -CIMGUI_API ImGuiID igGetWindowScrollbarID(ImGuiWindow* window,ImGuiAxis axis); -CIMGUI_API ImGuiID igGetWindowResizeCornerID(ImGuiWindow* window,int n); -CIMGUI_API ImGuiID igGetWindowResizeBorderID(ImGuiWindow* window,ImGuiDir dir); -CIMGUI_API void igSeparatorEx(ImGuiSeparatorFlags flags); -CIMGUI_API bool igCheckboxFlags_S64Ptr(const char* label,ImS64* flags,ImS64 flags_value); -CIMGUI_API bool igCheckboxFlags_U64Ptr(const char* label,ImU64* flags,ImU64 flags_value); -CIMGUI_API bool igButtonBehavior(const ImRect bb,ImGuiID id,bool* out_hovered,bool* out_held,ImGuiButtonFlags flags); -CIMGUI_API bool igDragBehavior(ImGuiID id,ImGuiDataType data_type,void* p_v,float v_speed,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); -CIMGUI_API bool igSliderBehavior(const ImRect bb,ImGuiID id,ImGuiDataType data_type,void* p_v,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags,ImRect* out_grab_bb); -CIMGUI_API bool igSplitterBehavior(const ImRect bb,ImGuiID id,ImGuiAxis axis,float* size1,float* size2,float min_size1,float min_size2,float hover_extend,float hover_visibility_delay,ImU32 bg_col); -CIMGUI_API bool igTreeNodeBehavior(ImGuiID id,ImGuiTreeNodeFlags flags,const char* label,const char* label_end); -CIMGUI_API bool igTreeNodeBehaviorIsOpen(ImGuiID id,ImGuiTreeNodeFlags flags); -CIMGUI_API void igTreePushOverrideID(ImGuiID id); -CIMGUI_API const ImGuiDataTypeInfo* igDataTypeGetInfo(ImGuiDataType data_type); -CIMGUI_API int igDataTypeFormatString(char* buf,int buf_size,ImGuiDataType data_type,const void* p_data,const char* format); -CIMGUI_API void igDataTypeApplyOp(ImGuiDataType data_type,int op,void* output,const void* arg_1,const void* arg_2); -CIMGUI_API bool igDataTypeApplyFromText(const char* buf,ImGuiDataType data_type,void* p_data,const char* format); -CIMGUI_API int igDataTypeCompare(ImGuiDataType data_type,const void* arg_1,const void* arg_2); -CIMGUI_API bool igDataTypeClamp(ImGuiDataType data_type,void* p_data,const void* p_min,const void* p_max); -CIMGUI_API bool igInputTextEx(const char* label,const char* hint,char* buf,int buf_size,const ImVec2 size_arg,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data); -CIMGUI_API bool igTempInputText(const ImRect bb,ImGuiID id,const char* label,char* buf,int buf_size,ImGuiInputTextFlags flags); -CIMGUI_API bool igTempInputScalar(const ImRect bb,ImGuiID id,const char* label,ImGuiDataType data_type,void* p_data,const char* format,const void* p_clamp_min,const void* p_clamp_max); -CIMGUI_API bool igTempInputIsActive(ImGuiID id); -CIMGUI_API ImGuiInputTextState* igGetInputTextState(ImGuiID id); -CIMGUI_API void igColorTooltip(const char* text,const float* col,ImGuiColorEditFlags flags); -CIMGUI_API void igColorEditOptionsPopup(const float* col,ImGuiColorEditFlags flags); -CIMGUI_API void igColorPickerOptionsPopup(const float* ref_col,ImGuiColorEditFlags flags); -CIMGUI_API int igPlotEx(ImGuiPlotType plot_type,const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 frame_size); -CIMGUI_API void igShadeVertsLinearColorGradientKeepAlpha(ImDrawList* draw_list,int vert_start_idx,int vert_end_idx,ImVec2 gradient_p0,ImVec2 gradient_p1,ImU32 col0,ImU32 col1); -CIMGUI_API void igShadeVertsLinearUV(ImDrawList* draw_list,int vert_start_idx,int vert_end_idx,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,bool clamp); -CIMGUI_API void igGcCompactTransientMiscBuffers(void); -CIMGUI_API void igGcCompactTransientWindowBuffers(ImGuiWindow* window); -CIMGUI_API void igGcAwakeTransientWindowBuffers(ImGuiWindow* window); -CIMGUI_API void igDebugLog(const char* fmt,...); -CIMGUI_API void igDebugLogV(const char* fmt,va_list args); -CIMGUI_API void igErrorCheckEndFrameRecover(ImGuiErrorLogCallback log_callback,void* user_data); -CIMGUI_API void igErrorCheckEndWindowRecover(ImGuiErrorLogCallback log_callback,void* user_data); -CIMGUI_API void igDebugDrawItemRect(ImU32 col); -CIMGUI_API void igDebugStartItemPicker(void); -CIMGUI_API void igShowFontAtlas(ImFontAtlas* atlas); -CIMGUI_API void igDebugHookIdInfo(ImGuiID id,ImGuiDataType data_type,const void* data_id,const void* data_id_end); -CIMGUI_API void igDebugNodeColumns(ImGuiOldColumns* columns); -CIMGUI_API void igDebugNodeDockNode(ImGuiDockNode* node,const char* label); -CIMGUI_API void igDebugNodeDrawList(ImGuiWindow* window,ImGuiViewportP* viewport,const ImDrawList* draw_list,const char* label); -CIMGUI_API void igDebugNodeDrawCmdShowMeshAndBoundingBox(ImDrawList* out_draw_list,const ImDrawList* draw_list,const ImDrawCmd* draw_cmd,bool show_mesh,bool show_aabb); -CIMGUI_API void igDebugNodeFont(ImFont* font); -CIMGUI_API void igDebugNodeFontGlyph(ImFont* font,const ImFontGlyph* glyph); -CIMGUI_API void igDebugNodeStorage(ImGuiStorage* storage,const char* label); -CIMGUI_API void igDebugNodeTabBar(ImGuiTabBar* tab_bar,const char* label); -CIMGUI_API void igDebugNodeTable(ImGuiTable* table); -CIMGUI_API void igDebugNodeTableSettings(ImGuiTableSettings* settings); -CIMGUI_API void igDebugNodeInputTextState(ImGuiInputTextState* state); -CIMGUI_API void igDebugNodeWindow(ImGuiWindow* window,const char* label); -CIMGUI_API void igDebugNodeWindowSettings(ImGuiWindowSettings* settings); -CIMGUI_API void igDebugNodeWindowsList(ImVector_ImGuiWindowPtr* windows,const char* label); -CIMGUI_API void igDebugNodeWindowsListByBeginStackParent(ImGuiWindow** windows,int windows_size,ImGuiWindow* parent_in_begin_stack); -CIMGUI_API void igDebugNodeViewport(ImGuiViewportP* viewport); -CIMGUI_API void igDebugRenderViewportThumbnail(ImDrawList* draw_list,ImGuiViewportP* viewport,const ImRect bb); -CIMGUI_API const ImFontBuilderIO* igImFontAtlasGetBuilderForStbTruetype(void); -CIMGUI_API void igImFontAtlasBuildInit(ImFontAtlas* atlas); -CIMGUI_API void igImFontAtlasBuildSetupFont(ImFontAtlas* atlas,ImFont* font,ImFontConfig* font_config,float ascent,float descent); -CIMGUI_API void igImFontAtlasBuildPackCustomRects(ImFontAtlas* atlas,void* stbrp_context_opaque); -CIMGUI_API void igImFontAtlasBuildFinish(ImFontAtlas* atlas); -CIMGUI_API void igImFontAtlasBuildRender8bppRectFromString(ImFontAtlas* atlas,int x,int y,int w,int h,const char* in_str,char in_marker_char,unsigned char in_marker_pixel_value); -CIMGUI_API void igImFontAtlasBuildRender32bppRectFromString(ImFontAtlas* atlas,int x,int y,int w,int h,const char* in_str,char in_marker_char,unsigned int in_marker_pixel_value); - +CIMGUI_API ImVec2* ImVec2_ImVec2_Nil(void); +CIMGUI_API void ImVec2_destroy(ImVec2* self); +CIMGUI_API ImVec2* ImVec2_ImVec2_Float(float _x,float _y); +CIMGUI_API ImVec4* ImVec4_ImVec4_Nil(void); +CIMGUI_API void ImVec4_destroy(ImVec4* self); +CIMGUI_API ImVec4* ImVec4_ImVec4_Float(float _x,float _y,float _z,float _w); +CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas); +CIMGUI_API void igDestroyContext(ImGuiContext* ctx); +CIMGUI_API ImGuiContext* igGetCurrentContext(void); +CIMGUI_API void igSetCurrentContext(ImGuiContext* ctx); +CIMGUI_API ImGuiIO* igGetIO(void); +CIMGUI_API ImGuiStyle* igGetStyle(void); +CIMGUI_API void igNewFrame(void); +CIMGUI_API void igEndFrame(void); +CIMGUI_API void igRender(void); +CIMGUI_API ImDrawData* igGetDrawData(void); +CIMGUI_API void igShowDemoWindow(bool* p_open); +CIMGUI_API void igShowMetricsWindow(bool* p_open); +CIMGUI_API void igShowDebugLogWindow(bool* p_open); +CIMGUI_API void igShowStackToolWindow(bool* p_open); +CIMGUI_API void igShowAboutWindow(bool* p_open); +CIMGUI_API void igShowStyleEditor(ImGuiStyle* ref); +CIMGUI_API bool igShowStyleSelector(const char* label); +CIMGUI_API void igShowFontSelector(const char* label); +CIMGUI_API void igShowUserGuide(void); +CIMGUI_API const char* igGetVersion(void); +CIMGUI_API void igStyleColorsDark(ImGuiStyle* dst); +CIMGUI_API void igStyleColorsLight(ImGuiStyle* dst); +CIMGUI_API void igStyleColorsClassic(ImGuiStyle* dst); +CIMGUI_API bool igBegin(const char* name,bool* p_open,ImGuiWindowFlags flags); +CIMGUI_API void igEnd(void); +CIMGUI_API bool igBeginChild_Str(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags); +CIMGUI_API bool igBeginChild_ID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags); +CIMGUI_API void igEndChild(void); +CIMGUI_API bool igIsWindowAppearing(void); +CIMGUI_API bool igIsWindowCollapsed(void); +CIMGUI_API bool igIsWindowFocused(ImGuiFocusedFlags flags); +CIMGUI_API bool igIsWindowHovered(ImGuiHoveredFlags flags); +CIMGUI_API ImDrawList* igGetWindowDrawList(void); +CIMGUI_API float igGetWindowDpiScale(void); +CIMGUI_API void igGetWindowPos(ImVec2* pOut); +CIMGUI_API void igGetWindowSize(ImVec2* pOut); +CIMGUI_API float igGetWindowWidth(void); +CIMGUI_API float igGetWindowHeight(void); +CIMGUI_API ImGuiViewport* igGetWindowViewport(void); +CIMGUI_API void igSetNextWindowPos(const ImVec2 pos,ImGuiCond cond,const ImVec2 pivot); +CIMGUI_API void igSetNextWindowSize(const ImVec2 size,ImGuiCond cond); +CIMGUI_API void igSetNextWindowSizeConstraints(const ImVec2 size_min,const ImVec2 size_max,ImGuiSizeCallback custom_callback,void* custom_callback_data); +CIMGUI_API void igSetNextWindowContentSize(const ImVec2 size); +CIMGUI_API void igSetNextWindowCollapsed(bool collapsed,ImGuiCond cond); +CIMGUI_API void igSetNextWindowFocus(void); +CIMGUI_API void igSetNextWindowBgAlpha(float alpha); +CIMGUI_API void igSetNextWindowViewport(ImGuiID viewport_id); +CIMGUI_API void igSetWindowPos_Vec2(const ImVec2 pos,ImGuiCond cond); +CIMGUI_API void igSetWindowSize_Vec2(const ImVec2 size,ImGuiCond cond); +CIMGUI_API void igSetWindowCollapsed_Bool(bool collapsed,ImGuiCond cond); +CIMGUI_API void igSetWindowFocus_Nil(void); +CIMGUI_API void igSetWindowFontScale(float scale); +CIMGUI_API void igSetWindowPos_Str(const char* name,const ImVec2 pos,ImGuiCond cond); +CIMGUI_API void igSetWindowSize_Str(const char* name,const ImVec2 size,ImGuiCond cond); +CIMGUI_API void igSetWindowCollapsed_Str(const char* name,bool collapsed,ImGuiCond cond); +CIMGUI_API void igSetWindowFocus_Str(const char* name); +CIMGUI_API void igGetContentRegionAvail(ImVec2* pOut); +CIMGUI_API void igGetContentRegionMax(ImVec2* pOut); +CIMGUI_API void igGetWindowContentRegionMin(ImVec2* pOut); +CIMGUI_API void igGetWindowContentRegionMax(ImVec2* pOut); +CIMGUI_API float igGetScrollX(void); +CIMGUI_API float igGetScrollY(void); +CIMGUI_API void igSetScrollX_Float(float scroll_x); +CIMGUI_API void igSetScrollY_Float(float scroll_y); +CIMGUI_API float igGetScrollMaxX(void); +CIMGUI_API float igGetScrollMaxY(void); +CIMGUI_API void igSetScrollHereX(float center_x_ratio); +CIMGUI_API void igSetScrollHereY(float center_y_ratio); +CIMGUI_API void igSetScrollFromPosX_Float(float local_x,float center_x_ratio); +CIMGUI_API void igSetScrollFromPosY_Float(float local_y,float center_y_ratio); +CIMGUI_API void igPushFont(ImFont* font); +CIMGUI_API void igPopFont(void); +CIMGUI_API void igPushStyleColor_U32(ImGuiCol idx,ImU32 col); +CIMGUI_API void igPushStyleColor_Vec4(ImGuiCol idx,const ImVec4 col); +CIMGUI_API void igPopStyleColor(int count); +CIMGUI_API void igPushStyleVar_Float(ImGuiStyleVar idx,float val); +CIMGUI_API void igPushStyleVar_Vec2(ImGuiStyleVar idx,const ImVec2 val); +CIMGUI_API void igPopStyleVar(int count); +CIMGUI_API void igPushAllowKeyboardFocus(bool allow_keyboard_focus); +CIMGUI_API void igPopAllowKeyboardFocus(void); +CIMGUI_API void igPushButtonRepeat(bool repeat); +CIMGUI_API void igPopButtonRepeat(void); +CIMGUI_API void igPushItemWidth(float item_width); +CIMGUI_API void igPopItemWidth(void); +CIMGUI_API void igSetNextItemWidth(float item_width); +CIMGUI_API float igCalcItemWidth(void); +CIMGUI_API void igPushTextWrapPos(float wrap_local_pos_x); +CIMGUI_API void igPopTextWrapPos(void); +CIMGUI_API ImFont* igGetFont(void); +CIMGUI_API float igGetFontSize(void); +CIMGUI_API void igGetFontTexUvWhitePixel(ImVec2* pOut); +CIMGUI_API ImU32 igGetColorU32_Col(ImGuiCol idx,float alpha_mul); +CIMGUI_API ImU32 igGetColorU32_Vec4(const ImVec4 col); +CIMGUI_API ImU32 igGetColorU32_U32(ImU32 col); +CIMGUI_API const ImVec4* igGetStyleColorVec4(ImGuiCol idx); +CIMGUI_API void igSeparator(void); +CIMGUI_API void igSameLine(float offset_from_start_x,float spacing); +CIMGUI_API void igNewLine(void); +CIMGUI_API void igSpacing(void); +CIMGUI_API void igDummy(const ImVec2 size); +CIMGUI_API void igIndent(float indent_w); +CIMGUI_API void igUnindent(float indent_w); +CIMGUI_API void igBeginGroup(void); +CIMGUI_API void igEndGroup(void); +CIMGUI_API void igGetCursorPos(ImVec2* pOut); +CIMGUI_API float igGetCursorPosX(void); +CIMGUI_API float igGetCursorPosY(void); +CIMGUI_API void igSetCursorPos(const ImVec2 local_pos); +CIMGUI_API void igSetCursorPosX(float local_x); +CIMGUI_API void igSetCursorPosY(float local_y); +CIMGUI_API void igGetCursorStartPos(ImVec2 *pOut); +CIMGUI_API void igGetCursorScreenPos(ImVec2 *pOut); +CIMGUI_API void igSetCursorScreenPos(const ImVec2 pos); +CIMGUI_API void igAlignTextToFramePadding(void); +CIMGUI_API float igGetTextLineHeight(void); +CIMGUI_API float igGetTextLineHeightWithSpacing(void); +CIMGUI_API float igGetFrameHeight(void); +CIMGUI_API float igGetFrameHeightWithSpacing(void); +CIMGUI_API void igPushID_Str(const char* str_id); +CIMGUI_API void igPushID_StrStr(const char* str_id_begin,const char* str_id_end); +CIMGUI_API void igPushID_Ptr(const void* ptr_id); +CIMGUI_API void igPushID_Int(int int_id); +CIMGUI_API void igPopID(void); +CIMGUI_API ImGuiID igGetID_Str(const char* str_id); +CIMGUI_API ImGuiID igGetID_StrStr(const char* str_id_begin,const char* str_id_end); +CIMGUI_API ImGuiID igGetID_Ptr(const void* ptr_id); +CIMGUI_API void igTextUnformatted(const char* text,const char* text_end); +CIMGUI_API void igText(const char* fmt,...); +CIMGUI_API void igTextV(const char* fmt,va_list args); +CIMGUI_API void igTextColored(const ImVec4 col,const char* fmt,...); +CIMGUI_API void igTextColoredV(const ImVec4 col,const char* fmt,va_list args); +CIMGUI_API void igTextDisabled(const char* fmt,...); +CIMGUI_API void igTextDisabledV(const char* fmt,va_list args); +CIMGUI_API void igTextWrapped(const char* fmt,...); +CIMGUI_API void igTextWrappedV(const char* fmt,va_list args); +CIMGUI_API void igLabelText(const char* label,const char* fmt,...); +CIMGUI_API void igLabelTextV(const char* label,const char* fmt,va_list args); +CIMGUI_API void igBulletText(const char* fmt,...); +CIMGUI_API void igBulletTextV(const char* fmt,va_list args); +CIMGUI_API bool igButton(const char* label,const ImVec2 size); +CIMGUI_API bool igSmallButton(const char* label); +CIMGUI_API bool igInvisibleButton(const char* str_id,const ImVec2 size,ImGuiButtonFlags flags); +CIMGUI_API bool igArrowButton(const char* str_id,ImGuiDir dir); +CIMGUI_API void igImage(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 tint_col,const ImVec4 border_col); +CIMGUI_API bool igImageButton(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,int frame_padding,const ImVec4 bg_col,const ImVec4 tint_col); +CIMGUI_API bool igCheckbox(const char* label,bool* v); +CIMGUI_API bool igCheckboxFlags_IntPtr(const char* label,int* flags,int flags_value); +CIMGUI_API bool igCheckboxFlags_UintPtr(const char* label,unsigned int* flags,unsigned int flags_value); +CIMGUI_API bool igRadioButton_Bool(const char* label,bool active); +CIMGUI_API bool igRadioButton_IntPtr(const char* label,int* v,int v_button); +CIMGUI_API void igProgressBar(float fraction,const ImVec2 size_arg,const char* overlay); +CIMGUI_API void igBullet(void); +CIMGUI_API bool igBeginCombo(const char* label,const char* preview_value,ImGuiComboFlags flags); +CIMGUI_API void igEndCombo(void); +CIMGUI_API bool igCombo_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items); +CIMGUI_API bool igCombo_Str(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items); +CIMGUI_API bool igCombo_FnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int popup_max_height_in_items); +CIMGUI_API bool igDragFloat(const char* label,float* v,float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igDragFloat2(const char* label,float v[2],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igDragFloat3(const char* label,float v[3],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igDragFloat4(const char* label,float v[4],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igDragFloatRange2(const char* label,float* v_current_min,float* v_current_max,float v_speed,float v_min,float v_max,const char* format,const char* format_max,ImGuiSliderFlags flags); +CIMGUI_API bool igDragInt(const char* label,int* v,float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igDragInt2(const char* label,int v[2],float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igDragInt3(const char* label,int v[3],float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igDragInt4(const char* label,int v[4],float v_speed,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igDragIntRange2(const char* label,int* v_current_min,int* v_current_max,float v_speed,int v_min,int v_max,const char* format,const char* format_max,ImGuiSliderFlags flags); +CIMGUI_API bool igDragScalar(const char* label,ImGuiDataType data_type,void* p_data,float v_speed,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igDragScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components,float v_speed,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderFloat(const char* label,float* v,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderFloat2(const char* label,float v[2],float v_min,float v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderFloat3(const char* label,float v[3],float v_min,float v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderFloat4(const char* label,float v[4],float v_min,float v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderAngle(const char* label,float* v_rad,float v_degrees_min,float v_degrees_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderInt(const char* label,int* v,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderInt2(const char* label,int v[2],int v_min,int v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderInt3(const char* label,int v[3],int v_min,int v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderInt4(const char* label,int v[4],int v_min,int v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderScalar(const char* label,ImGuiDataType data_type,void* p_data,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igVSliderFloat(const char* label,const ImVec2 size,float* v,float v_min,float v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igVSliderInt(const char* label,const ImVec2 size,int* v,int v_min,int v_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igVSliderScalar(const char* label,const ImVec2 size,ImGuiDataType data_type,void* p_data,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igInputText(const char* label,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data); +CIMGUI_API bool igInputTextMultiline(const char* label,char* buf,size_t buf_size,const ImVec2 size,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data); +CIMGUI_API bool igInputTextWithHint(const char* label,const char* hint,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data); +CIMGUI_API bool igInputFloat(const char* label,float* v,float step,float step_fast,const char* format,ImGuiInputTextFlags flags); +CIMGUI_API bool igInputFloat2(const char* label,float v[2],const char* format,ImGuiInputTextFlags flags); +CIMGUI_API bool igInputFloat3(const char* label,float v[3],const char* format,ImGuiInputTextFlags flags); +CIMGUI_API bool igInputFloat4(const char* label,float v[4],const char* format,ImGuiInputTextFlags flags); +CIMGUI_API bool igInputInt(const char* label,int* v,int step,int step_fast,ImGuiInputTextFlags flags); +CIMGUI_API bool igInputInt2(const char* label,int v[2],ImGuiInputTextFlags flags); +CIMGUI_API bool igInputInt3(const char* label,int v[3],ImGuiInputTextFlags flags); +CIMGUI_API bool igInputInt4(const char* label,int v[4],ImGuiInputTextFlags flags); +CIMGUI_API bool igInputDouble(const char* label,double* v,double step,double step_fast,const char* format,ImGuiInputTextFlags flags); +CIMGUI_API bool igInputScalar(const char* label,ImGuiDataType data_type,void* p_data,const void* p_step,const void* p_step_fast,const char* format,ImGuiInputTextFlags flags); +CIMGUI_API bool igInputScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components,const void* p_step,const void* p_step_fast,const char* format,ImGuiInputTextFlags flags); +CIMGUI_API bool igColorEdit3(const char* label,float col[3],ImGuiColorEditFlags flags); +CIMGUI_API bool igColorEdit4(const char* label,float col[4],ImGuiColorEditFlags flags); +CIMGUI_API bool igColorPicker3(const char* label,float col[3],ImGuiColorEditFlags flags); +CIMGUI_API bool igColorPicker4(const char* label,float col[4],ImGuiColorEditFlags flags,const float* ref_col); +CIMGUI_API bool igColorButton(const char* desc_id,const ImVec4 col,ImGuiColorEditFlags flags,const ImVec2 size); +CIMGUI_API void igSetColorEditOptions(ImGuiColorEditFlags flags); +CIMGUI_API bool igTreeNode_Str(const char* label); +CIMGUI_API bool igTreeNode_StrStr(const char* str_id,const char* fmt,...); +CIMGUI_API bool igTreeNode_Ptr(const void* ptr_id,const char* fmt,...); +CIMGUI_API bool igTreeNodeV_Str(const char* str_id,const char* fmt,va_list args); +CIMGUI_API bool igTreeNodeV_Ptr(const void* ptr_id,const char* fmt,va_list args); +CIMGUI_API bool igTreeNodeEx_Str(const char* label,ImGuiTreeNodeFlags flags); +CIMGUI_API bool igTreeNodeEx_StrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...); +CIMGUI_API bool igTreeNodeEx_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...); +CIMGUI_API bool igTreeNodeExV_Str(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args); +CIMGUI_API bool igTreeNodeExV_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args); +CIMGUI_API void igTreePush_Str(const char* str_id); +CIMGUI_API void igTreePush_Ptr(const void* ptr_id); +CIMGUI_API void igTreePop(void); +CIMGUI_API float igGetTreeNodeToLabelSpacing(void); +CIMGUI_API bool igCollapsingHeader_TreeNodeFlags(const char* label,ImGuiTreeNodeFlags flags); +CIMGUI_API bool igCollapsingHeader_BoolPtr(const char* label,bool* p_visible,ImGuiTreeNodeFlags flags); +CIMGUI_API void igSetNextItemOpen(bool is_open,ImGuiCond cond); +CIMGUI_API bool igSelectable_Bool(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size); +CIMGUI_API bool igSelectable_BoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size); +CIMGUI_API bool igBeginListBox(const char* label,const ImVec2 size); +CIMGUI_API void igEndListBox(void); +CIMGUI_API bool igListBox_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items); +CIMGUI_API bool igListBox_FnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int height_in_items); +CIMGUI_API void igPlotLines_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride); +CIMGUI_API void igPlotLines_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size); +CIMGUI_API void igPlotHistogram_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride); +CIMGUI_API void igPlotHistogram_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size); +CIMGUI_API void igValue_Bool(const char* prefix,bool b); +CIMGUI_API void igValue_Int(const char* prefix,int v); +CIMGUI_API void igValue_Uint(const char* prefix,unsigned int v); +CIMGUI_API void igValue_Float(const char* prefix,float v,const char* float_format); +CIMGUI_API bool igBeginMenuBar(void); +CIMGUI_API void igEndMenuBar(void); +CIMGUI_API bool igBeginMainMenuBar(void); +CIMGUI_API void igEndMainMenuBar(void); +CIMGUI_API bool igBeginMenu(const char* label,bool enabled); +CIMGUI_API void igEndMenu(void); +CIMGUI_API bool igMenuItem_Bool(const char* label,const char* shortcut,bool selected,bool enabled); +CIMGUI_API bool igMenuItem_BoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled); +CIMGUI_API void igBeginTooltip(void); +CIMGUI_API void igEndTooltip(void); +CIMGUI_API void igSetTooltip(const char* fmt,...); +CIMGUI_API void igSetTooltipV(const char* fmt,va_list args); +CIMGUI_API bool igBeginPopup(const char* str_id,ImGuiWindowFlags flags); +CIMGUI_API bool igBeginPopupModal(const char* name,bool* p_open,ImGuiWindowFlags flags); +CIMGUI_API void igEndPopup(void); +CIMGUI_API void igOpenPopup_Str(const char* str_id,ImGuiPopupFlags popup_flags); +CIMGUI_API void igOpenPopup_ID(ImGuiID id,ImGuiPopupFlags popup_flags); +CIMGUI_API void igOpenPopupOnItemClick(const char* str_id,ImGuiPopupFlags popup_flags); +CIMGUI_API void igCloseCurrentPopup(void); +CIMGUI_API bool igBeginPopupContextItem(const char* str_id,ImGuiPopupFlags popup_flags); +CIMGUI_API bool igBeginPopupContextWindow(const char* str_id,ImGuiPopupFlags popup_flags); +CIMGUI_API bool igBeginPopupContextVoid(const char* str_id,ImGuiPopupFlags popup_flags); +CIMGUI_API bool igIsPopupOpen_Str(const char* str_id,ImGuiPopupFlags flags); +CIMGUI_API bool igBeginTable(const char* str_id,int column,ImGuiTableFlags flags,const ImVec2 outer_size,float inner_width); +CIMGUI_API void igEndTable(void); +CIMGUI_API void igTableNextRow(ImGuiTableRowFlags row_flags,float min_row_height); +CIMGUI_API bool igTableNextColumn(void); +CIMGUI_API bool igTableSetColumnIndex(int column_n); +CIMGUI_API void igTableSetupColumn(const char* label,ImGuiTableColumnFlags flags,float init_width_or_weight,ImGuiID user_id); +CIMGUI_API void igTableSetupScrollFreeze(int cols,int rows); +CIMGUI_API void igTableHeadersRow(void); +CIMGUI_API void igTableHeader(const char* label); +CIMGUI_API ImGuiTableSortSpecs* igTableGetSortSpecs(void); +CIMGUI_API int igTableGetColumnCount(void); +CIMGUI_API int igTableGetColumnIndex(void); +CIMGUI_API int igTableGetRowIndex(void); +CIMGUI_API const char* igTableGetColumnName_Int(int column_n); +CIMGUI_API ImGuiTableColumnFlags igTableGetColumnFlags(int column_n); +CIMGUI_API void igTableSetColumnEnabled(int column_n,bool v); +CIMGUI_API void igTableSetBgColor(ImGuiTableBgTarget target,ImU32 color,int column_n); +CIMGUI_API void igColumns(int count,const char* id,bool border); +CIMGUI_API void igNextColumn(void); +CIMGUI_API int igGetColumnIndex(void); +CIMGUI_API float igGetColumnWidth(int column_index); +CIMGUI_API void igSetColumnWidth(int column_index,float width); +CIMGUI_API float igGetColumnOffset(int column_index); +CIMGUI_API void igSetColumnOffset(int column_index,float offset_x); +CIMGUI_API int igGetColumnsCount(void); +CIMGUI_API bool igBeginTabBar(const char* str_id,ImGuiTabBarFlags flags); +CIMGUI_API void igEndTabBar(void); +CIMGUI_API bool igBeginTabItem(const char* label,bool* p_open,ImGuiTabItemFlags flags); +CIMGUI_API void igEndTabItem(void); +CIMGUI_API bool igTabItemButton(const char* label,ImGuiTabItemFlags flags); +CIMGUI_API void igSetTabItemClosed(const char* tab_or_docked_window_label); +CIMGUI_API ImGuiID igDockSpace(ImGuiID id,const ImVec2 size,ImGuiDockNodeFlags flags,const ImGuiWindowClass* window_class); +CIMGUI_API ImGuiID igDockSpaceOverViewport(const ImGuiViewport* viewport,ImGuiDockNodeFlags flags,const ImGuiWindowClass* window_class); +CIMGUI_API void igSetNextWindowDockID(ImGuiID dock_id,ImGuiCond cond); +CIMGUI_API void igSetNextWindowClass(const ImGuiWindowClass* window_class); +CIMGUI_API ImGuiID igGetWindowDockID(void); +CIMGUI_API bool igIsWindowDocked(void); +CIMGUI_API void igLogToTTY(int auto_open_depth); +CIMGUI_API void igLogToFile(int auto_open_depth,const char* filename); +CIMGUI_API void igLogToClipboard(int auto_open_depth); +CIMGUI_API void igLogFinish(void); +CIMGUI_API void igLogButtons(void); +CIMGUI_API void igLogTextV(const char* fmt,va_list args); +CIMGUI_API bool igBeginDragDropSource(ImGuiDragDropFlags flags); +CIMGUI_API bool igSetDragDropPayload(const char* type,const void* data,size_t sz,ImGuiCond cond); +CIMGUI_API void igEndDragDropSource(void); +CIMGUI_API bool igBeginDragDropTarget(void); +CIMGUI_API const ImGuiPayload* igAcceptDragDropPayload(const char* type,ImGuiDragDropFlags flags); +CIMGUI_API void igEndDragDropTarget(void); +CIMGUI_API const ImGuiPayload* igGetDragDropPayload(void); +CIMGUI_API void igBeginDisabled(bool disabled); +CIMGUI_API void igEndDisabled(void); +CIMGUI_API void igPushClipRect(const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect); +CIMGUI_API void igPopClipRect(void); +CIMGUI_API void igSetItemDefaultFocus(void); +CIMGUI_API void igSetKeyboardFocusHere(int offset); +CIMGUI_API bool igIsItemHovered(ImGuiHoveredFlags flags); +CIMGUI_API bool igIsItemActive(void); +CIMGUI_API bool igIsItemFocused(void); +CIMGUI_API bool igIsItemClicked(ImGuiMouseButton mouse_button); +CIMGUI_API bool igIsItemVisible(void); +CIMGUI_API bool igIsItemEdited(void); +CIMGUI_API bool igIsItemActivated(void); +CIMGUI_API bool igIsItemDeactivated(void); +CIMGUI_API bool igIsItemDeactivatedAfterEdit(void); +CIMGUI_API bool igIsItemToggledOpen(void); +CIMGUI_API bool igIsAnyItemHovered(void); +CIMGUI_API bool igIsAnyItemActive(void); +CIMGUI_API bool igIsAnyItemFocused(void); +CIMGUI_API void igGetItemRectMin(ImVec2 *pOut); +CIMGUI_API void igGetItemRectMax(ImVec2 *pOut); +CIMGUI_API void igGetItemRectSize(ImVec2 *pOut); +CIMGUI_API void igSetItemAllowOverlap(void); +CIMGUI_API ImGuiViewport* igGetMainViewport(void); +CIMGUI_API ImDrawList* igGetBackgroundDrawList_Nil(void); +CIMGUI_API ImDrawList* igGetForegroundDrawList_Nil(void); +CIMGUI_API ImDrawList* igGetBackgroundDrawList_ViewportPtr(ImGuiViewport* viewport); +CIMGUI_API ImDrawList* igGetForegroundDrawList_ViewportPtr(ImGuiViewport* viewport); +CIMGUI_API bool igIsRectVisible_Nil(const ImVec2 size); +CIMGUI_API bool igIsRectVisible_Vec2(const ImVec2 rect_min,const ImVec2 rect_max); +CIMGUI_API double igGetTime(void); +CIMGUI_API int igGetFrameCount(void); +CIMGUI_API ImDrawListSharedData* igGetDrawListSharedData(void); +CIMGUI_API const char* igGetStyleColorName(ImGuiCol idx); +CIMGUI_API void igSetStateStorage(ImGuiStorage* storage); +CIMGUI_API ImGuiStorage* igGetStateStorage(void); +CIMGUI_API bool igBeginChildFrame(ImGuiID id,const ImVec2 size,ImGuiWindowFlags flags); +CIMGUI_API void igEndChildFrame(void); +CIMGUI_API void igCalcTextSize(ImVec2 *pOut,const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width); +CIMGUI_API void igColorConvertU32ToFloat4(ImVec4 *pOut,ImU32 in); +CIMGUI_API ImU32 igColorConvertFloat4ToU32(const ImVec4 in); +CIMGUI_API void igColorConvertRGBtoHSV(float r,float g,float b,float* out_h,float* out_s,float* out_v); +CIMGUI_API void igColorConvertHSVtoRGB(float h,float s,float v,float* out_r,float* out_g,float* out_b); +CIMGUI_API bool igIsKeyDown(ImGuiKey key); +CIMGUI_API bool igIsKeyPressed(ImGuiKey key,bool repeat); +CIMGUI_API bool igIsKeyReleased(ImGuiKey key); +CIMGUI_API int igGetKeyPressedAmount(ImGuiKey key,float repeat_delay,float rate); +CIMGUI_API const char* igGetKeyName(ImGuiKey key); +CIMGUI_API void igSetNextFrameWantCaptureKeyboard(bool want_capture_keyboard); +CIMGUI_API bool igIsMouseDown(ImGuiMouseButton button); +CIMGUI_API bool igIsMouseClicked(ImGuiMouseButton button,bool repeat); +CIMGUI_API bool igIsMouseReleased(ImGuiMouseButton button); +CIMGUI_API bool igIsMouseDoubleClicked(ImGuiMouseButton button); +CIMGUI_API int igGetMouseClickedCount(ImGuiMouseButton button); +CIMGUI_API bool igIsMouseHoveringRect(const ImVec2 r_min,const ImVec2 r_max,bool clip); +CIMGUI_API bool igIsMousePosValid(const ImVec2* mouse_pos); +CIMGUI_API bool igIsAnyMouseDown(void); +CIMGUI_API void igGetMousePos(ImVec2 *pOut); +CIMGUI_API void igGetMousePosOnOpeningCurrentPopup(ImVec2 *pOut); +CIMGUI_API bool igIsMouseDragging(ImGuiMouseButton button,float lock_threshold); +CIMGUI_API void igGetMouseDragDelta(ImVec2 *pOut,ImGuiMouseButton button,float lock_threshold); +CIMGUI_API void igResetMouseDragDelta(ImGuiMouseButton button); +CIMGUI_API ImGuiMouseCursor igGetMouseCursor(void); +CIMGUI_API void igSetMouseCursor(ImGuiMouseCursor cursor_type); +CIMGUI_API void igSetNextFrameWantCaptureMouse(bool want_capture_mouse); +CIMGUI_API const char* igGetClipboardText(void); +CIMGUI_API void igSetClipboardText(const char* text); +CIMGUI_API void igLoadIniSettingsFromDisk(const char* ini_filename); +CIMGUI_API void igLoadIniSettingsFromMemory(const char* ini_data,size_t ini_size); +CIMGUI_API void igSaveIniSettingsToDisk(const char* ini_filename); +CIMGUI_API const char* igSaveIniSettingsToMemory(size_t* out_ini_size); +CIMGUI_API void igDebugTextEncoding(const char* text); +CIMGUI_API bool igDebugCheckVersionAndDataLayout(const char* version_str,size_t sz_io,size_t sz_style,size_t sz_vec2,size_t sz_vec4,size_t sz_drawvert,size_t sz_drawidx); +CIMGUI_API void igSetAllocatorFunctions(ImGuiMemAllocFunc alloc_func,ImGuiMemFreeFunc free_func,void* user_data); +CIMGUI_API void igGetAllocatorFunctions(ImGuiMemAllocFunc* p_alloc_func,ImGuiMemFreeFunc* p_free_func,void** p_user_data); +CIMGUI_API void* igMemAlloc(size_t size); +CIMGUI_API void igMemFree(void* ptr); +CIMGUI_API ImGuiPlatformIO* igGetPlatformIO(void); +CIMGUI_API void igUpdatePlatformWindows(void); +CIMGUI_API void igRenderPlatformWindowsDefault(void* platform_render_arg,void* renderer_render_arg); +CIMGUI_API void igDestroyPlatformWindows(void); +CIMGUI_API ImGuiViewport* igFindViewportByID(ImGuiID id); +CIMGUI_API ImGuiViewport* igFindViewportByPlatformHandle(void* platform_handle); +CIMGUI_API ImGuiStyle* ImGuiStyle_ImGuiStyle(void); +CIMGUI_API void ImGuiStyle_destroy(ImGuiStyle* self); +CIMGUI_API void ImGuiStyle_ScaleAllSizes(ImGuiStyle* self,float scale_factor); +CIMGUI_API void ImGuiIO_AddKeyEvent(ImGuiIO* self,ImGuiKey key,bool down); +CIMGUI_API void ImGuiIO_AddKeyAnalogEvent(ImGuiIO* self,ImGuiKey key,bool down,float v); +CIMGUI_API void ImGuiIO_AddMousePosEvent(ImGuiIO* self,float x,float y); +CIMGUI_API void ImGuiIO_AddMouseButtonEvent(ImGuiIO* self,int button,bool down); +CIMGUI_API void ImGuiIO_AddMouseWheelEvent(ImGuiIO* self,float wh_x,float wh_y); +CIMGUI_API void ImGuiIO_AddMouseViewportEvent(ImGuiIO* self,ImGuiID id); +CIMGUI_API void ImGuiIO_AddFocusEvent(ImGuiIO* self,bool focused); +CIMGUI_API void ImGuiIO_AddInputCharacter(ImGuiIO* self,unsigned int c); +CIMGUI_API void ImGuiIO_AddInputCharacterUTF16(ImGuiIO* self,ImWchar16 c); +CIMGUI_API void ImGuiIO_AddInputCharactersUTF8(ImGuiIO* self,const char* str); +CIMGUI_API void ImGuiIO_SetKeyEventNativeData(ImGuiIO* self,ImGuiKey key,int native_keycode,int native_scancode,int native_legacy_index); +CIMGUI_API void ImGuiIO_SetAppAcceptingEvents(ImGuiIO* self,bool accepting_events); +CIMGUI_API void ImGuiIO_ClearInputCharacters(ImGuiIO* self); +CIMGUI_API void ImGuiIO_ClearInputKeys(ImGuiIO* self); +CIMGUI_API ImGuiIO* ImGuiIO_ImGuiIO(void); +CIMGUI_API void ImGuiIO_destroy(ImGuiIO* self); +CIMGUI_API ImGuiInputTextCallbackData* ImGuiInputTextCallbackData_ImGuiInputTextCallbackData(void); +CIMGUI_API void ImGuiInputTextCallbackData_destroy(ImGuiInputTextCallbackData* self); +CIMGUI_API void ImGuiInputTextCallbackData_DeleteChars(ImGuiInputTextCallbackData* self,int pos,int bytes_count); +CIMGUI_API void ImGuiInputTextCallbackData_InsertChars(ImGuiInputTextCallbackData* self,int pos,const char* text,const char* text_end); +CIMGUI_API void ImGuiInputTextCallbackData_SelectAll(ImGuiInputTextCallbackData* self); +CIMGUI_API void ImGuiInputTextCallbackData_ClearSelection(ImGuiInputTextCallbackData* self); +CIMGUI_API bool ImGuiInputTextCallbackData_HasSelection(ImGuiInputTextCallbackData* self); +CIMGUI_API ImGuiWindowClass* ImGuiWindowClass_ImGuiWindowClass(void); +CIMGUI_API void ImGuiWindowClass_destroy(ImGuiWindowClass* self); +CIMGUI_API ImGuiPayload* ImGuiPayload_ImGuiPayload(void); +CIMGUI_API void ImGuiPayload_destroy(ImGuiPayload* self); +CIMGUI_API void ImGuiPayload_Clear(ImGuiPayload* self); +CIMGUI_API bool ImGuiPayload_IsDataType(ImGuiPayload* self,const char* type); +CIMGUI_API bool ImGuiPayload_IsPreview(ImGuiPayload* self); +CIMGUI_API bool ImGuiPayload_IsDelivery(ImGuiPayload* self); +CIMGUI_API ImGuiTableColumnSortSpecs* ImGuiTableColumnSortSpecs_ImGuiTableColumnSortSpecs(void); +CIMGUI_API void ImGuiTableColumnSortSpecs_destroy(ImGuiTableColumnSortSpecs* self); +CIMGUI_API ImGuiTableSortSpecs* ImGuiTableSortSpecs_ImGuiTableSortSpecs(void); +CIMGUI_API void ImGuiTableSortSpecs_destroy(ImGuiTableSortSpecs* self); +CIMGUI_API ImGuiOnceUponAFrame* ImGuiOnceUponAFrame_ImGuiOnceUponAFrame(void); +CIMGUI_API void ImGuiOnceUponAFrame_destroy(ImGuiOnceUponAFrame* self); +CIMGUI_API ImGuiTextFilter* ImGuiTextFilter_ImGuiTextFilter(const char* default_filter); +CIMGUI_API void ImGuiTextFilter_destroy(ImGuiTextFilter* self); +CIMGUI_API bool ImGuiTextFilter_Draw(ImGuiTextFilter* self,const char* label,float width); +CIMGUI_API bool ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text,const char* text_end); +CIMGUI_API void ImGuiTextFilter_Build(ImGuiTextFilter* self); +CIMGUI_API void ImGuiTextFilter_Clear(ImGuiTextFilter* self); +CIMGUI_API bool ImGuiTextFilter_IsActive(ImGuiTextFilter* self); +CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Nil(void); +CIMGUI_API void ImGuiTextRange_destroy(ImGuiTextRange* self); +CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Str(const char* _b,const char* _e); +CIMGUI_API bool ImGuiTextRange_empty(ImGuiTextRange* self); +CIMGUI_API void ImGuiTextRange_split(ImGuiTextRange* self,char separator,ImVector_ImGuiTextRange* out); +CIMGUI_API ImGuiTextBuffer* ImGuiTextBuffer_ImGuiTextBuffer(void); +CIMGUI_API void ImGuiTextBuffer_destroy(ImGuiTextBuffer* self); +CIMGUI_API const char* ImGuiTextBuffer_begin(ImGuiTextBuffer* self); +CIMGUI_API const char* ImGuiTextBuffer_end(ImGuiTextBuffer* self); +CIMGUI_API int ImGuiTextBuffer_size(ImGuiTextBuffer* self); +CIMGUI_API bool ImGuiTextBuffer_empty(ImGuiTextBuffer* self); +CIMGUI_API void ImGuiTextBuffer_clear(ImGuiTextBuffer* self); +CIMGUI_API void ImGuiTextBuffer_reserve(ImGuiTextBuffer* self,int capacity); +CIMGUI_API const char* ImGuiTextBuffer_c_str(ImGuiTextBuffer* self); +CIMGUI_API void ImGuiTextBuffer_append(ImGuiTextBuffer* self,const char* str,const char* str_end); +CIMGUI_API void ImGuiTextBuffer_appendfv(ImGuiTextBuffer* self,const char* fmt,va_list args); +CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Int(ImGuiID _key,int _val_i); +CIMGUI_API void ImGuiStoragePair_destroy(ImGuiStoragePair* self); +CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Float(ImGuiID _key,float _val_f); +CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Ptr(ImGuiID _key,void* _val_p); +CIMGUI_API void ImGuiStorage_Clear(ImGuiStorage* self); +CIMGUI_API int ImGuiStorage_GetInt(ImGuiStorage* self,ImGuiID key,int default_val); +CIMGUI_API void ImGuiStorage_SetInt(ImGuiStorage* self,ImGuiID key,int val); +CIMGUI_API bool ImGuiStorage_GetBool(ImGuiStorage* self,ImGuiID key,bool default_val); +CIMGUI_API void ImGuiStorage_SetBool(ImGuiStorage* self,ImGuiID key,bool val); +CIMGUI_API float ImGuiStorage_GetFloat(ImGuiStorage* self,ImGuiID key,float default_val); +CIMGUI_API void ImGuiStorage_SetFloat(ImGuiStorage* self,ImGuiID key,float val); +CIMGUI_API void* ImGuiStorage_GetVoidPtr(ImGuiStorage* self,ImGuiID key); +CIMGUI_API void ImGuiStorage_SetVoidPtr(ImGuiStorage* self,ImGuiID key,void* val); +CIMGUI_API int* ImGuiStorage_GetIntRef(ImGuiStorage* self,ImGuiID key,int default_val); +CIMGUI_API bool* ImGuiStorage_GetBoolRef(ImGuiStorage* self,ImGuiID key,bool default_val); +CIMGUI_API float* ImGuiStorage_GetFloatRef(ImGuiStorage* self,ImGuiID key,float default_val); +CIMGUI_API void** ImGuiStorage_GetVoidPtrRef(ImGuiStorage* self,ImGuiID key,void* default_val); +CIMGUI_API void ImGuiStorage_SetAllInt(ImGuiStorage* self,int val); +CIMGUI_API void ImGuiStorage_BuildSortByKey(ImGuiStorage* self); +CIMGUI_API ImGuiListClipper* ImGuiListClipper_ImGuiListClipper(void); +CIMGUI_API void ImGuiListClipper_destroy(ImGuiListClipper* self); +CIMGUI_API void ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count,float items_height); +CIMGUI_API void ImGuiListClipper_End(ImGuiListClipper* self); +CIMGUI_API bool ImGuiListClipper_Step(ImGuiListClipper* self); +CIMGUI_API void ImGuiListClipper_ForceDisplayRangeByIndices(ImGuiListClipper* self,int item_min,int item_max); +CIMGUI_API ImColor* ImColor_ImColor_Nil(void); +CIMGUI_API void ImColor_destroy(ImColor* self); +CIMGUI_API ImColor* ImColor_ImColor_Float(float r,float g,float b,float a); +CIMGUI_API ImColor* ImColor_ImColor_Vec4(const ImVec4 col); +CIMGUI_API ImColor* ImColor_ImColor_Int(int r,int g,int b,int a); +CIMGUI_API ImColor* ImColor_ImColor_U32(ImU32 rgba); +CIMGUI_API void ImColor_SetHSV(ImColor* self,float h,float s,float v,float a); +CIMGUI_API void ImColor_HSV(ImColor *pOut,float h,float s,float v,float a); +CIMGUI_API ImDrawCmd* ImDrawCmd_ImDrawCmd(void); +CIMGUI_API void ImDrawCmd_destroy(ImDrawCmd* self); +CIMGUI_API ImTextureID ImDrawCmd_GetTexID(ImDrawCmd* self); +CIMGUI_API ImDrawListSplitter* ImDrawListSplitter_ImDrawListSplitter(void); +CIMGUI_API void ImDrawListSplitter_destroy(ImDrawListSplitter* self); +CIMGUI_API void ImDrawListSplitter_Clear(ImDrawListSplitter* self); +CIMGUI_API void ImDrawListSplitter_ClearFreeMemory(ImDrawListSplitter* self); +CIMGUI_API void ImDrawListSplitter_Split(ImDrawListSplitter* self,ImDrawList* draw_list,int count); +CIMGUI_API void ImDrawListSplitter_Merge(ImDrawListSplitter* self,ImDrawList* draw_list); +CIMGUI_API void ImDrawListSplitter_SetCurrentChannel(ImDrawListSplitter* self,ImDrawList* draw_list,int channel_idx); +CIMGUI_API ImDrawList* ImDrawList_ImDrawList(const ImDrawListSharedData* shared_data); +CIMGUI_API void ImDrawList_destroy(ImDrawList* self); +CIMGUI_API void ImDrawList_PushClipRect(ImDrawList* self,const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect); +CIMGUI_API void ImDrawList_PushClipRectFullScreen(ImDrawList* self); +CIMGUI_API void ImDrawList_PopClipRect(ImDrawList* self); +CIMGUI_API void ImDrawList_PushTextureID(ImDrawList* self,ImTextureID texture_id); +CIMGUI_API void ImDrawList_PopTextureID(ImDrawList* self); +CIMGUI_API void ImDrawList_GetClipRectMin(ImVec2 *pOut,ImDrawList* self); +CIMGUI_API void ImDrawList_GetClipRectMax(ImVec2 *pOut,ImDrawList* self); +CIMGUI_API void ImDrawList_AddLine(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,ImU32 col,float thickness); +CIMGUI_API void ImDrawList_AddRect(ImDrawList* self,const ImVec2 p_min,const ImVec2 p_max,ImU32 col,float rounding,ImDrawFlags flags,float thickness); +CIMGUI_API void ImDrawList_AddRectFilled(ImDrawList* self,const ImVec2 p_min,const ImVec2 p_max,ImU32 col,float rounding,ImDrawFlags flags); +CIMGUI_API void ImDrawList_AddRectFilledMultiColor(ImDrawList* self,const ImVec2 p_min,const ImVec2 p_max,ImU32 col_upr_left,ImU32 col_upr_right,ImU32 col_bot_right,ImU32 col_bot_left); +CIMGUI_API void ImDrawList_AddQuad(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col,float thickness); +CIMGUI_API void ImDrawList_AddQuadFilled(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col); +CIMGUI_API void ImDrawList_AddTriangle(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,ImU32 col,float thickness); +CIMGUI_API void ImDrawList_AddTriangleFilled(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,ImU32 col); +CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments,float thickness); +CIMGUI_API void ImDrawList_AddCircleFilled(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments); +CIMGUI_API void ImDrawList_AddNgon(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments,float thickness); +CIMGUI_API void ImDrawList_AddNgonFilled(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments); +CIMGUI_API void ImDrawList_AddText_Vec2(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end); +CIMGUI_API void ImDrawList_AddText_FontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect); +CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness); +CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col); +CIMGUI_API void ImDrawList_AddBezierCubic(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col,float thickness,int num_segments); +CIMGUI_API void ImDrawList_AddBezierQuadratic(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,ImU32 col,float thickness,int num_segments); +CIMGUI_API void ImDrawList_AddImage(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 p_min,const ImVec2 p_max,const ImVec2 uv_min,const ImVec2 uv_max,ImU32 col); +CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,const ImVec2 uv1,const ImVec2 uv2,const ImVec2 uv3,const ImVec2 uv4,ImU32 col); +CIMGUI_API void ImDrawList_AddImageRounded(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 p_min,const ImVec2 p_max,const ImVec2 uv_min,const ImVec2 uv_max,ImU32 col,float rounding,ImDrawFlags flags); +CIMGUI_API void ImDrawList_PathClear(ImDrawList* self); +CIMGUI_API void ImDrawList_PathLineTo(ImDrawList* self,const ImVec2 pos); +CIMGUI_API void ImDrawList_PathLineToMergeDuplicate(ImDrawList* self,const ImVec2 pos); +CIMGUI_API void ImDrawList_PathFillConvex(ImDrawList* self,ImU32 col); +CIMGUI_API void ImDrawList_PathStroke(ImDrawList* self,ImU32 col,ImDrawFlags flags,float thickness); +CIMGUI_API void ImDrawList_PathArcTo(ImDrawList* self,const ImVec2 center,float radius,float a_min,float a_max,int num_segments); +CIMGUI_API void ImDrawList_PathArcToFast(ImDrawList* self,const ImVec2 center,float radius,int a_min_of_12,int a_max_of_12); +CIMGUI_API void ImDrawList_PathBezierCubicCurveTo(ImDrawList* self,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,int num_segments); +CIMGUI_API void ImDrawList_PathBezierQuadraticCurveTo(ImDrawList* self,const ImVec2 p2,const ImVec2 p3,int num_segments); +CIMGUI_API void ImDrawList_PathRect(ImDrawList* self,const ImVec2 rect_min,const ImVec2 rect_max,float rounding,ImDrawFlags flags); +CIMGUI_API void ImDrawList_AddCallback(ImDrawList* self,ImDrawCallback callback,void* callback_data); +CIMGUI_API void ImDrawList_AddDrawCmd(ImDrawList* self); +CIMGUI_API ImDrawList* ImDrawList_CloneOutput(ImDrawList* self); +CIMGUI_API void ImDrawList_ChannelsSplit(ImDrawList* self,int count); +CIMGUI_API void ImDrawList_ChannelsMerge(ImDrawList* self); +CIMGUI_API void ImDrawList_ChannelsSetCurrent(ImDrawList* self,int n); +CIMGUI_API void ImDrawList_PrimReserve(ImDrawList* self,int idx_count,int vtx_count); +CIMGUI_API void ImDrawList_PrimUnreserve(ImDrawList* self,int idx_count,int vtx_count); +CIMGUI_API void ImDrawList_PrimRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col); +CIMGUI_API void ImDrawList_PrimRectUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col); +CIMGUI_API void ImDrawList_PrimQuadUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,const ImVec2 uv_a,const ImVec2 uv_b,const ImVec2 uv_c,const ImVec2 uv_d,ImU32 col); +CIMGUI_API void ImDrawList_PrimWriteVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col); +CIMGUI_API void ImDrawList_PrimWriteIdx(ImDrawList* self,ImDrawIdx idx); +CIMGUI_API void ImDrawList_PrimVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col); +CIMGUI_API void ImDrawList__ResetForNewFrame(ImDrawList* self); +CIMGUI_API void ImDrawList__ClearFreeMemory(ImDrawList* self); +CIMGUI_API void ImDrawList__PopUnusedDrawCmd(ImDrawList* self); +CIMGUI_API void ImDrawList__TryMergeDrawCmds(ImDrawList* self); +CIMGUI_API void ImDrawList__OnChangedClipRect(ImDrawList* self); +CIMGUI_API void ImDrawList__OnChangedTextureID(ImDrawList* self); +CIMGUI_API void ImDrawList__OnChangedVtxOffset(ImDrawList* self); +CIMGUI_API int ImDrawList__CalcCircleAutoSegmentCount(ImDrawList* self,float radius); +CIMGUI_API void ImDrawList__PathArcToFastEx(ImDrawList* self,const ImVec2 center,float radius,int a_min_sample,int a_max_sample,int a_step); +CIMGUI_API void ImDrawList__PathArcToN(ImDrawList* self,const ImVec2 center,float radius,float a_min,float a_max,int num_segments); +CIMGUI_API ImDrawData* ImDrawData_ImDrawData(void); +CIMGUI_API void ImDrawData_destroy(ImDrawData* self); +CIMGUI_API void ImDrawData_Clear(ImDrawData* self); +CIMGUI_API void ImDrawData_DeIndexAllBuffers(ImDrawData* self); +CIMGUI_API void ImDrawData_ScaleClipRects(ImDrawData* self,const ImVec2 fb_scale); +CIMGUI_API ImFontConfig* ImFontConfig_ImFontConfig(void); +CIMGUI_API void ImFontConfig_destroy(ImFontConfig* self); +CIMGUI_API ImFontGlyphRangesBuilder* ImFontGlyphRangesBuilder_ImFontGlyphRangesBuilder(void); +CIMGUI_API void ImFontGlyphRangesBuilder_destroy(ImFontGlyphRangesBuilder* self); +CIMGUI_API void ImFontGlyphRangesBuilder_Clear(ImFontGlyphRangesBuilder* self); +CIMGUI_API bool ImFontGlyphRangesBuilder_GetBit(ImFontGlyphRangesBuilder* self,size_t n); +CIMGUI_API void ImFontGlyphRangesBuilder_SetBit(ImFontGlyphRangesBuilder* self,size_t n); +CIMGUI_API void ImFontGlyphRangesBuilder_AddChar(ImFontGlyphRangesBuilder* self,ImWchar c); +CIMGUI_API void ImFontGlyphRangesBuilder_AddText(ImFontGlyphRangesBuilder* self,const char* text,const char* text_end); +CIMGUI_API void ImFontGlyphRangesBuilder_AddRanges(ImFontGlyphRangesBuilder* self,const ImWchar* ranges); +CIMGUI_API void ImFontGlyphRangesBuilder_BuildRanges(ImFontGlyphRangesBuilder* self,ImVector_ImWchar* out_ranges); +CIMGUI_API ImFontAtlasCustomRect* ImFontAtlasCustomRect_ImFontAtlasCustomRect(void); +CIMGUI_API void ImFontAtlasCustomRect_destroy(ImFontAtlasCustomRect* self); +CIMGUI_API bool ImFontAtlasCustomRect_IsPacked(ImFontAtlasCustomRect* self); +CIMGUI_API ImFontAtlas* ImFontAtlas_ImFontAtlas(void); +CIMGUI_API void ImFontAtlas_destroy(ImFontAtlas* self); +CIMGUI_API ImFont* ImFontAtlas_AddFont(ImFontAtlas* self,const ImFontConfig* font_cfg); +CIMGUI_API ImFont* ImFontAtlas_AddFontDefault(ImFontAtlas* self,const ImFontConfig* font_cfg); +CIMGUI_API ImFont* ImFontAtlas_AddFontFromFileTTF(ImFontAtlas* self,const char* filename,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); +CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self,void* font_data,int font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); +CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self,const void* compressed_font_data,int compressed_font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); +CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(ImFontAtlas* self,const char* compressed_font_data_base85,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); +CIMGUI_API void ImFontAtlas_ClearInputData(ImFontAtlas* self); +CIMGUI_API void ImFontAtlas_ClearTexData(ImFontAtlas* self); +CIMGUI_API void ImFontAtlas_ClearFonts(ImFontAtlas* self); +CIMGUI_API void ImFontAtlas_Clear(ImFontAtlas* self); +CIMGUI_API bool ImFontAtlas_Build(ImFontAtlas* self); +CIMGUI_API void ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel); +CIMGUI_API void ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel); +CIMGUI_API bool ImFontAtlas_IsBuilt(ImFontAtlas* self); +CIMGUI_API void ImFontAtlas_SetTexID(ImFontAtlas* self,ImTextureID id); +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesDefault(ImFontAtlas* self); +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesKorean(ImFontAtlas* self); +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesJapanese(ImFontAtlas* self); +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseFull(ImFontAtlas* self); +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(ImFontAtlas* self); +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesCyrillic(ImFontAtlas* self); +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesThai(ImFontAtlas* self); +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesVietnamese(ImFontAtlas* self); +CIMGUI_API int ImFontAtlas_AddCustomRectRegular(ImFontAtlas* self,int width,int height); +CIMGUI_API int ImFontAtlas_AddCustomRectFontGlyph(ImFontAtlas* self,ImFont* font,ImWchar id,int width,int height,float advance_x,const ImVec2 offset); +CIMGUI_API ImFontAtlasCustomRect* ImFontAtlas_GetCustomRectByIndex(ImFontAtlas* self,int index); +CIMGUI_API void ImFontAtlas_CalcCustomRectUV(ImFontAtlas* self,const ImFontAtlasCustomRect* rect,ImVec2* out_uv_min,ImVec2* out_uv_max); +CIMGUI_API bool ImFontAtlas_GetMouseCursorTexData(ImFontAtlas* self,ImGuiMouseCursor cursor,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]); +CIMGUI_API ImFont* ImFont_ImFont(void); +CIMGUI_API void ImFont_destroy(ImFont* self); +CIMGUI_API const ImFontGlyph* ImFont_FindGlyph(ImFont* self,ImWchar c); +CIMGUI_API const ImFontGlyph* ImFont_FindGlyphNoFallback(ImFont* self,ImWchar c); +CIMGUI_API float ImFont_GetCharAdvance(ImFont* self,ImWchar c); +CIMGUI_API bool ImFont_IsLoaded(ImFont* self); +CIMGUI_API const char* ImFont_GetDebugName(ImFont* self); +CIMGUI_API void ImFont_CalcTextSizeA(ImVec2 *pOut,ImFont* self,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end,const char** remaining); +CIMGUI_API const char* ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,const char* text_end,float wrap_width); +CIMGUI_API void ImFont_RenderChar(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,ImWchar c); +CIMGUI_API void ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin,const char* text_end,float wrap_width,bool cpu_fine_clip); +CIMGUI_API void ImFont_BuildLookupTable(ImFont* self); +CIMGUI_API void ImFont_ClearOutputData(ImFont* self); +CIMGUI_API void ImFont_GrowIndex(ImFont* self,int new_size); +CIMGUI_API void ImFont_AddGlyph(ImFont* self,const ImFontConfig* src_cfg,ImWchar c,float x0,float y0,float x1,float y1,float u0,float v0,float u1,float v1,float advance_x); +CIMGUI_API void ImFont_AddRemapChar(ImFont* self,ImWchar dst,ImWchar src,bool overwrite_dst); +CIMGUI_API void ImFont_SetGlyphVisible(ImFont* self,ImWchar c,bool visible); +CIMGUI_API bool ImFont_IsGlyphRangeUnused(ImFont* self,unsigned int c_begin,unsigned int c_last); +CIMGUI_API ImGuiViewport* ImGuiViewport_ImGuiViewport(void); +CIMGUI_API void ImGuiViewport_destroy(ImGuiViewport* self); +CIMGUI_API void ImGuiViewport_GetCenter(ImVec2 *pOut,ImGuiViewport* self); +CIMGUI_API void ImGuiViewport_GetWorkCenter(ImVec2 *pOut,ImGuiViewport* self); +CIMGUI_API ImGuiPlatformIO* ImGuiPlatformIO_ImGuiPlatformIO(void); +CIMGUI_API void ImGuiPlatformIO_destroy(ImGuiPlatformIO* self); +CIMGUI_API ImGuiPlatformMonitor* ImGuiPlatformMonitor_ImGuiPlatformMonitor(void); +CIMGUI_API void ImGuiPlatformMonitor_destroy(ImGuiPlatformMonitor* self); +CIMGUI_API ImGuiPlatformImeData* ImGuiPlatformImeData_ImGuiPlatformImeData(void); +CIMGUI_API void ImGuiPlatformImeData_destroy(ImGuiPlatformImeData* self); +CIMGUI_API int igGetKeyIndex(ImGuiKey key); +CIMGUI_API ImGuiID igImHashData(const void* data,size_t data_size,ImU32 seed); +CIMGUI_API ImGuiID igImHashStr(const char* data,size_t data_size,ImU32 seed); +CIMGUI_API void igImQsort(void* base,size_t count,size_t size_of_element,int(*compare_func)(void const*,void const*)); +CIMGUI_API ImU32 igImAlphaBlendColors(ImU32 col_a,ImU32 col_b); +CIMGUI_API bool igImIsPowerOfTwo_Int(int v); +CIMGUI_API bool igImIsPowerOfTwo_U64(ImU64 v); +CIMGUI_API int igImUpperPowerOfTwo(int v); +CIMGUI_API int igImStricmp(const char* str1,const char* str2); +CIMGUI_API int igImStrnicmp(const char* str1,const char* str2,size_t count); +CIMGUI_API void igImStrncpy(char* dst,const char* src,size_t count); +CIMGUI_API char* igImStrdup(const char* str); +CIMGUI_API char* igImStrdupcpy(char* dst,size_t* p_dst_size,const char* str); +CIMGUI_API const char* igImStrchrRange(const char* str_begin,const char* str_end,char c); +CIMGUI_API int igImStrlenW(const ImWchar* str); +CIMGUI_API const char* igImStreolRange(const char* str,const char* str_end); +CIMGUI_API const ImWchar* igImStrbolW(const ImWchar* buf_mid_line,const ImWchar* buf_begin); +CIMGUI_API const char* igImStristr(const char* haystack,const char* haystack_end,const char* needle,const char* needle_end); +CIMGUI_API void igImStrTrimBlanks(char* str); +CIMGUI_API const char* igImStrSkipBlank(const char* str); +CIMGUI_API bool igImCharIsBlankA(char c); +CIMGUI_API bool igImCharIsBlankW(unsigned int c); +CIMGUI_API int igImFormatString(char* buf,size_t buf_size,const char* fmt,...); +CIMGUI_API int igImFormatStringV(char* buf,size_t buf_size,const char* fmt,va_list args); +CIMGUI_API void igImFormatStringToTempBuffer(const char** out_buf,const char** out_buf_end,const char* fmt,...); +CIMGUI_API void igImFormatStringToTempBufferV(const char** out_buf,const char** out_buf_end,const char* fmt,va_list args); +CIMGUI_API const char* igImParseFormatFindStart(const char* format); +CIMGUI_API const char* igImParseFormatFindEnd(const char* format); +CIMGUI_API const char* igImParseFormatTrimDecorations(const char* format,char* buf,size_t buf_size); +CIMGUI_API void igImParseFormatSanitizeForPrinting(const char* fmt_in,char* fmt_out,size_t fmt_out_size); +CIMGUI_API const char* igImParseFormatSanitizeForScanning(const char* fmt_in,char* fmt_out,size_t fmt_out_size); +CIMGUI_API int igImParseFormatPrecision(const char* format,int default_value); +CIMGUI_API const char* igImTextCharToUtf8(char out_buf[5],unsigned int c); +CIMGUI_API int igImTextStrToUtf8(char* out_buf,int out_buf_size,const ImWchar* in_text,const ImWchar* in_text_end); +CIMGUI_API int igImTextCharFromUtf8(unsigned int* out_char,const char* in_text,const char* in_text_end); +CIMGUI_API int igImTextStrFromUtf8(ImWchar* out_buf,int out_buf_size,const char* in_text,const char* in_text_end,const char** in_remaining); +CIMGUI_API int igImTextCountCharsFromUtf8(const char* in_text,const char* in_text_end); +CIMGUI_API int igImTextCountUtf8BytesFromChar(const char* in_text,const char* in_text_end); +CIMGUI_API int igImTextCountUtf8BytesFromStr(const ImWchar* in_text,const ImWchar* in_text_end); +CIMGUI_API ImFileHandle igImFileOpen(const char* filename,const char* mode); +CIMGUI_API bool igImFileClose(ImFileHandle file); +CIMGUI_API ImU64 igImFileGetSize(ImFileHandle file); +CIMGUI_API ImU64 igImFileRead(void* data,ImU64 size,ImU64 count,ImFileHandle file); +CIMGUI_API ImU64 igImFileWrite(const void* data,ImU64 size,ImU64 count,ImFileHandle file); +CIMGUI_API void* igImFileLoadToMemory(const char* filename,const char* mode,size_t* out_file_size,int padding_bytes); +CIMGUI_API float igImPow_Float(float x,float y); +CIMGUI_API double igImPow_double(double x,double y); +CIMGUI_API float igImLog_Float(float x); +CIMGUI_API double igImLog_double(double x); +CIMGUI_API int igImAbs_Int(int x); +CIMGUI_API float igImAbs_Float(float x); +CIMGUI_API double igImAbs_double(double x); +CIMGUI_API float igImSign_Float(float x); +CIMGUI_API double igImSign_double(double x); +CIMGUI_API float igImRsqrt_Float(float x); +CIMGUI_API double igImRsqrt_double(double x); +CIMGUI_API void igImMin(ImVec2 *pOut,const ImVec2 lhs,const ImVec2 rhs); +CIMGUI_API void igImMax(ImVec2 *pOut,const ImVec2 lhs,const ImVec2 rhs); +CIMGUI_API void igImClamp(ImVec2 *pOut,const ImVec2 v,const ImVec2 mn,ImVec2 mx); +CIMGUI_API void igImLerp_Vec2Float(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,float t); +CIMGUI_API void igImLerp_Vec2Vec2(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,const ImVec2 t); +CIMGUI_API void igImLerp_Vec4(ImVec4 *pOut,const ImVec4 a,const ImVec4 b,float t); +CIMGUI_API float igImSaturate(float f); +CIMGUI_API float igImLengthSqr_Vec2(const ImVec2 lhs); +CIMGUI_API float igImLengthSqr_Vec4(const ImVec4 lhs); +CIMGUI_API float igImInvLength(const ImVec2 lhs,float fail_value); +CIMGUI_API float igImFloor_Float(float f); +CIMGUI_API float igImFloorSigned_Float(float f); +CIMGUI_API void igImFloor_Vec2(ImVec2 *pOut,const ImVec2 v); +CIMGUI_API void igImFloorSigned_Vec2(ImVec2 *pOut,const ImVec2 v); +CIMGUI_API int igImModPositive(int a,int b); +CIMGUI_API float igImDot(const ImVec2 a,const ImVec2 b); +CIMGUI_API void igImRotate(ImVec2 *pOut,const ImVec2 v,float cos_a,float sin_a); +CIMGUI_API float igImLinearSweep(float current,float target,float speed); +CIMGUI_API void igImMul(ImVec2 *pOut,const ImVec2 lhs,const ImVec2 rhs); +CIMGUI_API bool igImIsFloatAboveGuaranteedIntegerPrecision(float f); +CIMGUI_API void igImBezierCubicCalc(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,float t); +CIMGUI_API void igImBezierCubicClosestPoint(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,const ImVec2 p,int num_segments); +CIMGUI_API void igImBezierCubicClosestPointCasteljau(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,const ImVec2 p,float tess_tol); +CIMGUI_API void igImBezierQuadraticCalc(ImVec2 *pOut,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,float t); +CIMGUI_API void igImLineClosestPoint(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,const ImVec2 p); +CIMGUI_API bool igImTriangleContainsPoint(const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 p); +CIMGUI_API void igImTriangleClosestPoint(ImVec2 *pOut,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 p); +CIMGUI_API void igImTriangleBarycentricCoords(const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 p,float* out_u,float* out_v,float* out_w); +CIMGUI_API float igImTriangleArea(const ImVec2 a,const ImVec2 b,const ImVec2 c); +CIMGUI_API ImGuiDir igImGetDirQuadrantFromDelta(float dx,float dy); +CIMGUI_API ImVec1* ImVec1_ImVec1_Nil(void); +CIMGUI_API void ImVec1_destroy(ImVec1* self); +CIMGUI_API ImVec1* ImVec1_ImVec1_Float(float _x); +CIMGUI_API ImVec2ih* ImVec2ih_ImVec2ih_Nil(void); +CIMGUI_API void ImVec2ih_destroy(ImVec2ih* self); +CIMGUI_API ImVec2ih* ImVec2ih_ImVec2ih_short(short _x,short _y); +CIMGUI_API ImVec2ih* ImVec2ih_ImVec2ih_Vec2(const ImVec2 rhs); +CIMGUI_API ImRect* ImRect_ImRect_Nil(void); +CIMGUI_API void ImRect_destroy(ImRect* self); +CIMGUI_API ImRect* ImRect_ImRect_Vec2(const ImVec2 min,const ImVec2 max); +CIMGUI_API ImRect* ImRect_ImRect_Vec4(const ImVec4 v); +CIMGUI_API ImRect* ImRect_ImRect_Float(float x1,float y1,float x2,float y2); +CIMGUI_API void ImRect_GetCenter(ImVec2 *pOut,ImRect* self); +CIMGUI_API void ImRect_GetSize(ImVec2 *pOut,ImRect* self); +CIMGUI_API float ImRect_GetWidth(ImRect* self); +CIMGUI_API float ImRect_GetHeight(ImRect* self); +CIMGUI_API float ImRect_GetArea(ImRect* self); +CIMGUI_API void ImRect_GetTL(ImVec2 *pOut,ImRect* self); +CIMGUI_API void ImRect_GetTR(ImVec2 *pOut,ImRect* self); +CIMGUI_API void ImRect_GetBL(ImVec2 *pOut,ImRect* self); +CIMGUI_API void ImRect_GetBR(ImVec2 *pOut,ImRect* self); +CIMGUI_API bool ImRect_Contains_Vec2(ImRect* self,const ImVec2 p); +CIMGUI_API bool ImRect_Contains_Rect(ImRect* self,const ImRect r); +CIMGUI_API bool ImRect_Overlaps(ImRect* self,const ImRect r); +CIMGUI_API void ImRect_Add_Vec2(ImRect* self,const ImVec2 p); +CIMGUI_API void ImRect_Add_Rect(ImRect* self,const ImRect r); +CIMGUI_API void ImRect_Expand_Float(ImRect* self,const float amount); +CIMGUI_API void ImRect_Expand_Vec2(ImRect* self,const ImVec2 amount); +CIMGUI_API void ImRect_Translate(ImRect* self,const ImVec2 d); +CIMGUI_API void ImRect_TranslateX(ImRect* self,float dx); +CIMGUI_API void ImRect_TranslateY(ImRect* self,float dy); +CIMGUI_API void ImRect_ClipWith(ImRect* self,const ImRect r); +CIMGUI_API void ImRect_ClipWithFull(ImRect* self,const ImRect r); +CIMGUI_API void ImRect_Floor(ImRect* self); +CIMGUI_API bool ImRect_IsInverted(ImRect* self); +CIMGUI_API void ImRect_ToVec4(ImVec4 *pOut,ImRect* self); +CIMGUI_API bool igImBitArrayTestBit(const ImU32* arr,int n); +CIMGUI_API void igImBitArrayClearBit(ImU32* arr,int n); +CIMGUI_API void igImBitArraySetBit(ImU32* arr,int n); +CIMGUI_API void igImBitArraySetBitRange(ImU32* arr,int n,int n2); +CIMGUI_API void ImBitVector_Create(ImBitVector* self,int sz); +CIMGUI_API void ImBitVector_Clear(ImBitVector* self); +CIMGUI_API bool ImBitVector_TestBit(ImBitVector* self,int n); +CIMGUI_API void ImBitVector_SetBit(ImBitVector* self,int n); +CIMGUI_API void ImBitVector_ClearBit(ImBitVector* self,int n); +CIMGUI_API ImDrawListSharedData* ImDrawListSharedData_ImDrawListSharedData(void); +CIMGUI_API void ImDrawListSharedData_destroy(ImDrawListSharedData* self); +CIMGUI_API void ImDrawListSharedData_SetCircleTessellationMaxError(ImDrawListSharedData* self,float max_error); +CIMGUI_API void ImDrawDataBuilder_Clear(ImDrawDataBuilder* self); +CIMGUI_API void ImDrawDataBuilder_ClearFreeMemory(ImDrawDataBuilder* self); +CIMGUI_API int ImDrawDataBuilder_GetDrawListCount(ImDrawDataBuilder* self); +CIMGUI_API void ImDrawDataBuilder_FlattenIntoSingleLayer(ImDrawDataBuilder* self); +CIMGUI_API ImGuiStyleMod* ImGuiStyleMod_ImGuiStyleMod_Int(ImGuiStyleVar idx,int v); +CIMGUI_API void ImGuiStyleMod_destroy(ImGuiStyleMod* self); +CIMGUI_API ImGuiStyleMod* ImGuiStyleMod_ImGuiStyleMod_Float(ImGuiStyleVar idx,float v); +CIMGUI_API ImGuiStyleMod* ImGuiStyleMod_ImGuiStyleMod_Vec2(ImGuiStyleVar idx,ImVec2 v); +CIMGUI_API ImGuiComboPreviewData* ImGuiComboPreviewData_ImGuiComboPreviewData(void); +CIMGUI_API void ImGuiComboPreviewData_destroy(ImGuiComboPreviewData* self); +CIMGUI_API ImGuiMenuColumns* ImGuiMenuColumns_ImGuiMenuColumns(void); +CIMGUI_API void ImGuiMenuColumns_destroy(ImGuiMenuColumns* self); +CIMGUI_API void ImGuiMenuColumns_Update(ImGuiMenuColumns* self,float spacing,bool window_reappearing); +CIMGUI_API float ImGuiMenuColumns_DeclColumns(ImGuiMenuColumns* self,float w_icon,float w_label,float w_shortcut,float w_mark); +CIMGUI_API void ImGuiMenuColumns_CalcNextTotalWidth(ImGuiMenuColumns* self,bool update_offsets); +CIMGUI_API ImGuiInputTextState* ImGuiInputTextState_ImGuiInputTextState(void); +CIMGUI_API void ImGuiInputTextState_destroy(ImGuiInputTextState* self); +CIMGUI_API void ImGuiInputTextState_ClearText(ImGuiInputTextState* self); +CIMGUI_API void ImGuiInputTextState_ClearFreeMemory(ImGuiInputTextState* self); +CIMGUI_API int ImGuiInputTextState_GetUndoAvailCount(ImGuiInputTextState* self); +CIMGUI_API int ImGuiInputTextState_GetRedoAvailCount(ImGuiInputTextState* self); +CIMGUI_API void ImGuiInputTextState_OnKeyPressed(ImGuiInputTextState* self,int key); +CIMGUI_API void ImGuiInputTextState_CursorAnimReset(ImGuiInputTextState* self); +CIMGUI_API void ImGuiInputTextState_CursorClamp(ImGuiInputTextState* self); +CIMGUI_API bool ImGuiInputTextState_HasSelection(ImGuiInputTextState* self); +CIMGUI_API void ImGuiInputTextState_ClearSelection(ImGuiInputTextState* self); +CIMGUI_API int ImGuiInputTextState_GetCursorPos(ImGuiInputTextState* self); +CIMGUI_API int ImGuiInputTextState_GetSelectionStart(ImGuiInputTextState* self); +CIMGUI_API int ImGuiInputTextState_GetSelectionEnd(ImGuiInputTextState* self); +CIMGUI_API void ImGuiInputTextState_SelectAll(ImGuiInputTextState* self); +CIMGUI_API ImGuiPopupData* ImGuiPopupData_ImGuiPopupData(void); +CIMGUI_API void ImGuiPopupData_destroy(ImGuiPopupData* self); +CIMGUI_API ImGuiNextWindowData* ImGuiNextWindowData_ImGuiNextWindowData(void); +CIMGUI_API void ImGuiNextWindowData_destroy(ImGuiNextWindowData* self); +CIMGUI_API void ImGuiNextWindowData_ClearFlags(ImGuiNextWindowData* self); +CIMGUI_API ImGuiNextItemData* ImGuiNextItemData_ImGuiNextItemData(void); +CIMGUI_API void ImGuiNextItemData_destroy(ImGuiNextItemData* self); +CIMGUI_API void ImGuiNextItemData_ClearFlags(ImGuiNextItemData* self); +CIMGUI_API ImGuiLastItemData* ImGuiLastItemData_ImGuiLastItemData(void); +CIMGUI_API void ImGuiLastItemData_destroy(ImGuiLastItemData* self); +CIMGUI_API ImGuiStackSizes* ImGuiStackSizes_ImGuiStackSizes(void); +CIMGUI_API void ImGuiStackSizes_destroy(ImGuiStackSizes* self); +CIMGUI_API void ImGuiStackSizes_SetToCurrentState(ImGuiStackSizes* self); +CIMGUI_API void ImGuiStackSizes_CompareWithCurrentState(ImGuiStackSizes* self); +CIMGUI_API ImGuiPtrOrIndex* ImGuiPtrOrIndex_ImGuiPtrOrIndex_Ptr(void* ptr); +CIMGUI_API void ImGuiPtrOrIndex_destroy(ImGuiPtrOrIndex* self); +CIMGUI_API ImGuiPtrOrIndex* ImGuiPtrOrIndex_ImGuiPtrOrIndex_Int(int index); +CIMGUI_API ImGuiInputEvent* ImGuiInputEvent_ImGuiInputEvent(void); +CIMGUI_API void ImGuiInputEvent_destroy(ImGuiInputEvent* self); +CIMGUI_API ImGuiListClipperRange ImGuiListClipperRange_FromIndices(int min,int max); +CIMGUI_API ImGuiListClipperRange ImGuiListClipperRange_FromPositions(float y1,float y2,int off_min,int off_max); +CIMGUI_API ImGuiListClipperData* ImGuiListClipperData_ImGuiListClipperData(void); +CIMGUI_API void ImGuiListClipperData_destroy(ImGuiListClipperData* self); +CIMGUI_API void ImGuiListClipperData_Reset(ImGuiListClipperData* self,ImGuiListClipper* clipper); +CIMGUI_API ImGuiNavItemData* ImGuiNavItemData_ImGuiNavItemData(void); +CIMGUI_API void ImGuiNavItemData_destroy(ImGuiNavItemData* self); +CIMGUI_API void ImGuiNavItemData_Clear(ImGuiNavItemData* self); +CIMGUI_API ImGuiOldColumnData* ImGuiOldColumnData_ImGuiOldColumnData(void); +CIMGUI_API void ImGuiOldColumnData_destroy(ImGuiOldColumnData* self); +CIMGUI_API ImGuiOldColumns* ImGuiOldColumns_ImGuiOldColumns(void); +CIMGUI_API void ImGuiOldColumns_destroy(ImGuiOldColumns* self); +CIMGUI_API ImGuiDockNode* ImGuiDockNode_ImGuiDockNode(ImGuiID id); +CIMGUI_API void ImGuiDockNode_destroy(ImGuiDockNode* self); +CIMGUI_API bool ImGuiDockNode_IsRootNode(ImGuiDockNode* self); +CIMGUI_API bool ImGuiDockNode_IsDockSpace(ImGuiDockNode* self); +CIMGUI_API bool ImGuiDockNode_IsFloatingNode(ImGuiDockNode* self); +CIMGUI_API bool ImGuiDockNode_IsCentralNode(ImGuiDockNode* self); +CIMGUI_API bool ImGuiDockNode_IsHiddenTabBar(ImGuiDockNode* self); +CIMGUI_API bool ImGuiDockNode_IsNoTabBar(ImGuiDockNode* self); +CIMGUI_API bool ImGuiDockNode_IsSplitNode(ImGuiDockNode* self); +CIMGUI_API bool ImGuiDockNode_IsLeafNode(ImGuiDockNode* self); +CIMGUI_API bool ImGuiDockNode_IsEmpty(ImGuiDockNode* self); +CIMGUI_API void ImGuiDockNode_Rect(ImRect *pOut,ImGuiDockNode* self); +CIMGUI_API void ImGuiDockNode_SetLocalFlags(ImGuiDockNode* self,ImGuiDockNodeFlags flags); +CIMGUI_API void ImGuiDockNode_UpdateMergedFlags(ImGuiDockNode* self); +CIMGUI_API ImGuiDockContext* ImGuiDockContext_ImGuiDockContext(void); +CIMGUI_API void ImGuiDockContext_destroy(ImGuiDockContext* self); +CIMGUI_API ImGuiViewportP* ImGuiViewportP_ImGuiViewportP(void); +CIMGUI_API void ImGuiViewportP_destroy(ImGuiViewportP* self); +CIMGUI_API void ImGuiViewportP_ClearRequestFlags(ImGuiViewportP* self); +CIMGUI_API void ImGuiViewportP_CalcWorkRectPos(ImVec2 *pOut,ImGuiViewportP* self,const ImVec2 off_min); +CIMGUI_API void ImGuiViewportP_CalcWorkRectSize(ImVec2 *pOut,ImGuiViewportP* self,const ImVec2 off_min,const ImVec2 off_max); +CIMGUI_API void ImGuiViewportP_UpdateWorkRect(ImGuiViewportP* self); +CIMGUI_API void ImGuiViewportP_GetMainRect(ImRect *pOut,ImGuiViewportP* self); +CIMGUI_API void ImGuiViewportP_GetWorkRect(ImRect *pOut,ImGuiViewportP* self); +CIMGUI_API void ImGuiViewportP_GetBuildWorkRect(ImRect *pOut,ImGuiViewportP* self); +CIMGUI_API ImGuiWindowSettings* ImGuiWindowSettings_ImGuiWindowSettings(void); +CIMGUI_API void ImGuiWindowSettings_destroy(ImGuiWindowSettings* self); +CIMGUI_API char* ImGuiWindowSettings_GetName(ImGuiWindowSettings* self); +CIMGUI_API ImGuiSettingsHandler* ImGuiSettingsHandler_ImGuiSettingsHandler(void); +CIMGUI_API void ImGuiSettingsHandler_destroy(ImGuiSettingsHandler* self); +CIMGUI_API ImGuiMetricsConfig* ImGuiMetricsConfig_ImGuiMetricsConfig(void); +CIMGUI_API void ImGuiMetricsConfig_destroy(ImGuiMetricsConfig* self); +CIMGUI_API ImGuiStackLevelInfo* ImGuiStackLevelInfo_ImGuiStackLevelInfo(void); +CIMGUI_API void ImGuiStackLevelInfo_destroy(ImGuiStackLevelInfo* self); +CIMGUI_API ImGuiStackTool* ImGuiStackTool_ImGuiStackTool(void); +CIMGUI_API void ImGuiStackTool_destroy(ImGuiStackTool* self); +CIMGUI_API ImGuiContextHook* ImGuiContextHook_ImGuiContextHook(void); +CIMGUI_API void ImGuiContextHook_destroy(ImGuiContextHook* self); +CIMGUI_API ImGuiContext* ImGuiContext_ImGuiContext(ImFontAtlas* shared_font_atlas); +CIMGUI_API void ImGuiContext_destroy(ImGuiContext* self); +CIMGUI_API ImGuiWindow* ImGuiWindow_ImGuiWindow(ImGuiContext* context,const char* name); +CIMGUI_API void ImGuiWindow_destroy(ImGuiWindow* self); +CIMGUI_API ImGuiID ImGuiWindow_GetID_Str(ImGuiWindow* self,const char* str,const char* str_end); +CIMGUI_API ImGuiID ImGuiWindow_GetID_Ptr(ImGuiWindow* self,const void* ptr); +CIMGUI_API ImGuiID ImGuiWindow_GetID_Int(ImGuiWindow* self,int n); +CIMGUI_API ImGuiID ImGuiWindow_GetIDFromRectangle(ImGuiWindow* self,const ImRect r_abs); +CIMGUI_API void ImGuiWindow_Rect(ImRect *pOut,ImGuiWindow* self); +CIMGUI_API float ImGuiWindow_CalcFontSize(ImGuiWindow* self); +CIMGUI_API float ImGuiWindow_TitleBarHeight(ImGuiWindow* self); +CIMGUI_API void ImGuiWindow_TitleBarRect(ImRect *pOut,ImGuiWindow* self); +CIMGUI_API float ImGuiWindow_MenuBarHeight(ImGuiWindow* self); +CIMGUI_API void ImGuiWindow_MenuBarRect(ImRect *pOut,ImGuiWindow* self); +CIMGUI_API ImGuiTabItem* ImGuiTabItem_ImGuiTabItem(void); +CIMGUI_API void ImGuiTabItem_destroy(ImGuiTabItem* self); +CIMGUI_API ImGuiTabBar* ImGuiTabBar_ImGuiTabBar(void); +CIMGUI_API void ImGuiTabBar_destroy(ImGuiTabBar* self); +CIMGUI_API int ImGuiTabBar_GetTabOrder(ImGuiTabBar* self,const ImGuiTabItem* tab); +CIMGUI_API const char* ImGuiTabBar_GetTabName(ImGuiTabBar* self,const ImGuiTabItem* tab); +CIMGUI_API ImGuiTableColumn* ImGuiTableColumn_ImGuiTableColumn(void); +CIMGUI_API void ImGuiTableColumn_destroy(ImGuiTableColumn* self); +CIMGUI_API ImGuiTableInstanceData* ImGuiTableInstanceData_ImGuiTableInstanceData(void); +CIMGUI_API void ImGuiTableInstanceData_destroy(ImGuiTableInstanceData* self); +CIMGUI_API ImGuiTable* ImGuiTable_ImGuiTable(void); +CIMGUI_API void ImGuiTable_destroy(ImGuiTable* self); +CIMGUI_API ImGuiTableTempData* ImGuiTableTempData_ImGuiTableTempData(void); +CIMGUI_API void ImGuiTableTempData_destroy(ImGuiTableTempData* self); +CIMGUI_API ImGuiTableColumnSettings* ImGuiTableColumnSettings_ImGuiTableColumnSettings(void); +CIMGUI_API void ImGuiTableColumnSettings_destroy(ImGuiTableColumnSettings* self); +CIMGUI_API ImGuiTableSettings* ImGuiTableSettings_ImGuiTableSettings(void); +CIMGUI_API void ImGuiTableSettings_destroy(ImGuiTableSettings* self); +CIMGUI_API ImGuiTableColumnSettings* ImGuiTableSettings_GetColumnSettings(ImGuiTableSettings* self); +CIMGUI_API ImGuiWindow* igGetCurrentWindowRead(void); +CIMGUI_API ImGuiWindow* igGetCurrentWindow(void); +CIMGUI_API ImGuiWindow* igFindWindowByID(ImGuiID id); +CIMGUI_API ImGuiWindow* igFindWindowByName(const char* name); +CIMGUI_API void igUpdateWindowParentAndRootLinks(ImGuiWindow* window,ImGuiWindowFlags flags,ImGuiWindow* parent_window); +CIMGUI_API void igCalcWindowNextAutoFitSize(ImVec2 *pOut,ImGuiWindow* window); +CIMGUI_API bool igIsWindowChildOf(ImGuiWindow* window,ImGuiWindow* potential_parent,bool popup_hierarchy,bool dock_hierarchy); +CIMGUI_API bool igIsWindowWithinBeginStackOf(ImGuiWindow* window,ImGuiWindow* potential_parent); +CIMGUI_API bool igIsWindowAbove(ImGuiWindow* potential_above,ImGuiWindow* potential_below); +CIMGUI_API bool igIsWindowNavFocusable(ImGuiWindow* window); +CIMGUI_API void igSetWindowPos_WindowPtr(ImGuiWindow* window,const ImVec2 pos,ImGuiCond cond); +CIMGUI_API void igSetWindowSize_WindowPtr(ImGuiWindow* window,const ImVec2 size,ImGuiCond cond); +CIMGUI_API void igSetWindowCollapsed_WindowPtr(ImGuiWindow* window,bool collapsed,ImGuiCond cond); +CIMGUI_API void igSetWindowHitTestHole(ImGuiWindow* window,const ImVec2 pos,const ImVec2 size); +CIMGUI_API void igWindowRectAbsToRel(ImRect *pOut,ImGuiWindow* window,const ImRect r); +CIMGUI_API void igWindowRectRelToAbs(ImRect *pOut,ImGuiWindow* window,const ImRect r); +CIMGUI_API void igFocusWindow(ImGuiWindow* window); +CIMGUI_API void igFocusTopMostWindowUnderOne(ImGuiWindow* under_this_window,ImGuiWindow* ignore_window); +CIMGUI_API void igBringWindowToFocusFront(ImGuiWindow* window); +CIMGUI_API void igBringWindowToDisplayFront(ImGuiWindow* window); +CIMGUI_API void igBringWindowToDisplayBack(ImGuiWindow* window); +CIMGUI_API void igBringWindowToDisplayBehind(ImGuiWindow* window,ImGuiWindow* above_window); +CIMGUI_API int igFindWindowDisplayIndex(ImGuiWindow* window); +CIMGUI_API ImGuiWindow* igFindBottomMostVisibleWindowWithinBeginStack(ImGuiWindow* window); +CIMGUI_API void igSetCurrentFont(ImFont* font); +CIMGUI_API ImFont* igGetDefaultFont(void); +CIMGUI_API ImDrawList* igGetForegroundDrawList_WindowPtr(ImGuiWindow* window); +CIMGUI_API void igInitialize(void); +CIMGUI_API void igShutdown(void); +CIMGUI_API void igUpdateInputEvents(bool trickle_fast_inputs); +CIMGUI_API void igUpdateHoveredWindowAndCaptureFlags(void); +CIMGUI_API void igStartMouseMovingWindow(ImGuiWindow* window); +CIMGUI_API void igStartMouseMovingWindowOrNode(ImGuiWindow* window,ImGuiDockNode* node,bool undock_floating_node); +CIMGUI_API void igUpdateMouseMovingWindowNewFrame(void); +CIMGUI_API void igUpdateMouseMovingWindowEndFrame(void); +CIMGUI_API ImGuiID igAddContextHook(ImGuiContext* context,const ImGuiContextHook* hook); +CIMGUI_API void igRemoveContextHook(ImGuiContext* context,ImGuiID hook_to_remove); +CIMGUI_API void igCallContextHooks(ImGuiContext* context,ImGuiContextHookType type); +CIMGUI_API void igTranslateWindowsInViewport(ImGuiViewportP* viewport,const ImVec2 old_pos,const ImVec2 new_pos); +CIMGUI_API void igScaleWindowsInViewport(ImGuiViewportP* viewport,float scale); +CIMGUI_API void igDestroyPlatformWindow(ImGuiViewportP* viewport); +CIMGUI_API void igSetWindowViewport(ImGuiWindow* window,ImGuiViewportP* viewport); +CIMGUI_API void igSetCurrentViewport(ImGuiWindow* window,ImGuiViewportP* viewport); +CIMGUI_API const ImGuiPlatformMonitor* igGetViewportPlatformMonitor(ImGuiViewport* viewport); +CIMGUI_API ImGuiViewportP* igFindHoveredViewportFromPlatformWindowStack(const ImVec2 mouse_platform_pos); +CIMGUI_API void igMarkIniSettingsDirty_Nil(void); +CIMGUI_API void igMarkIniSettingsDirty_WindowPtr(ImGuiWindow* window); +CIMGUI_API void igClearIniSettings(void); +CIMGUI_API ImGuiWindowSettings* igCreateNewWindowSettings(const char* name); +CIMGUI_API ImGuiWindowSettings* igFindWindowSettings(ImGuiID id); +CIMGUI_API ImGuiWindowSettings* igFindOrCreateWindowSettings(const char* name); +CIMGUI_API void igAddSettingsHandler(const ImGuiSettingsHandler* handler); +CIMGUI_API void igRemoveSettingsHandler(const char* type_name); +CIMGUI_API ImGuiSettingsHandler* igFindSettingsHandler(const char* type_name); +CIMGUI_API void igSetNextWindowScroll(const ImVec2 scroll); +CIMGUI_API void igSetScrollX_WindowPtr(ImGuiWindow* window,float scroll_x); +CIMGUI_API void igSetScrollY_WindowPtr(ImGuiWindow* window,float scroll_y); +CIMGUI_API void igSetScrollFromPosX_WindowPtr(ImGuiWindow* window,float local_x,float center_x_ratio); +CIMGUI_API void igSetScrollFromPosY_WindowPtr(ImGuiWindow* window,float local_y,float center_y_ratio); +CIMGUI_API void igScrollToItem(ImGuiScrollFlags flags); +CIMGUI_API void igScrollToRect(ImGuiWindow* window,const ImRect rect,ImGuiScrollFlags flags); +CIMGUI_API void igScrollToRectEx(ImVec2 *pOut,ImGuiWindow* window,const ImRect rect,ImGuiScrollFlags flags); +CIMGUI_API void igScrollToBringRectIntoView(ImGuiWindow* window,const ImRect rect); +CIMGUI_API ImGuiID igGetItemID(void); +CIMGUI_API ImGuiItemStatusFlags igGetItemStatusFlags(void); +CIMGUI_API ImGuiItemFlags igGetItemFlags(void); +CIMGUI_API ImGuiID igGetActiveID(void); +CIMGUI_API ImGuiID igGetFocusID(void); +CIMGUI_API void igSetActiveID(ImGuiID id,ImGuiWindow* window); +CIMGUI_API void igSetFocusID(ImGuiID id,ImGuiWindow* window); +CIMGUI_API void igClearActiveID(void); +CIMGUI_API ImGuiID igGetHoveredID(void); +CIMGUI_API void igSetHoveredID(ImGuiID id); +CIMGUI_API void igKeepAliveID(ImGuiID id); +CIMGUI_API void igMarkItemEdited(ImGuiID id); +CIMGUI_API void igPushOverrideID(ImGuiID id); +CIMGUI_API ImGuiID igGetIDWithSeed(const char* str_id_begin,const char* str_id_end,ImGuiID seed); +CIMGUI_API void igItemSize_Vec2(const ImVec2 size,float text_baseline_y); +CIMGUI_API void igItemSize_Rect(const ImRect bb,float text_baseline_y); +CIMGUI_API bool igItemAdd(const ImRect bb,ImGuiID id,const ImRect* nav_bb,ImGuiItemFlags extra_flags); +CIMGUI_API bool igItemHoverable(const ImRect bb,ImGuiID id); +CIMGUI_API bool igIsClippedEx(const ImRect bb,ImGuiID id); +CIMGUI_API void igSetLastItemData(ImGuiID item_id,ImGuiItemFlags in_flags,ImGuiItemStatusFlags status_flags,const ImRect item_rect); +CIMGUI_API void igCalcItemSize(ImVec2 *pOut,ImVec2 size,float default_w,float default_h); +CIMGUI_API float igCalcWrapWidthForPos(const ImVec2 pos,float wrap_pos_x); +CIMGUI_API void igPushMultiItemsWidths(int components,float width_full); +CIMGUI_API bool igIsItemToggledSelection(void); +CIMGUI_API void igGetContentRegionMaxAbs(ImVec2 *pOut); +CIMGUI_API void igShrinkWidths(ImGuiShrinkWidthItem* items,int count,float width_excess); +CIMGUI_API void igPushItemFlag(ImGuiItemFlags option,bool enabled); +CIMGUI_API void igPopItemFlag(void); +CIMGUI_API void igLogBegin(ImGuiLogType type,int auto_open_depth); +CIMGUI_API void igLogToBuffer(int auto_open_depth); +CIMGUI_API void igLogRenderedText(const ImVec2* ref_pos,const char* text,const char* text_end); +CIMGUI_API void igLogSetNextTextDecoration(const char* prefix,const char* suffix); +CIMGUI_API bool igBeginChildEx(const char* name,ImGuiID id,const ImVec2 size_arg,bool border,ImGuiWindowFlags flags); +CIMGUI_API void igOpenPopupEx(ImGuiID id,ImGuiPopupFlags popup_flags); +CIMGUI_API void igClosePopupToLevel(int remaining,bool restore_focus_to_window_under_popup); +CIMGUI_API void igClosePopupsOverWindow(ImGuiWindow* ref_window,bool restore_focus_to_window_under_popup); +CIMGUI_API void igClosePopupsExceptModals(void); +CIMGUI_API bool igIsPopupOpen_ID(ImGuiID id,ImGuiPopupFlags popup_flags); +CIMGUI_API bool igBeginPopupEx(ImGuiID id,ImGuiWindowFlags extra_flags); +CIMGUI_API void igBeginTooltipEx(ImGuiTooltipFlags tooltip_flags,ImGuiWindowFlags extra_window_flags); +CIMGUI_API void igGetPopupAllowedExtentRect(ImRect *pOut,ImGuiWindow* window); +CIMGUI_API ImGuiWindow* igGetTopMostPopupModal(void); +CIMGUI_API ImGuiWindow* igGetTopMostAndVisiblePopupModal(void); +CIMGUI_API void igFindBestWindowPosForPopup(ImVec2 *pOut,ImGuiWindow* window); +CIMGUI_API void igFindBestWindowPosForPopupEx(ImVec2 *pOut,const ImVec2 ref_pos,const ImVec2 size,ImGuiDir* last_dir,const ImRect r_outer,const ImRect r_avoid,ImGuiPopupPositionPolicy policy); +CIMGUI_API bool igBeginViewportSideBar(const char* name,ImGuiViewport* viewport,ImGuiDir dir,float size,ImGuiWindowFlags window_flags); +CIMGUI_API bool igBeginMenuEx(const char* label,const char* icon,bool enabled); +CIMGUI_API bool igMenuItemEx(const char* label,const char* icon,const char* shortcut,bool selected,bool enabled); +CIMGUI_API bool igBeginComboPopup(ImGuiID popup_id,const ImRect bb,ImGuiComboFlags flags); +CIMGUI_API bool igBeginComboPreview(void); +CIMGUI_API void igEndComboPreview(void); +CIMGUI_API void igNavInitWindow(ImGuiWindow* window,bool force_reinit); +CIMGUI_API void igNavInitRequestApplyResult(void); +CIMGUI_API bool igNavMoveRequestButNoResultYet(void); +CIMGUI_API void igNavMoveRequestSubmit(ImGuiDir move_dir,ImGuiDir clip_dir,ImGuiNavMoveFlags move_flags,ImGuiScrollFlags scroll_flags); +CIMGUI_API void igNavMoveRequestForward(ImGuiDir move_dir,ImGuiDir clip_dir,ImGuiNavMoveFlags move_flags,ImGuiScrollFlags scroll_flags); +CIMGUI_API void igNavMoveRequestResolveWithLastItem(ImGuiNavItemData* result); +CIMGUI_API void igNavMoveRequestCancel(void); +CIMGUI_API void igNavMoveRequestApplyResult(void); +CIMGUI_API void igNavMoveRequestTryWrapping(ImGuiWindow* window,ImGuiNavMoveFlags move_flags); +CIMGUI_API const char* igGetNavInputName(ImGuiNavInput n); +CIMGUI_API float igGetNavInputAmount(ImGuiNavInput n,ImGuiNavReadMode mode); +CIMGUI_API void igGetNavInputAmount2d(ImVec2 *pOut,ImGuiNavDirSourceFlags dir_sources,ImGuiNavReadMode mode,float slow_factor,float fast_factor); +CIMGUI_API int igCalcTypematicRepeatAmount(float t0,float t1,float repeat_delay,float repeat_rate); +CIMGUI_API void igActivateItem(ImGuiID id); +CIMGUI_API void igSetNavWindow(ImGuiWindow* window); +CIMGUI_API void igSetNavID(ImGuiID id,ImGuiNavLayer nav_layer,ImGuiID focus_scope_id,const ImRect rect_rel); +CIMGUI_API void igPushFocusScope(ImGuiID id); +CIMGUI_API void igPopFocusScope(void); +CIMGUI_API ImGuiID igGetFocusedFocusScope(void); +CIMGUI_API ImGuiID igGetFocusScope(void); +CIMGUI_API bool igIsNamedKey(ImGuiKey key); +CIMGUI_API bool igIsLegacyKey(ImGuiKey key); +CIMGUI_API bool igIsGamepadKey(ImGuiKey key); +CIMGUI_API ImGuiKeyData* igGetKeyData(ImGuiKey key); +CIMGUI_API void igSetItemUsingMouseWheel(void); +CIMGUI_API void igSetActiveIdUsingNavAndKeys(void); +CIMGUI_API bool igIsActiveIdUsingNavDir(ImGuiDir dir); +CIMGUI_API bool igIsActiveIdUsingNavInput(ImGuiNavInput input); +CIMGUI_API bool igIsActiveIdUsingKey(ImGuiKey key); +CIMGUI_API void igSetActiveIdUsingKey(ImGuiKey key); +CIMGUI_API bool igIsMouseDragPastThreshold(ImGuiMouseButton button,float lock_threshold); +CIMGUI_API bool igIsNavInputDown(ImGuiNavInput n); +CIMGUI_API bool igIsNavInputTest(ImGuiNavInput n,ImGuiNavReadMode rm); +CIMGUI_API ImGuiModFlags igGetMergedModFlags(void); +CIMGUI_API bool igIsKeyPressedMap(ImGuiKey key,bool repeat); +CIMGUI_API void igDockContextInitialize(ImGuiContext* ctx); +CIMGUI_API void igDockContextShutdown(ImGuiContext* ctx); +CIMGUI_API void igDockContextClearNodes(ImGuiContext* ctx,ImGuiID root_id,bool clear_settings_refs); +CIMGUI_API void igDockContextRebuildNodes(ImGuiContext* ctx); +CIMGUI_API void igDockContextNewFrameUpdateUndocking(ImGuiContext* ctx); +CIMGUI_API void igDockContextNewFrameUpdateDocking(ImGuiContext* ctx); +CIMGUI_API void igDockContextEndFrame(ImGuiContext* ctx); +CIMGUI_API ImGuiID igDockContextGenNodeID(ImGuiContext* ctx); +CIMGUI_API void igDockContextQueueDock(ImGuiContext* ctx,ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload,ImGuiDir split_dir,float split_ratio,bool split_outer); +CIMGUI_API void igDockContextQueueUndockWindow(ImGuiContext* ctx,ImGuiWindow* window); +CIMGUI_API void igDockContextQueueUndockNode(ImGuiContext* ctx,ImGuiDockNode* node); +CIMGUI_API bool igDockContextCalcDropPosForDocking(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload,ImGuiDir split_dir,bool split_outer,ImVec2* out_pos); +CIMGUI_API bool igDockNodeBeginAmendTabBar(ImGuiDockNode* node); +CIMGUI_API void igDockNodeEndAmendTabBar(void); +CIMGUI_API ImGuiDockNode* igDockNodeGetRootNode(ImGuiDockNode* node); +CIMGUI_API bool igDockNodeIsInHierarchyOf(ImGuiDockNode* node,ImGuiDockNode* parent); +CIMGUI_API int igDockNodeGetDepth(const ImGuiDockNode* node); +CIMGUI_API ImGuiID igDockNodeGetWindowMenuButtonId(const ImGuiDockNode* node); +CIMGUI_API ImGuiDockNode* igGetWindowDockNode(void); +CIMGUI_API bool igGetWindowAlwaysWantOwnTabBar(ImGuiWindow* window); +CIMGUI_API void igBeginDocked(ImGuiWindow* window,bool* p_open); +CIMGUI_API void igBeginDockableDragDropSource(ImGuiWindow* window); +CIMGUI_API void igBeginDockableDragDropTarget(ImGuiWindow* window); +CIMGUI_API void igSetWindowDock(ImGuiWindow* window,ImGuiID dock_id,ImGuiCond cond); +CIMGUI_API void igDockBuilderDockWindow(const char* window_name,ImGuiID node_id); +CIMGUI_API ImGuiDockNode* igDockBuilderGetNode(ImGuiID node_id); +CIMGUI_API ImGuiDockNode* igDockBuilderGetCentralNode(ImGuiID node_id); +CIMGUI_API ImGuiID igDockBuilderAddNode(ImGuiID node_id,ImGuiDockNodeFlags flags); +CIMGUI_API void igDockBuilderRemoveNode(ImGuiID node_id); +CIMGUI_API void igDockBuilderRemoveNodeDockedWindows(ImGuiID node_id,bool clear_settings_refs); +CIMGUI_API void igDockBuilderRemoveNodeChildNodes(ImGuiID node_id); +CIMGUI_API void igDockBuilderSetNodePos(ImGuiID node_id,ImVec2 pos); +CIMGUI_API void igDockBuilderSetNodeSize(ImGuiID node_id,ImVec2 size); +CIMGUI_API ImGuiID igDockBuilderSplitNode(ImGuiID node_id,ImGuiDir split_dir,float size_ratio_for_node_at_dir,ImGuiID* out_id_at_dir,ImGuiID* out_id_at_opposite_dir); +CIMGUI_API void igDockBuilderCopyDockSpace(ImGuiID src_dockspace_id,ImGuiID dst_dockspace_id,ImVector_const_charPtr* in_window_remap_pairs); +CIMGUI_API void igDockBuilderCopyNode(ImGuiID src_node_id,ImGuiID dst_node_id,ImVector_ImGuiID* out_node_remap_pairs); +CIMGUI_API void igDockBuilderCopyWindowSettings(const char* src_name,const char* dst_name); +CIMGUI_API void igDockBuilderFinish(ImGuiID node_id); +CIMGUI_API bool igIsDragDropActive(void); +CIMGUI_API bool igBeginDragDropTargetCustom(const ImRect bb,ImGuiID id); +CIMGUI_API void igClearDragDrop(void); +CIMGUI_API bool igIsDragDropPayloadBeingAccepted(void); +CIMGUI_API void igSetWindowClipRectBeforeSetChannel(ImGuiWindow* window,const ImRect clip_rect); +CIMGUI_API void igBeginColumns(const char* str_id,int count,ImGuiOldColumnFlags flags); +CIMGUI_API void igEndColumns(void); +CIMGUI_API void igPushColumnClipRect(int column_index); +CIMGUI_API void igPushColumnsBackground(void); +CIMGUI_API void igPopColumnsBackground(void); +CIMGUI_API ImGuiID igGetColumnsID(const char* str_id,int count); +CIMGUI_API ImGuiOldColumns* igFindOrCreateColumns(ImGuiWindow* window,ImGuiID id); +CIMGUI_API float igGetColumnOffsetFromNorm(const ImGuiOldColumns* columns,float offset_norm); +CIMGUI_API float igGetColumnNormFromOffset(const ImGuiOldColumns* columns,float offset); +CIMGUI_API void igTableOpenContextMenu(int column_n); +CIMGUI_API void igTableSetColumnWidth(int column_n,float width); +CIMGUI_API void igTableSetColumnSortDirection(int column_n,ImGuiSortDirection sort_direction,bool append_to_sort_specs); +CIMGUI_API int igTableGetHoveredColumn(void); +CIMGUI_API float igTableGetHeaderRowHeight(void); +CIMGUI_API void igTablePushBackgroundChannel(void); +CIMGUI_API void igTablePopBackgroundChannel(void); +CIMGUI_API ImGuiTable* igGetCurrentTable(void); +CIMGUI_API ImGuiTable* igTableFindByID(ImGuiID id); +CIMGUI_API bool igBeginTableEx(const char* name,ImGuiID id,int columns_count,ImGuiTableFlags flags,const ImVec2 outer_size,float inner_width); +CIMGUI_API void igTableBeginInitMemory(ImGuiTable* table,int columns_count); +CIMGUI_API void igTableBeginApplyRequests(ImGuiTable* table); +CIMGUI_API void igTableSetupDrawChannels(ImGuiTable* table); +CIMGUI_API void igTableUpdateLayout(ImGuiTable* table); +CIMGUI_API void igTableUpdateBorders(ImGuiTable* table); +CIMGUI_API void igTableUpdateColumnsWeightFromWidth(ImGuiTable* table); +CIMGUI_API void igTableDrawBorders(ImGuiTable* table); +CIMGUI_API void igTableDrawContextMenu(ImGuiTable* table); +CIMGUI_API void igTableMergeDrawChannels(ImGuiTable* table); +CIMGUI_API ImGuiTableInstanceData* igTableGetInstanceData(ImGuiTable* table,int instance_no); +CIMGUI_API void igTableSortSpecsSanitize(ImGuiTable* table); +CIMGUI_API void igTableSortSpecsBuild(ImGuiTable* table); +CIMGUI_API ImGuiSortDirection igTableGetColumnNextSortDirection(ImGuiTableColumn* column); +CIMGUI_API void igTableFixColumnSortDirection(ImGuiTable* table,ImGuiTableColumn* column); +CIMGUI_API float igTableGetColumnWidthAuto(ImGuiTable* table,ImGuiTableColumn* column); +CIMGUI_API void igTableBeginRow(ImGuiTable* table); +CIMGUI_API void igTableEndRow(ImGuiTable* table); +CIMGUI_API void igTableBeginCell(ImGuiTable* table,int column_n); +CIMGUI_API void igTableEndCell(ImGuiTable* table); +CIMGUI_API void igTableGetCellBgRect(ImRect *pOut,const ImGuiTable* table,int column_n); +CIMGUI_API const char* igTableGetColumnName_TablePtr(const ImGuiTable* table,int column_n); +CIMGUI_API ImGuiID igTableGetColumnResizeID(const ImGuiTable* table,int column_n,int instance_no); +CIMGUI_API float igTableGetMaxColumnWidth(const ImGuiTable* table,int column_n); +CIMGUI_API void igTableSetColumnWidthAutoSingle(ImGuiTable* table,int column_n); +CIMGUI_API void igTableSetColumnWidthAutoAll(ImGuiTable* table); +CIMGUI_API void igTableRemove(ImGuiTable* table); +CIMGUI_API void igTableGcCompactTransientBuffers_TablePtr(ImGuiTable* table); +CIMGUI_API void igTableGcCompactTransientBuffers_TableTempDataPtr(ImGuiTableTempData* table); +CIMGUI_API void igTableGcCompactSettings(void); +CIMGUI_API void igTableLoadSettings(ImGuiTable* table); +CIMGUI_API void igTableSaveSettings(ImGuiTable* table); +CIMGUI_API void igTableResetSettings(ImGuiTable* table); +CIMGUI_API ImGuiTableSettings* igTableGetBoundSettings(ImGuiTable* table); +CIMGUI_API void igTableSettingsAddSettingsHandler(void); +CIMGUI_API ImGuiTableSettings* igTableSettingsCreate(ImGuiID id,int columns_count); +CIMGUI_API ImGuiTableSettings* igTableSettingsFindByID(ImGuiID id); +CIMGUI_API bool igBeginTabBarEx(ImGuiTabBar* tab_bar,const ImRect bb,ImGuiTabBarFlags flags,ImGuiDockNode* dock_node); +CIMGUI_API ImGuiTabItem* igTabBarFindTabByID(ImGuiTabBar* tab_bar,ImGuiID tab_id); +CIMGUI_API ImGuiTabItem* igTabBarFindMostRecentlySelectedTabForActiveWindow(ImGuiTabBar* tab_bar); +CIMGUI_API void igTabBarAddTab(ImGuiTabBar* tab_bar,ImGuiTabItemFlags tab_flags,ImGuiWindow* window); +CIMGUI_API void igTabBarRemoveTab(ImGuiTabBar* tab_bar,ImGuiID tab_id); +CIMGUI_API void igTabBarCloseTab(ImGuiTabBar* tab_bar,ImGuiTabItem* tab); +CIMGUI_API void igTabBarQueueReorder(ImGuiTabBar* tab_bar,const ImGuiTabItem* tab,int offset); +CIMGUI_API void igTabBarQueueReorderFromMousePos(ImGuiTabBar* tab_bar,const ImGuiTabItem* tab,ImVec2 mouse_pos); +CIMGUI_API bool igTabBarProcessReorder(ImGuiTabBar* tab_bar); +CIMGUI_API bool igTabItemEx(ImGuiTabBar* tab_bar,const char* label,bool* p_open,ImGuiTabItemFlags flags,ImGuiWindow* docked_window); +CIMGUI_API void igTabItemCalcSize(ImVec2 *pOut,const char* label,bool has_close_button); +CIMGUI_API void igTabItemBackground(ImDrawList* draw_list,const ImRect bb,ImGuiTabItemFlags flags,ImU32 col); +CIMGUI_API void igTabItemLabelAndCloseButton(ImDrawList* draw_list,const ImRect bb,ImGuiTabItemFlags flags,ImVec2 frame_padding,const char* label,ImGuiID tab_id,ImGuiID close_button_id,bool is_contents_visible,bool* out_just_closed,bool* out_text_clipped); +CIMGUI_API void igRenderText(ImVec2 pos,const char* text,const char* text_end,bool hide_text_after_hash); +CIMGUI_API void igRenderTextWrapped(ImVec2 pos,const char* text,const char* text_end,float wrap_width); +CIMGUI_API void igRenderTextClipped(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect); +CIMGUI_API void igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect); +CIMGUI_API void igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,float clip_max_x,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2* text_size_if_known); +CIMGUI_API void igRenderFrame(ImVec2 p_min,ImVec2 p_max,ImU32 fill_col,bool border,float rounding); +CIMGUI_API void igRenderFrameBorder(ImVec2 p_min,ImVec2 p_max,float rounding); +CIMGUI_API void igRenderColorRectWithAlphaCheckerboard(ImDrawList* draw_list,ImVec2 p_min,ImVec2 p_max,ImU32 fill_col,float grid_step,ImVec2 grid_off,float rounding,ImDrawFlags flags); +CIMGUI_API void igRenderNavHighlight(const ImRect bb,ImGuiID id,ImGuiNavHighlightFlags flags); +CIMGUI_API const char* igFindRenderedTextEnd(const char* text,const char* text_end); +CIMGUI_API void igRenderMouseCursor(ImVec2 pos,float scale,ImGuiMouseCursor mouse_cursor,ImU32 col_fill,ImU32 col_border,ImU32 col_shadow); +CIMGUI_API void igRenderArrow(ImDrawList* draw_list,ImVec2 pos,ImU32 col,ImGuiDir dir,float scale); +CIMGUI_API void igRenderBullet(ImDrawList* draw_list,ImVec2 pos,ImU32 col); +CIMGUI_API void igRenderCheckMark(ImDrawList* draw_list,ImVec2 pos,ImU32 col,float sz); +CIMGUI_API void igRenderArrowPointingAt(ImDrawList* draw_list,ImVec2 pos,ImVec2 half_sz,ImGuiDir direction,ImU32 col); +CIMGUI_API void igRenderArrowDockMenu(ImDrawList* draw_list,ImVec2 p_min,float sz,ImU32 col); +CIMGUI_API void igRenderRectFilledRangeH(ImDrawList* draw_list,const ImRect rect,ImU32 col,float x_start_norm,float x_end_norm,float rounding); +CIMGUI_API void igRenderRectFilledWithHole(ImDrawList* draw_list,const ImRect outer,const ImRect inner,ImU32 col,float rounding); +CIMGUI_API ImDrawFlags igCalcRoundingFlagsForRectInRect(const ImRect r_in,const ImRect r_outer,float threshold); +CIMGUI_API void igTextEx(const char* text,const char* text_end,ImGuiTextFlags flags); +CIMGUI_API bool igButtonEx(const char* label,const ImVec2 size_arg,ImGuiButtonFlags flags); +CIMGUI_API bool igCloseButton(ImGuiID id,const ImVec2 pos); +CIMGUI_API bool igCollapseButton(ImGuiID id,const ImVec2 pos,ImGuiDockNode* dock_node); +CIMGUI_API bool igArrowButtonEx(const char* str_id,ImGuiDir dir,ImVec2 size_arg,ImGuiButtonFlags flags); +CIMGUI_API void igScrollbar(ImGuiAxis axis); +CIMGUI_API bool igScrollbarEx(const ImRect bb,ImGuiID id,ImGuiAxis axis,ImS64* p_scroll_v,ImS64 avail_v,ImS64 contents_v,ImDrawFlags flags); +CIMGUI_API bool igImageButtonEx(ImGuiID id,ImTextureID texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec2 padding,const ImVec4 bg_col,const ImVec4 tint_col); +CIMGUI_API void igGetWindowScrollbarRect(ImRect *pOut,ImGuiWindow* window,ImGuiAxis axis); +CIMGUI_API ImGuiID igGetWindowScrollbarID(ImGuiWindow* window,ImGuiAxis axis); +CIMGUI_API ImGuiID igGetWindowResizeCornerID(ImGuiWindow* window,int n); +CIMGUI_API ImGuiID igGetWindowResizeBorderID(ImGuiWindow* window,ImGuiDir dir); +CIMGUI_API void igSeparatorEx(ImGuiSeparatorFlags flags); +CIMGUI_API bool igCheckboxFlags_S64Ptr(const char* label,ImS64* flags,ImS64 flags_value); +CIMGUI_API bool igCheckboxFlags_U64Ptr(const char* label,ImU64* flags,ImU64 flags_value); +CIMGUI_API bool igButtonBehavior(const ImRect bb,ImGuiID id,bool* out_hovered,bool* out_held,ImGuiButtonFlags flags); +CIMGUI_API bool igDragBehavior(ImGuiID id,ImGuiDataType data_type,void* p_v,float v_speed,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags); +CIMGUI_API bool igSliderBehavior(const ImRect bb,ImGuiID id,ImGuiDataType data_type,void* p_v,const void* p_min,const void* p_max,const char* format,ImGuiSliderFlags flags,ImRect* out_grab_bb); +CIMGUI_API bool igSplitterBehavior(const ImRect bb,ImGuiID id,ImGuiAxis axis,float* size1,float* size2,float min_size1,float min_size2,float hover_extend,float hover_visibility_delay,ImU32 bg_col); +CIMGUI_API bool igTreeNodeBehavior(ImGuiID id,ImGuiTreeNodeFlags flags,const char* label,const char* label_end); +CIMGUI_API bool igTreeNodeBehaviorIsOpen(ImGuiID id,ImGuiTreeNodeFlags flags); +CIMGUI_API void igTreePushOverrideID(ImGuiID id); +CIMGUI_API const ImGuiDataTypeInfo* igDataTypeGetInfo(ImGuiDataType data_type); +CIMGUI_API int igDataTypeFormatString(char* buf,int buf_size,ImGuiDataType data_type,const void* p_data,const char* format); +CIMGUI_API void igDataTypeApplyOp(ImGuiDataType data_type,int op,void* output,const void* arg_1,const void* arg_2); +CIMGUI_API bool igDataTypeApplyFromText(const char* buf,ImGuiDataType data_type,void* p_data,const char* format); +CIMGUI_API int igDataTypeCompare(ImGuiDataType data_type,const void* arg_1,const void* arg_2); +CIMGUI_API bool igDataTypeClamp(ImGuiDataType data_type,void* p_data,const void* p_min,const void* p_max); +CIMGUI_API bool igInputTextEx(const char* label,const char* hint,char* buf,int buf_size,const ImVec2 size_arg,ImGuiInputTextFlags flags,ImGuiInputTextCallback callback,void* user_data); +CIMGUI_API bool igTempInputText(const ImRect bb,ImGuiID id,const char* label,char* buf,int buf_size,ImGuiInputTextFlags flags); +CIMGUI_API bool igTempInputScalar(const ImRect bb,ImGuiID id,const char* label,ImGuiDataType data_type,void* p_data,const char* format,const void* p_clamp_min,const void* p_clamp_max); +CIMGUI_API bool igTempInputIsActive(ImGuiID id); +CIMGUI_API ImGuiInputTextState* igGetInputTextState(ImGuiID id); +CIMGUI_API void igColorTooltip(const char* text,const float* col,ImGuiColorEditFlags flags); +CIMGUI_API void igColorEditOptionsPopup(const float* col,ImGuiColorEditFlags flags); +CIMGUI_API void igColorPickerOptionsPopup(const float* ref_col,ImGuiColorEditFlags flags); +CIMGUI_API int igPlotEx(ImGuiPlotType plot_type,const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 frame_size); +CIMGUI_API void igShadeVertsLinearColorGradientKeepAlpha(ImDrawList* draw_list,int vert_start_idx,int vert_end_idx,ImVec2 gradient_p0,ImVec2 gradient_p1,ImU32 col0,ImU32 col1); +CIMGUI_API void igShadeVertsLinearUV(ImDrawList* draw_list,int vert_start_idx,int vert_end_idx,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,bool clamp); +CIMGUI_API void igGcCompactTransientMiscBuffers(void); +CIMGUI_API void igGcCompactTransientWindowBuffers(ImGuiWindow* window); +CIMGUI_API void igGcAwakeTransientWindowBuffers(ImGuiWindow* window); +CIMGUI_API void igDebugLog(const char* fmt,...); +CIMGUI_API void igDebugLogV(const char* fmt,va_list args); +CIMGUI_API void igErrorCheckEndFrameRecover(ImGuiErrorLogCallback log_callback,void* user_data); +CIMGUI_API void igErrorCheckEndWindowRecover(ImGuiErrorLogCallback log_callback,void* user_data); +CIMGUI_API void igDebugDrawItemRect(ImU32 col); +CIMGUI_API void igDebugStartItemPicker(void); +CIMGUI_API void igShowFontAtlas(ImFontAtlas* atlas); +CIMGUI_API void igDebugHookIdInfo(ImGuiID id,ImGuiDataType data_type,const void* data_id,const void* data_id_end); +CIMGUI_API void igDebugNodeColumns(ImGuiOldColumns* columns); +CIMGUI_API void igDebugNodeDockNode(ImGuiDockNode* node,const char* label); +CIMGUI_API void igDebugNodeDrawList(ImGuiWindow* window,ImGuiViewportP* viewport,const ImDrawList* draw_list,const char* label); +CIMGUI_API void igDebugNodeDrawCmdShowMeshAndBoundingBox(ImDrawList* out_draw_list,const ImDrawList* draw_list,const ImDrawCmd* draw_cmd,bool show_mesh,bool show_aabb); +CIMGUI_API void igDebugNodeFont(ImFont* font); +CIMGUI_API void igDebugNodeFontGlyph(ImFont* font,const ImFontGlyph* glyph); +CIMGUI_API void igDebugNodeStorage(ImGuiStorage* storage,const char* label); +CIMGUI_API void igDebugNodeTabBar(ImGuiTabBar* tab_bar,const char* label); +CIMGUI_API void igDebugNodeTable(ImGuiTable* table); +CIMGUI_API void igDebugNodeTableSettings(ImGuiTableSettings* settings); +CIMGUI_API void igDebugNodeInputTextState(ImGuiInputTextState* state); +CIMGUI_API void igDebugNodeWindow(ImGuiWindow* window,const char* label); +CIMGUI_API void igDebugNodeWindowSettings(ImGuiWindowSettings* settings); +CIMGUI_API void igDebugNodeWindowsList(ImVector_ImGuiWindowPtr* windows,const char* label); +CIMGUI_API void igDebugNodeWindowsListByBeginStackParent(ImGuiWindow** windows,int windows_size,ImGuiWindow* parent_in_begin_stack); +CIMGUI_API void igDebugNodeViewport(ImGuiViewportP* viewport); +CIMGUI_API void igDebugRenderViewportThumbnail(ImDrawList* draw_list,ImGuiViewportP* viewport,const ImRect bb); +CIMGUI_API const ImFontBuilderIO* igImFontAtlasGetBuilderForStbTruetype(void); +CIMGUI_API void igImFontAtlasBuildInit(ImFontAtlas* atlas); +CIMGUI_API void igImFontAtlasBuildSetupFont(ImFontAtlas* atlas,ImFont* font,ImFontConfig* font_config,float ascent,float descent); +CIMGUI_API void igImFontAtlasBuildPackCustomRects(ImFontAtlas* atlas,void* stbrp_context_opaque); +CIMGUI_API void igImFontAtlasBuildFinish(ImFontAtlas* atlas); +CIMGUI_API void igImFontAtlasBuildRender8bppRectFromString(ImFontAtlas* atlas,int x,int y,int w,int h,const char* in_str,char in_marker_char,unsigned char in_marker_pixel_value); +CIMGUI_API void igImFontAtlasBuildRender32bppRectFromString(ImFontAtlas* atlas,int x,int y,int w,int h,const char* in_str,char in_marker_char,unsigned int in_marker_pixel_value); + diff --git a/engine/vkImgui/generator/generator.zig b/engine/_archive/vkImgui/generator/generator.zig similarity index 96% rename from engine/vkImgui/generator/generator.zig rename to engine/_archive/vkImgui/generator/generator.zig index 6843053..39e4125 100644 --- a/engine/vkImgui/generator/generator.zig +++ b/engine/_archive/vkImgui/generator/generator.zig @@ -1,173 +1,173 @@ -const std = @import("std"); - -pub const log_level: std.log.Level = .debug; - -const ProgramOptions = struct { - outputFile: ?[]u8 = null, - inputFile: ?[]u8 = null, - allocator: std.mem.Allocator, - - pub fn deinit(self: @This()) void { - if (self.outputFile) |f| { - self.allocator.free(f); - } - - if (self.inputFile) |f| { - self.allocator.free(f); - } - } - - fn matchArgOpt(arg: []const u8, long: []const u8, short: ?[]const u8) bool { - if (arg.len < 2) { - return false; - } - - if (arg[0] == '-') { - if (arg[1] == '-') { - return std.mem.eql(u8, arg[2..], long); - } else if (short) |s| { - return arg[1] == s[0]; - } - } - - return false; - } - - pub fn parseArgs(allocator: std.mem.Allocator) !@This() { - var rv: @This() = .{ .allocator = allocator }; - - const args = try std.process.argsAlloc(allocator); - defer std.process.argsFree(allocator, args); - - var i: usize = 0; - while (i < args.len) : (i += 1) { - if (i <= 0) { - continue; - } - - if (matchArgOpt(args[i], "input", "i")) { - i += 1; - rv.inputFile = try allocator.dupe(u8, args[i]); - } else if (matchArgOpt(args[i], "output", "o")) { - i += 1; - rv.outputFile = try allocator.dupe(u8, args[i]); - } - } - - if (rv.outputFile == null) { - rv.outputFile = try allocator.dupe(u8, "imgui.zig"); - } - - return rv; - } -}; - -// Parses out all of the cimgui functions and sorts them by calling type. - -const ParserContext = struct { - arena: std.heap.ArenaAllocator, - backingAllocator: std.mem.Allocator, - opts: *const ProgramOptions, - - read: []const u8 = undefined, - buffer: []const u8 = undefined, - - state: enum { - Empty, - Label, - Struct, - Function, - } = .Empty, - - pub fn create(allocator: std.mem.Allocator, options: *const ProgramOptions) !*@This() { - const self = try allocator.create(@This()); - - self.* = .{ - .backingAllocator = allocator, - .arena = std.heap.ArenaAllocator.init(allocator), - .opts = options, - }; - - return self; - } - - const ParseResults = struct {}; - - pub fn getAllocator(self: *@This()) std.mem.Allocator { - return self.arena.allocator(); - } - - fn matchString(self: *@This(), str: []const u8) ?usize { - if (self.read.len < str.len) { - return null; - } - - if (std.mem.eql(u8, self.read[0..str.len], str)) { - return str.len - 1; - } - return null; - } - - fn advanceEmpty(self: *@This()) !void { - if (self.matchString("struct")) |len| { - std.log.info("STRUCT FOUND! {s}", .{self.read[0 .. len + 1]}); - self.advance(len); - } - } - - inline fn next(self: *@This()) !void { - switch (self.state) { - .Empty => { - try self.advanceEmpty(); - }, - .Label => {}, - .Struct => {}, - .Function => {}, - } - - self.advance(1); - } - - inline fn advance(self: *@This(), count: usize) void { - self.read = self.read[count..]; - } - - pub fn parseHeader(self: *@This()) !ParseResults { - var file = try std.fs.cwd().openFile(self.opts.inputFile.?, .{}); - defer file.close(); - - self.buffer = try file.reader().readAllAlloc(self.getAllocator(), 1 * 1024 * 1024 * 1024); - self.read = self.buffer; - - while (self.read.len > 0) { - try self.next(); - } - - return .{}; - } - - pub fn destroy(self: *@This()) void { - self.arena.deinit(); - self.backingAllocator.destroy(self); - } -}; - -pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; - defer _ = gpa.deinit(); - - const allocator = gpa.allocator(); - - const opts = try ProgramOptions.parseArgs(allocator); - defer opts.deinit(); - - std.log.info("inputFile={?s}, outputFile={?s}", .{ - opts.inputFile, - opts.outputFile, - }); - - const tokenizer = try Tokenizer.create(allocator, &opts); - defer tokenizer.destroy(); - - const tokenizeResults = try tokenizer.tokenize(); -} +const std = @import("std"); + +pub const log_level: std.log.Level = .debug; + +const ProgramOptions = struct { + outputFile: ?[]u8 = null, + inputFile: ?[]u8 = null, + allocator: std.mem.Allocator, + + pub fn deinit(self: @This()) void { + if (self.outputFile) |f| { + self.allocator.free(f); + } + + if (self.inputFile) |f| { + self.allocator.free(f); + } + } + + fn matchArgOpt(arg: []const u8, long: []const u8, short: ?[]const u8) bool { + if (arg.len < 2) { + return false; + } + + if (arg[0] == '-') { + if (arg[1] == '-') { + return std.mem.eql(u8, arg[2..], long); + } else if (short) |s| { + return arg[1] == s[0]; + } + } + + return false; + } + + pub fn parseArgs(allocator: std.mem.Allocator) !@This() { + var rv: @This() = .{ .allocator = allocator }; + + const args = try std.process.argsAlloc(allocator); + defer std.process.argsFree(allocator, args); + + var i: usize = 0; + while (i < args.len) : (i += 1) { + if (i <= 0) { + continue; + } + + if (matchArgOpt(args[i], "input", "i")) { + i += 1; + rv.inputFile = try allocator.dupe(u8, args[i]); + } else if (matchArgOpt(args[i], "output", "o")) { + i += 1; + rv.outputFile = try allocator.dupe(u8, args[i]); + } + } + + if (rv.outputFile == null) { + rv.outputFile = try allocator.dupe(u8, "imgui.zig"); + } + + return rv; + } +}; + +// Parses out all of the cimgui functions and sorts them by calling type. + +const ParserContext = struct { + arena: std.heap.ArenaAllocator, + backingAllocator: std.mem.Allocator, + opts: *const ProgramOptions, + + read: []const u8 = undefined, + buffer: []const u8 = undefined, + + state: enum { + Empty, + Label, + Struct, + Function, + } = .Empty, + + pub fn create(allocator: std.mem.Allocator, options: *const ProgramOptions) !*@This() { + const self = try allocator.create(@This()); + + self.* = .{ + .backingAllocator = allocator, + .arena = std.heap.ArenaAllocator.init(allocator), + .opts = options, + }; + + return self; + } + + const ParseResults = struct {}; + + pub fn getAllocator(self: *@This()) std.mem.Allocator { + return self.arena.allocator(); + } + + fn matchString(self: *@This(), str: []const u8) ?usize { + if (self.read.len < str.len) { + return null; + } + + if (std.mem.eql(u8, self.read[0..str.len], str)) { + return str.len - 1; + } + return null; + } + + fn advanceEmpty(self: *@This()) !void { + if (self.matchString("struct")) |len| { + std.log.info("STRUCT FOUND! {s}", .{self.read[0 .. len + 1]}); + self.advance(len); + } + } + + inline fn next(self: *@This()) !void { + switch (self.state) { + .Empty => { + try self.advanceEmpty(); + }, + .Label => {}, + .Struct => {}, + .Function => {}, + } + + self.advance(1); + } + + inline fn advance(self: *@This(), count: usize) void { + self.read = self.read[count..]; + } + + pub fn parseHeader(self: *@This()) !ParseResults { + var file = try std.fs.cwd().openFile(self.opts.inputFile.?, .{}); + defer file.close(); + + self.buffer = try file.reader().readAllAlloc(self.getAllocator(), 1 * 1024 * 1024 * 1024); + self.read = self.buffer; + + while (self.read.len > 0) { + try self.next(); + } + + return .{}; + } + + pub fn destroy(self: *@This()) void { + self.arena.deinit(); + self.backingAllocator.destroy(self); + } +}; + +pub fn main() !void { + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + defer _ = gpa.deinit(); + + const allocator = gpa.allocator(); + + const opts = try ProgramOptions.parseArgs(allocator); + defer opts.deinit(); + + std.log.info("inputFile={?s}, outputFile={?s}", .{ + opts.inputFile, + opts.outputFile, + }); + + const tokenizer = try Tokenizer.create(allocator, &opts); + defer tokenizer.destroy(); + + const tokenizeResults = try tokenizer.tokenize(); +} diff --git a/engine/vkImgui/generator/out.txt b/engine/_archive/vkImgui/generator/out.txt similarity index 100% rename from engine/vkImgui/generator/out.txt rename to engine/_archive/vkImgui/generator/out.txt diff --git a/engine/vkImgui/src/cimgui.zig b/engine/_archive/vkImgui/src/cimgui.zig similarity index 97% rename from engine/vkImgui/src/cimgui.zig rename to engine/_archive/vkImgui/src/cimgui.zig index 560d163..1ff1859 100644 --- a/engine/vkImgui/src/cimgui.zig +++ b/engine/_archive/vkImgui/src/cimgui.zig @@ -1,4931 +1,4931 @@ -// manually crafted translation for cimgui to zig -const std = @import("std"); - -// ImVector_int == i32 in zig, -pub const ConstCharPtrVector = extern struct { - size: c_int, - capacity: c_int, - data: [*c][*c]const u8, -}; - -pub const CharVector = extern struct { - size: c_int, - capacity: c_int, - data: [*c][*c]u8, -}; - -pub const WcharVector = extern struct { // typedef struct ImVector_ImWchar { - size: c_int, - capacity: c_int, - data: [*c]Wchar, -}; - -const OldColumns = c_int; - -// ImVector typedefs -pub const VectorInt = c_int; // ImVector_Int - -// ImGui typedefs -// pub const Col = c_int; // ImGuiCol -// pub const Cond = c_int; // ImGuiCond -// pub const DataType = c_int; // ImGuiDataType -// pub const Dir = c_int; // ImGuiDir -// pub const Key = c_int; // ImGuiKey -// pub const NavInput = c_int; // ImGuiNavInput -// pub const MouseButton = c_int; // ImGuiMouseButton -// pub const MouseCursor = c_int; // ImGuiMouseCursor -// pub const SortDirection = c_int; // ImGuiSortDirection -// pub const StyleVar = c_int; // ImGuiStyleVar -// pub const TableBgTarget = c_int; // ImGuiTableBgTarget -// pub const BackendFlags = c_int; // ImGuiBackendFlags -// pub const ButtonFlags = c_int; // ImGuiButtonFlags -// pub const ColorEditFlags = c_int; // ImGuiColorEditFlags -// pub const ConfigFlags = c_int; // ImGuiConfigFlags -// pub const ComboFlags = c_int; // ImGuiComboFlags -// pub const DockNodeFlags = c_int; // ImGuiDockNodeFlags -// pub const DragDropFlags = c_int; // ImGuiDragDropFlags -// pub const FocusedFlags = c_int; // ImGuiFocusedFlags -// pub const HoveredFlags = c_int; // ImGuiHoveredFlags -// pub const InputTextFlags = c_int; // ImGuiInputTextFlags -// pub const ModFlags = c_int; // ImGuiModFlags -// pub const PopupFlags = c_int; // ImGuiPopupFlags -// pub const SelectableFlags = c_int; // ImGuiSelectableFlags -// pub const SliderFlags = c_int; // ImGuiSliderFlags -// pub const TabBarFlags = c_int; // ImGuiTabBarFlags -// pub const TabItemFlags = c_int; // ImGuiTabItemFlags -// pub const TableFlags = c_int; // ImGuiTableFlags -// pub const TableColumnFlags = c_int; // ImGuiTableColumnFlags -// pub const TableRowFlags = c_int; // ImGuiTableRowFlags -// pub const TreeNodeFlags = c_int; // ImGuiTreeNodeFlags -// pub const ViewportFlags = c_int; // ImGuiViewportFlags - -// Im typedefs -//pub const DrawFlags = c_int; // ImDrawFlags -// pub const DrawListFlags = c_int; // ImDrawListFlags -// pub const FontAtlasFlags = c_int; // ImFontAtlasFlags -// - -// Base Type Typedefs -pub const TextureID = ?*anyopaque; //ImTextureID; -pub const DrawIdx = c_ushort; //ImDrawIdx; -pub const ID = c_uint; // ImGuiID; -pub const S8 = i8; // ImS8; -pub const U8 = u8; // ImU8; -pub const S16 = c_short; // ImS16; -pub const U16 = c_ushort; // ImU16; -pub const S32 = c_int; // ImS32; -pub const U32 = c_uint; // ImU32; -pub const S64 = c_longlong; // ImS64; -pub const U64 = c_ulonglong; // ImU64; -pub const Wchar = c_ushort; // ImWchar; -pub const Wchar16 = c_ushort; // ImWchar16; -pub const Wchar32 = c_int; // ImWchar32; - -pub const InputTextCallback = *fn (data: *InputTextCallbackData) c_int; // ImGuiInputTextCallback -pub const SizeCallback = *fn (data: *SizeCallbackData) void; // ImGuiInputTextCallback -pub const MemAllocFunc = *fn (sz: usize, user_data: ?*anyopaque) ?*anyopaque; // ImGuiMemAllocFunc -pub const MemFreeFunc = *fn (ptr: ?*anyopaque, user_data: ?*anyopaque) void; // ImMemAllocFunction - -pub const Vec2 = extern struct { // ImVec2 - x: f32 = 0, - y: f32 = 0, -}; - -pub const Vec4 = extern struct { // ImVec4 - x: f32 = 0, - y: f32 = 0, - z: f32 = 0, - w: f32 = 0, -}; - -pub const WindowFlags = packed struct(c_int) { // ImGuiWindowFlags - no_title_bar: bool = false, - no_resize: bool = false, - no_move: bool = false, - no_scrollbar: bool = false, - no_scroll_with_mouse: bool = false, - no_collapse: bool = false, - always_auto_resize: bool = false, - no_background: bool = false, - no_saved_settings: bool = false, - no_mouse_inputs: bool = false, - menu_bar: bool = false, - horizontal_scrollbar: bool = false, - no_focus_on_appearing: bool = false, - no_bring_to_front_on_focus: bool = false, - always_vertical_scrollbar: bool = false, - always_horizontal_scrollbar: bool = false, - always_use_window_padding: bool = false, - no_nav_inputs: bool = false, - no_nav_focus: bool = false, - unsaved_document: bool = false, - no_docking: bool = false, - reserved: u11 = 0, // reserved, don't use - - pub const no_nav: @This() = .{ .no_nav_inputs = true, .no_nav_focus = true }; - pub const no_decoration: @This() = .{ .no_title_bar = true, .no_resize = true, .no_scrollbar = true, .no_collapse = true }; - pub const no_inputs: @This() = .{ .no_mouse_inputs = true, .no_nav_inputs = true, .no_nav_focus = true }; -}; - -pub const InputTextFlags = packed struct(c_int) { // ImGuiInputTextFlags - chars_decimal: bool = false, // ImGuiInputTextFlags_CharsDecimal = 1 << 0 - chars_hexadecimal: bool = false, // ImGuiInputTextFlags_CharsHexadecimal = 1 << 1 - chars_uppercase: bool = false, // ImGuiInputTextFlags_CharsUppercase = 1 << 2 - no_blank: bool = false, // ImGuiInputTextFlags_CharsNoBlank = 1 << 3 - auto_select_all: bool = false, // ImGuiInputTextFlags_AutoSelectAll = 1 << 4 - enter_returns_true: bool = false, // ImGuiInputTextFlags_EnterReturnsTrue = 1 << 5 - callback_completion: bool = false, // ImGuiInputTextFlags_CallbackCompletion = 1 << 6, - callback_history: bool = false, // ImGuiInputTextFlags_CallbackHistory = 1 << 7, - callback_always: bool = false, // ImGuiInputTextFlags_CallbackAlways = 1 << 8, - callback_char_filter: bool = false, // ImGuiInputTextFlags_CallbackCharFilter = 1 << 9, - allow_tab_input: bool = false, // ImGuiInputTextFlags_AllowTabInput = 1 << 10, - ctrl_enter_for_newline: bool = false, // ImGuiInputTextFlags_CtrlEnterForNewLine = 1 << 11, - no_horizontal_scroll: bool = false, // ImGuiInputTextFlags_NoHorizontalScroll = 1 << 12, - always_overwrite: bool = false, // ImGuiInputTextFlags_AlwaysOverwrite = 1 << 13, - read_only: bool = false, // ImGuiInputTextFlags_ReadOnly = 1 << 14, - password: bool = false, // ImGuiInputTextFlags_Password = 1 << 15, - no_undo_redo: bool = false, // ImGuiInputTextFlags_NoUndoRedo = 1 << 16, - chars_scientific: bool = false, // ImGuiInputTextFlags_CharsScientific = 1 << 17, - callback_resize: bool = false, // ImGuiInputTextFlags_CallbackResize = 1 << 18, - callback_edit: bool = false, // ImGuiInputTextFlags_CallbackEdit = 1 << 19 - reserved: u12 = 0, // reserved, don't use -}; - -pub const TreeNodeFlags = packed struct(c_int) { - selected: bool = false, // ImGuiTreeNodeFlags_Selected = 1 << 0, - framed: bool = false, // ImGuiTreeNodeFlags_Framed = 1 << 1, - allow_item_overlap: bool = false, // ImGuiTreeNodeFlags_AllowItemOverlap = 1 << 2, - no_tree_push_on_open: bool = false, // ImGuiTreeNodeFlags_NoTreePushOnOpen = 1 << 3, - no_auto_open_on_log: bool = false, // ImGuiTreeNodeFlags_NoAutoOpenOnLog = 1 << 4, - default_open: bool = false, // ImGuiTreeNodeFlags_DefaultOpen = 1 << 5, - open_on_double_click: bool = false, // ImGuiTreeNodeFlags_OpenOnDoubleClick = 1 << 6, - open_on_arrow: bool = false, // ImGuiTreeNodeFlags_OpenOnArrow = 1 << 7, - leaf: bool = false, // ImGuiTreeNodeFlags_Leaf = 1 << 8, - bullet: bool = false, // ImGuiTreeNodeFlags_Bullet = 1 << 9, - frame_padding: bool = false, // ImGuiTreeNodeFlags_FramePadding = 1 << 10, - span_avail_width: bool = false, // ImGuiTreeNodeFlags_SpanAvailWidth = 1 << 11, - span_full_width: bool = false, // ImGuiTreeNodeFlags_SpanFullWidth = 1 << 12, - nav_left_jumps_back_here: bool = false, // ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 1 << 13, - reserved: u18 = 0, // reserved, don't use - - pub const collapsing_header = .{ .framed = true, .no_tree_push_on_open = true, .no_auto_open_on_log = true }; -}; - -pub const PopupFlags = packed struct(c_int) { - mouse_button_left: bool = false, // ImGuiPopupFlags_MouseButtonLeft = 0, - mouse_button_right: bool = false, // ImGuiPopupFlags_MouseButtonRight = 1, - mouse_button_middle: bool = false, // ImGuiPopupFlags_MouseButtonMiddle = 2, - mouse_button_mask: bool = false, // ImGuiPopupFlags_MouseButtonMask_ = 0x1F, - mouse_button_default: bool = false, // ImGuiPopupFlags_MouseButtonDefault_ = 1, - no_open_over_existing_popup: bool = false, // ImGuiPopupFlags_NoOpenOverExistingPopup = 1 << 5, - no_open_over_items: bool = false, // ImGuiPopupFlags_NoOpenOverItems = 1 << 6, - any_popup_id: bool = false, // ImGuiPopupFlags_AnyPopupId = 1 << 7, - any_popup_level: bool = false, // ImGuiPopupFlags_AnyPopupLevel = 1 << 8, - reserved: u23 = 0, // reserved, don't use - - pub const any_popup = .{ .any_popup_id = true, .any_popup_level = true }; -}; - -pub const SelectableFlags = packed struct(c_int) { - dont_close_popups: bool = false, // ImGuiSelectableFlags_DontClosePopups = 1 << 0, - span_all_columns: bool = false, // ImGuiSelectableFlags_SpanAllColumns = 1 << 1, - allow_double_click: bool = false, // ImGuiSelectableFlags_AllowDoubleClick = 1 << 2, - disabled: bool = false, // ImGuiSelectableFlags_Disabled = 1 << 3, - allow_item_overlap: bool = false, // ImGuiSelectableFlags_AllowItemOverlap = 1 << 4 - reserved: u27 = 0, // reserved, don't use -}; - -pub const ComboFlags = packed struct(c_int) { - popup_align_left: bool = false, // ImGuiComboFlags_PopupAlignLeft = 1 << 0, - height_small: bool = false, // ImGuiComboFlags_HeightSmall = 1 << 1, - height_regular: bool = false, // ImGuiComboFlags_HeightRegular = 1 << 2, - height_large: bool = false, // ImGuiComboFlags_HeightLarge = 1 << 3, - height_largest: bool = false, // ImGuiComboFlags_HeightLargest = 1 << 4, - no_arrow_button: bool = false, // ImGuiComboFlags_NoArrowButton = 1 << 5, - no_preview: bool = false, // ImGuiComboFlags_NoPreview = 1 << 6, - reserved: u25 = 0, // reserved, don't use - - pub const height_mask = .{ .height_small = true, .height_regular = true, .height_large = true, .height_largest = true }; -}; - -pub const TabBarFlags = packed struct(c_int) { - reorderable: bool = false, // ImGuiTabBarFlags_Reorderable = 1 << 0, - auto_select_new_tabs: bool = false, // ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1, - tab_list_popup_button: bool = false, // ImGuiTabBarFlags_TabListPopupButton = 1 << 2, - no_close_with_middle_mouse_button: bool = false, // ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3, - no_tab_list_scrolling_buttons: bool = false, // ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4, - no_tooltip: bool = false, // ImGuiTabBarFlags_NoTooltip = 1 << 5, - fitting_policy_resize_down: bool = false, // ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 6, - fitting_policy_scroll: bool = false, // ImGuiTabBarFlags_FittingPolicyScroll = 1 << 7, - reserved: u24 = 0, // reserved, don't use - - pub const fitting_policy_mask = .{ .fitting_policy_resize_down = true, .fitting_policy_scroll = true }; - pub const fitting_policy_default = .{ .fitting_policy_resize_down = true }; -}; - -pub const TabItemFlags = packed struct(c_int) { - unsaved_document: bool = false, // ImGuiTabItemFlags_UnsavedDocument = 1 << 0, - set_selected: bool = false, // ImGuiTabItemFlags_SetSelected = 1 << 1, - no_close_with_middle_mouse_button: bool = false, // ImGuiTabItemFlags_NoCloseWithMiddleMouseButton = 1 << 2, - no_push_id: bool = false, // ImGuiTabItemFlags_NoPushId = 1 << 3, - no_tooltip: bool = false, // ImGuiTabItemFlags_NoTooltip = 1 << 4, - no_reorder: bool = false, // ImGuiTabItemFlags_NoReorder = 1 << 5, - leading: bool = false, // ImGuiTabItemFlags_Leading = 1 << 6, - trailing: bool = false, // ImGuiTabItemFlags_Trailing = 1 << 7 - reserved: u24 = 0, // reserved, don't use -}; - -pub const TableFlags = packed struct(c_int) { - resizable: bool = false, // ImGuiTableFlags_Resizable = 1 << 0, - reorderable: bool = false, // ImGuiTableFlags_Reorderable = 1 << 1, - hideable: bool = false, // ImGuiTableFlags_Hideable = 1 << 2, - sortable: bool = false, // ImGuiTableFlags_Sortable = 1 << 3, - no_saved_settings: bool = false, // ImGuiTableFlags_NoSavedSettings = 1 << 4, - context_menu_in_body: bool = false, // ImGuiTableFlags_ContextMenuInBody = 1 << 5, - row_bg: bool = false, // ImGuiTableFlags_RowBg = 1 << 6, - borders_inner_h: bool = false, // ImGuiTableFlags_BordersInnerH = 1 << 7, - borders_outer_h: bool = false, // ImGuiTableFlags_BordersOuterH = 1 << 8, - borders_inner_v: bool = false, // ImGuiTableFlags_BordersInnerV = 1 << 9, - borders_outer_v: bool = false, // ImGuiTableFlags_BordersOuterV = 1 << 10, - no_borders_in_body: bool = false, // ImGuiTableFlags_NoBordersInBody = 1 << 11, - no_borders_in_body_until_resize: bool = false, // ImGuiTableFlags_NoBordersInBodyUntilResize = 1 << 12, - sizing_fixed_fit: bool = false, // ImGuiTableFlags_SizingFixedFit = 1 << 13, - sizing_fixed_same: bool = false, // ImGuiTableFlags_SizingFixedSame = 2 << 13, - sizing_stretch_prop: bool = false, // ImGuiTableFlags_SizingStretchProp = 3 << 13, - sizing_stretch_same: bool = false, // ImGuiTableFlags_SizingStretchSame = 4 << 13, - no_host_extend_x: bool = false, // ImGuiTableFlags_NoHostExtendX = 1 << 16, - no_host_extend_y: bool = false, // ImGuiTableFlags_NoHostExtendY = 1 << 17, - no_keep_columns_visible: bool = false, // ImGuiTableFlags_NoKeepColumnsVisible = 1 << 18, - precise_widths: bool = false, // ImGuiTableFlags_PreciseWidths = 1 << 19, - no_clip: bool = false, // ImGuiTableFlags_NoClip = 1 << 20, - pad_outer_x: bool = false, // ImGuiTableFlags_PadOuterX = 1 << 21, - no_pad_outer_x: bool = false, // ImGuiTableFlags_NoPadOuterX = 1 << 22, - no_pad_inner_x: bool = false, // ImGuiTableFlags_NoPadInnerX = 1 << 23, - scroll_x: bool = false, // ImGuiTableFlags_ScrollX = 1 << 24, - scroll_y: bool = false, // ImGuiTableFlags_ScrollY = 1 << 25, - sort_multi: bool = false, // ImGuiTableFlags_SortMulti = 1 << 26, - sort_tristate: bool = false, // ImGuiTableFlags_SortTristate = 1 << 27, - reserved: u4 = 0, - - pub const borders_h = .{ .borders_inner_h = true, .borders_outer_h = true }; - pub const borders_v = .{ .borders_inner_v = true, .borders_outer_v = true }; - pub const borders_inner = .{ .borders_inner_v = true, .borders_inner_h = true }; - pub const borders_outer = .{ .borders_outer_v = true, .borders_outer_h = true }; - pub const borders = .{ .borders_inner = true, .borders_outer = true }; - pub const sizing_mask = .{ .sizing_fixed_fit = true, .sizing_fixed_same = true, .sizing_stretch_prop = true, .sizing_stretch_same = true }; -}; - -pub const TableColumnFlags = packed struct(c_int) { - disabled: bool = false, // ImGuiTableColumnFlags_Disabled = 1 << 0, - default_hide: bool = false, // ImGuiTableColumnFlags_DefaultHide = 1 << 1, - default_sort: bool = false, // ImGuiTableColumnFlags_DefaultSort = 1 << 2, - width_stretch: bool = false, // ImGuiTableColumnFlags_WidthStretch = 1 << 3, - width_fixed: bool = false, // ImGuiTableColumnFlags_WidthFixed = 1 << 4, - no_resize: bool = false, // ImGuiTableColumnFlags_NoResize = 1 << 5, - no_reorder: bool = false, // ImGuiTableColumnFlags_NoReorder = 1 << 6, - no_hide: bool = false, // ImGuiTableColumnFlags_NoHide = 1 << 7, - no_clip: bool = false, // ImGuiTableColumnFlags_NoClip = 1 << 8, - no_sort: bool = false, // ImGuiTableColumnFlags_NoSort = 1 << 9, - no_sort_ascending: bool = false, // ImGuiTableColumnFlags_NoSortAscending = 1 << 10, - no_sort_descending: bool = false, // ImGuiTableColumnFlags_NoSortDescending = 1 << 11, - no_header_label: bool = false, // ImGuiTableColumnFlags_NoHeaderLabel = 1 << 12, - no_header_width: bool = false, // ImGuiTableColumnFlags_NoHeaderWidth = 1 << 13, - prefer_sort_ascending: bool = false, // ImGuiTableColumnFlags_PreferSortAscending = 1 << 14, - prefer_sort_descending: bool = false, // ImGuiTableColumnFlags_PreferSortDescending = 1 << 15, - indent_enable: bool = false, // ImGuiTableColumnFlags_IndentEnable = 1 << 16, - indent_disable: bool = false, // ImGuiTableColumnFlags_IndentDisable = 1 << 17, - is_enabled: bool = false, // ImGuiTableColumnFlags_IsEnabled = 1 << 24, - is_visible: bool = false, // ImGuiTableColumnFlags_IsVisible = 1 << 25, - is_sorted: bool = false, // ImGuiTableColumnFlags_IsSorted = 1 << 26, - is_hovered: bool = false, // ImGuiTableColumnFlags_IsHovered = 1 << 27, - no_direct_resize: bool = false, // ImGuiTableColumnFlags_NoDirectResize_ = 1 << 30 - reserved: u2 = 0, - - pub const width_mask = .{ .width_stretch = true, .width_fixed = true }; - pub const indent_mask = .{ .indent_enable = true, .indent_disable = true }; - pub const status_mask = .{ .is_enabled = true, .is_visible = true, .is_sorted = true, .is_hovered = true }; -}; - -pub const TableRowFlags = packed struct(c_int) { - headers: bool = false, // ImGuiTableRowFlags_Headers = 1 << 0 - reserved: u31 = 0, -}; - -pub const TableBgTarget = packed struct(c_int) { - row_bg0: bool = false, // ImGuiTableBgTarget_RowBg0 = 1, - row_bg1: bool = false, // ImGuiTableBgTarget_RowBg1 = 2, - cell_bg: bool = false, // ImGuiTableBgTarget_CellBg = 3 - reserved: u29 = 0, // reserved, don't use -}; -pub const FocusedFlags = packed struct(c_int) { - child_windows: bool = false, // ImGuiFocusedFlags_ChildWindows = 1 << 0, - root_window: bool = false, // ImGuiFocusedFlags_RootWindow = 1 << 1, - any_window: bool = false, // ImGuiFocusedFlags_AnyWindow = 1 << 2, - no_popup_hierarchy: bool = false, // ImGuiFocusedFlags_NoPopupHierarchy = 1 << 3, - dock_hierarchy: bool = false, // ImGuiFocusedFlags_DockHierarchy = 1 << 4, - reserved: u27 = 0, // reserved, don't use - - pub const root_and_child_windows = .{ .root_window = true, .child_windows = true }; -}; -pub const HoveredFlags = packed struct(c_int) { - child_windows: bool = false, // ImGuiHoveredFlags_ChildWindows = 1 << 0, - root_window: bool = false, // ImGuiHoveredFlags_RootWindow = 1 << 1, - any_window: bool = false, // ImGuiHoveredFlags_AnyWindow = 1 << 2, - no_popup_hierarchy: bool = false, // ImGuiHoveredFlags_NoPopupHierarchy = 1 << 3, - dock_hierarchy: bool = false, // ImGuiHoveredFlags_DockHierarchy = 1 << 4, - allow_when_blocked_by_popup: bool = false, // ImGuiHoveredFlags_AllowWhenBlockedByPopup = 1 << 5, - allow_when_blocked_by_active_item: bool = false, // ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = 1 << 7, - allow_when_overlapped: bool = false, // ImGuiHoveredFlags_AllowWhenOverlapped = 1 << 8, - allow_when_disabled: bool = false, // ImGuiHoveredFlags_AllowWhenDisabled = 1 << 9, - no_nav_override: bool = false, // ImGuiHoveredFlags_NoNavOverride = 1 << 10, - reserved: u22 = 0, // reserved, don't use - - pub const rect_only = .{ .allow_when_blocked_by_popup = true, .allow_when_blocked_by_active_item = true, .allow_when_overlapped = true }; - pub const root_and_child_windows = .{ .root_window = true, .child_windows = true }; -}; -pub const DockNodeFlags = packed struct(c_int) { - keep_alive_only: bool = false, // ImGuiDockNodeFlags_KeepAliveOnly = 1 << 0, - no_docking_in_central_node: bool = false, // ImGuiDockNodeFlags_NoDockingInCentralNode = 1 << 2, - passthru_central_node: bool = false, // ImGuiDockNodeFlags_PassthruCentralNode = 1 << 3, - no_split: bool = false, // ImGuiDockNodeFlags_NoSplit = 1 << 4, - no_resize: bool = false, // ImGuiDockNodeFlags_NoResize = 1 << 5, - auto_hide_tab_bar: bool = false, // ImGuiDockNodeFlags_AutoHideTabBar = 1 << 6 - reserved: u26 = 0, // reserved, don't use -}; -pub const DragDropFlags = packed struct(c_int) { - source_no_preview_tooltip: bool = false, // ImGuiDragDropFlags_SourceNoPreviewTooltip = 1 << 0, - source_no_disable_hover: bool = false, // ImGuiDragDropFlags_SourceNoDisableHover = 1 << 1, - source_no_hold_to_open_others: bool = false, // ImGuiDragDropFlags_SourceNoHoldToOpenOthers = 1 << 2, - source_allow_null_i_d: bool = false, // ImGuiDragDropFlags_SourceAllowNullID = 1 << 3, - source_extern: bool = false, // ImGuiDragDropFlags_SourceExtern = 1 << 4, - source_auto_expire_payload: bool = false, // ImGuiDragDropFlags_SourceAutoExpirePayload = 1 << 5, - accept_before_delivery: bool = false, // ImGuiDragDropFlags_AcceptBeforeDelivery = 1 << 10, - accept_no_draw_default_rect: bool = false, // ImGuiDragDropFlags_AcceptNoDrawDefaultRect = 1 << 11, - accept_no_preview_tooltip: bool = false, // ImGuiDragDropFlags_AcceptNoPreviewTooltip = 1 << 12, - reserved: u23 = 0, // reserved, don't use - - pub const accept_peek_only = .{ .accept_before_delivery = true, .accept_no_draw_default_rect = true }; -}; - -// this is the only one that breaks naming schemes to keep it consistent -pub const DataType = enum(c_int) { - S8, - U8, - S16, - U16, - S32, - U32, - S64, - U64, - Float, - Double, - COUNT, - _, -}; - -pub const DataTypePrivate = enum(c_int) { - String = DataType.COUNT, - Pointer, - ID, - _, -}; - -pub const Dir = enum(c_int) { - none = -1, - left = 0, - right = 1, - up = 2, - down = 3, - _, -}; -pub const SortDirection = enum(c_int) { - none = 0, - ascending = 1, - descending = 2, - _, -}; - -pub const Key = enum(c_int) { - None = 0, - Tab = 512, - LeftArrow, - RightArrow, - UpArrow, - DownArrow, - PageUp, - PageDown, - Home, - End, - Insert, - Delete, - Backspace, - Space, - Enter, - Escape, - LeftCtrl, - LeftShift, - LeftAlt, - LeftSuper, - RightCtrl, - RightShift, - RightAlt, - RightSuper, - Menu, - @"0", - @"1", - @"2", - @"3", - @"4", - @"5", - @"6", - @"7", - @"8", - @"9", - A, - B, - C, - D, - E, - F, - G, - H, - I, - J, - K, - L, - M, - N, - O, - P, - Q, - R, - S, - T, - U, - V, - W, - X, - Y, - Z, - F1, - F2, - F3, - F4, - F5, - F6, - F7, - F8, - F9, - F10, - F11, - F12, - Apostrophe, - Comma, - Minus, - Period, - Slash, - Semicolon, - Equal, - LeftBracket, - Backslash, - RightBracket, - GraveAccent, - CapsLock, - ScrollLock, - NumLock, - PrintScreen, - Pause, - Keypad0, - Keypad1, - Keypad2, - Keypad3, - Keypad4, - Keypad5, - Keypad6, - Keypad7, - Keypad8, - Keypad9, - KeypadDecimal, - KeypadDivide, - KeypadMultiply, - KeypadSubtract, - KeypadAdd, - KeypadEnter, - KeypadEqual, - GamepadStart, - GamepadBack, - GamepadFaceUp, - GamepadFaceDown, - GamepadFaceLeft, - GamepadFaceRight, - GamepadDpadUp, - GamepadDpadDown, - GamepadDpadLeft, - GamepadDpadRight, - GamepadL1, - GamepadR1, - GamepadL2, - GamepadR2, - GamepadL3, - GamepadR3, - GamepadLStickUp, - GamepadLStickDown, - GamepadLStickLeft, - GamepadLStickRight, - GamepadRStickUp, - GamepadRStickDown, - GamepadRStickLeft, - GamepadRStickRight, - ModCtrl, - ModShift, - ModAlt, - ModSuper, - COUNT, - _, - // todo: figure this out. - // NamedKey_BEGIN = 512, - // NamedKey_END = Key.COUNT, - // NamedKey_COUNT = Key.NamedKey_END - Key.NamedKey_BEGIN, - // KeysData_SIZE = Key.COUNT, - // KeysData_OFFSET = 0, -}; - -pub const NamedKeyCOUNT = Key.COUNT - 512; - -pub const KeyPrivate = enum(c_int) { - LegacyNative_BEGIN = 0, - LegacyNative_END = 512, - ImGuiKey_Gamepad_BEGIN = Key.GamepadStart, - ImGuiKey_Gamepad_END = Key.GamepadRStickRight + 1, -}; - -pub const InputEventType = enum(c_int) { - None = 0, - MousePos, - MouseWheel, - MouseButton, - MouseViewport, - Key, - Text, - Focus, - COUNT, - _, -}; - -pub const InputSource = enum(c_int) { - None = 0, - Mouse, - Keyboard, - Gamepad, - Clipboard, - Nav, - COUNT, - _, -}; - -pub const NavReadMode = enum(c_int) { - Down, - Pressed, - Released, - Repeat, - RepeatSlow, - RepeatFast, - _, -}; - -pub const ModFlags = packed struct(c_int) { - ctrl: bool = false, // ImGuiModFlags_Ctrl = 1 << 0, - shift: bool = false, // ImGuiModFlags_Shift = 1 << 1, - alt: bool = false, // ImGuiModFlags_Alt = 1 << 2, - super: bool = false, // ImGuiModFlags_Super = 1 << 3 - reserved: u28 = 0, // reserved, don't use -}; - -pub const NavInput = enum(c_int) { - Activate, - Cancel, - Input, - Menu, - DpadLeft, - DpadRight, - DpadUp, - DpadDown, - LStickLeft, - LStickRight, - LStickUp, - LStickDown, - FocusPrev, - FocusNext, - TweakSlow, - TweakFast, - KeyLeft, - KeyRight, - KeyUp, - KeyDown, - COUNT, - _, -}; - -pub const ConfigFlags = packed struct(c_int) { - nav_enable_keyboard: bool = false, // ImGuiConfigFlags_NavEnableKeyboard = 1 << 0, - nav_enable_gamepad: bool = false, // ImGuiConfigFlags_NavEnableGamepad = 1 << 1, - nav_enable_set_mouse_pos: bool = false, // ImGuiConfigFlags_NavEnableSetMousePos = 1 << 2, - nav_no_capture_keyboard: bool = false, // ImGuiConfigFlags_NavNoCaptureKeyboard = 1 << 3, - no_mouse: bool = false, // ImGuiConfigFlags_NoMouse = 1 << 4, - no_mouse_cursor_change: bool = false, // ImGuiConfigFlags_NoMouseCursorChange = 1 << 5, - docking_enable: bool = false, // ImGuiConfigFlags_DockingEnable = 1 << 6, - viewports_enable: bool = false, // ImGuiConfigFlags_ViewportsEnable = 1 << 10, - dpi_enable_scale_viewports: bool = false, // ImGuiConfigFlags_DpiEnableScaleViewports = 1 << 14, - dpi_enable_scale_fonts: bool = false, // ImGuiConfigFlags_DpiEnableScaleFonts = 1 << 15, - is_s_r_g_b: bool = false, // ImGuiConfigFlags_IsSRGB = 1 << 20, - is_touch_screen: bool = false, // ImGuiConfigFlags_IsTouchScreen = 1 << 21 - reserved: u20 = 0, // reserved, don't use -}; - -pub const BackendFlags = packed struct(c_int) { - has_gamepad: bool = false, // ImGuiBackendFlags_HasGamepad = 1 << 0, - has_mouse_cursors: bool = false, // ImGuiBackendFlags_HasMouseCursors = 1 << 1, - has_set_mouse_pos: bool = false, // ImGuiBackendFlags_HasSetMousePos = 1 << 2, - renderer_has_vtx_offset: bool = false, // ImGuiBackendFlags_RendererHasVtxOffset = 1 << 3, - platform_has_viewports: bool = false, // ImGuiBackendFlags_PlatformHasViewports = 1 << 10, - has_mouse_hovered_viewport: bool = false, // ImGuiBackendFlags_HasMouseHoveredViewport=1 << 11, - renderer_has_viewports: bool = false, // ImGuiBackendFlags_RendererHasViewports = 1 << 12 - reserved: u25 = 0, // reserved, don't use -}; - -pub const StyleColor = enum(c_int) { // ImGuiCol - Text, - TextDisabled, - WindowBg, - ChildBg, - PopupBg, - Border, - BorderShadow, - FrameBg, - FrameBgHovered, - FrameBgActive, - TitleBg, - TitleBgActive, - TitleBgCollapsed, - MenuBarBg, - ScrollbarBg, - ScrollbarGrab, - ScrollbarGrabHovered, - ScrollbarGrabActive, - CheckMark, - SliderGrab, - SliderGrabActive, - Button, - ButtonHovered, - ButtonActive, - Header, - HeaderHovered, - HeaderActive, - Separator, - SeparatorHovered, - SeparatorActive, - ResizeGrip, - ResizeGripHovered, - ResizeGripActive, - Tab, - TabHovered, - TabActive, - TabUnfocused, - TabUnfocusedActive, - DockingPreview, - DockingEmptyBg, - PlotLines, - PlotLinesHovered, - PlotHistogram, - PlotHistogramHovered, - TableHeaderBg, - TableBorderStrong, - TableBorderLight, - TableRowBg, - TableRowBgAlt, - TextSelectedBg, - DragDropTarget, - NavHighlight, - NavWindowingHighlight, - NavWindowingDimBg, - ModalWindowDimBg, - COUNT, - _, -}; - -pub const StyleVar = enum(c_int) { - Alpha, - DisabledAlpha, - WindowPadding, - WindowRounding, - WindowBorderSize, - WindowMinSize, - WindowTitleAlign, - ChildRounding, - ChildBorderSize, - PopupRounding, - PopupBorderSize, - FramePadding, - FrameRounding, - FrameBorderSize, - ItemSpacing, - ItemInnerSpacing, - IndentSpacing, - CellPadding, - ScrollbarSize, - ScrollbarRounding, - GrabMinSize, - GrabRounding, - TabRounding, - ButtonTextAlign, - SelectableTextAlign, - COUNT, - _, -}; - -pub const ColorEditFlags = packed struct(c_int) { - no_alpha: bool = false, // ImGuiColorEditFlags_NoAlpha = 1 << 1, - no_picker: bool = false, // ImGuiColorEditFlags_NoPicker = 1 << 2, - no_options: bool = false, // ImGuiColorEditFlags_NoOptions = 1 << 3, - no_small_preview: bool = false, // ImGuiColorEditFlags_NoSmallPreview = 1 << 4, - no_inputs: bool = false, // ImGuiColorEditFlags_NoInputs = 1 << 5, - no_tooltip: bool = false, // ImGuiColorEditFlags_NoTooltip = 1 << 6, - no_label: bool = false, // ImGuiColorEditFlags_NoLabel = 1 << 7, - no_side_preview: bool = false, // ImGuiColorEditFlags_NoSidePreview = 1 << 8, - no_drag_drop: bool = false, // ImGuiColorEditFlags_NoDragDrop = 1 << 9, - no_border: bool = false, // ImGuiColorEditFlags_NoBorder = 1 << 10, - alpha_bar: bool = false, // ImGuiColorEditFlags_AlphaBar = 1 << 16, - alpha_preview: bool = false, // ImGuiColorEditFlags_AlphaPreview = 1 << 17, - alpha_preview_half: bool = false, // ImGuiColorEditFlags_AlphaPreviewHalf= 1 << 18, - h_d_r: bool = false, // ImGuiColorEditFlags_HDR = 1 << 19, - display_r_g_b: bool = false, // ImGuiColorEditFlags_DisplayRGB = 1 << 20, - display_h_s_v: bool = false, // ImGuiColorEditFlags_DisplayHSV = 1 << 21, - display_hex: bool = false, // ImGuiColorEditFlags_DisplayHex = 1 << 22, - uint8: bool = false, // ImGuiColorEditFlags_Uint8 = 1 << 23, - float: bool = false, // ImGuiColorEditFlags_Float = 1 << 24, - picker_hue_bar: bool = false, // ImGuiColorEditFlags_PickerHueBar = 1 << 25, - picker_hue_wheel: bool = false, // ImGuiColorEditFlags_PickerHueWheel = 1 << 26, - input_r_g_b: bool = false, // ImGuiColorEditFlags_InputRGB = 1 << 27, - input_h_s_v: bool = false, // ImGuiColorEditFlags_InputHSV = 1 << 28, - reserved: u9 = 0, // reserved, don't use - - pub const default_options = .{ .uint8 = true, .display_r_g_b = true, .input_r_g_b = true, .picker_hue_bar = true }; - pub const display_mask = .{ .display_r_g_b = true, .display_h_s_v = true, .display_hex = true }; - pub const data_type_mask = .{ .uint8 = true, .float = true }; - pub const picker_mask = .{ .picker_hue_wheel = true, .picker_hue_bar = true }; - pub const input_mask = .{ .input_r_g_b = true, .input_h_s_v = true }; -}; - -pub const ButtonFlags = packed struct(c_int) { - mouse_button_left: bool = false, // ImGuiButtonFlags_MouseButtonLeft = 1 << 0, - mouse_button_right: bool = false, // ImGuiButtonFlags_MouseButtonRight = 1 << 1, - mouse_button_middle: bool = false, // ImGuiButtonFlags_MouseButtonMiddle = 1 << 2, - reserved: u29 = 0, // reserved, don't use - - pub const mouse_button_mask = .{ .mouse_button_left = true, .mouse_button_right = true, .mouse_button_middle = true }; - pub const mouse_button_default = .{ .mouse_button_left = true }; -}; - -pub const SliderFlags = packed struct(c_int) { - always_clamp: bool = false, // ImGuiSliderFlags_AlwaysClamp = 1 << 4, - logarithmic: bool = false, // ImGuiSliderFlags_Logarithmic = 1 << 5, - no_round_to_format: bool = false, // ImGuiSliderFlags_NoRoundToFormat = 1 << 6, - no_input: bool = false, // ImGuiSliderFlags_NoInput = 1 << 7, - reserved: u28 = 0, // reserved, don't use - - pub const InvalidMask: @This() = @bitCast(@as(c_int, 0x7000000F)); -}; - -pub const MouseButton = enum(c_int) { - Left = 0, - Right = 1, - Middle = 2, - COUNT = 5, - _, -}; - -pub const MouseCursor = enum(c_int) { - None = -1, - Arrow = 0, - TextInput, - ResizeAll, - ResizeNS, - ResizeEW, - ResizeNESW, - ResizeNWSE, - Hand, - NotAllowed, - COUNT, - _, -}; - -pub const Cond = packed struct(c_int) { - always: bool = false, // ImGuiCond_Always = 1 << 0, - once: bool = false, // ImGuiCond_Once = 1 << 1, - first_use_ever: bool = false, // ImGuiCond_FirstUseEver = 1 << 2, - appearing: bool = false, // ImGuiCond_Appearing = 1 << 3 - reserved: u28 = 0, // reserved, don't use -}; - -pub const Style = extern struct { - alpha: f32, - disabled_alpha: f32, - window_padding: Vec2, - window_rounding: f32, - window_border_size: f32, - window_min_size: Vec2, - window_title_align: Vec2, - window_menu_button_position: Dir, - child_rounding: f32, - child_border_size: f32, - popup_rounding: f32, - popup_border_size: f32, - frame_padding: Vec2, - frame_rounding: f32, - frame_border_size: f32, - item_spacing: Vec2, - item_inner_spacing: Vec2, - cell_padding: Vec2, - touch_extra_padding: Vec2, - indent_spacing: f32, - columns_min_spacing: f32, - scrollbar_size: f32, - scrollbar_rounding: f32, - grab_min_size: f32, - grab_rounding: f32, - log_slider_deadzone: f32, - tab_rounding: f32, - tab_border_size: f32, - tab_min_width_for_close_button: f32, - color_button_position: Dir, - button_text_align: Vec2, - selectable_text_align: Vec2, - display_window_padding: Vec2, - display_safe_area_padding: Vec2, - mouse_cursor_scale: f32, - anti_aliased_lines: bool, - anti_aliased_lines_use_tex: bool, - anti_aliased_fill: bool, - curve_tessellation_tol: f32, - circle_tessellation_max_error: f32, - colors: [@as(usize, @intFromEnum(StyleColor.COUNT))]Vec4, - - pub inline fn setColor(self: *@This(), colorId: StyleColor, newColor: Vec4) void { - self.colors[@as(usize, @intCast(@intFromEnum(colorId)))] = newColor; - } -}; - -pub const KeyData = extern struct { // struct ImGuiKeyData - down: bool, - down_duration: f32, - down_duration_prev: f32, - analog_value: f32, -}; - -pub const FontAtlas = extern struct { // struct ImFontAtlas - flags: FontAtlasFlags, - tex_i_d: TextureID, - tex_desired_width: c_int, - tex_glyph_padding: c_int, - locked: bool, - tex_ready: bool, - tex_pixels_use_colors: bool, - tex_pixels_alpha8: [*c]u8, - tex_pixels_rgba32: [*c]c_int, - tex_width: c_int, - tex_height: c_int, - tex_uv_scale: Vec2, - tex_uv_white_pixel: Vec2, - fonts: FontPtrVector, - custom_rects: FontAtlasCustomRect, - font_config: FontConfig, - tex_uv_lines: [64]Vec4, - font_builder_io: [*c]const FontBuilderIO, - font_builder_flags: c_uint, - pack_id_mouse_cursors: c_int, - pack_id_lines: c_int, -}; - -pub const FontAtlasCustomRect = extern struct { // struct ImFontAtlasCustomRect - width: c_short, - height: c_short, - x: c_short, - y: c_short, - glyph_id: c_uint, - glyph_advance_x: f32, - glyph_offset: i32, - font: [*c]Font, -}; - -pub const FontConfig = extern struct { // struct ImFontConfig - font_data: ?*anyopaque, - font_data_size: c_int, - font_data_owned_by_atlas: bool, - font_no: c_int, - size_pixels: f32, - oversample_h: c_int, - oversample_v: c_int, - pixel_snap_h: bool, - glyph_extra_spacing: Vec2, - glyph_offset: Vec2, - glyph_ranges: [*c]const Wchar, - glyph_min_advance_x: f32, - glyph_max_advance_y: f32, - merge_mode: bool, - font_builder_flags: c_uint, - rasterizer_multiply: f32, - ellipsis_char: Wchar, - name: [40]u8, - dst_font: [*c]Font, -}; - -pub const Io = extern struct { - config_flags: ConfigFlags, // ImGuiConfigFlags ConfigFlags; - backend_flags: BackendFlags, // ImGuiBackendFlags BackendFlags; - display_size: Vec2, // ImVec2 DisplaySize; - delta_time: f32, // float DeltaTime; - ini_saving_rate: f32, // float IniSavingRate; - ini_file_name: [*c]const u8, // const char* IniFilename; - log_filename: [*c]const u8, // const char* LogFilename; - mouse_double_click_time: f32, // float MouseDoubleClickTime; - mouse_double_click_max_dist: f32, // float MouseDoubleClickMaxDist; - mouse_drag_threshold: f32, // float MouseDragThreshold; - key_repeat_delay: f32, // float KeyRepeatDelay; - key_repeat_rate: f32, // float KeyRepeatRate; - user_data: ?*anyopaque, // void* UserData; - fonts: [*c]FontAtlas, // ImFontAtlas*Fonts; - font_global_scale: f32, // float FontGlobalScale; - font_allow_user_scaling: bool, // bool FontAllowUserScaling; - font_default: ?*anyopaque, // ImFont* FontDefault; - display_framebuffer_scale: Vec2, // ImVec2 DisplayFramebufferScale; - config_docking_no_split: bool, // bool ConfigDockingNoSplit; - config_docking_with_shift: bool, // bool ConfigDockingWithShift; - cofig_docking_always_tab_bar: bool, // bool ConfigDockingAlwaysTabBar; - config_docking_transparent_payload: bool, // bool ConfigDockingTransparentPayload; - config_viewports_no_auto_merge: bool, // bool ConfigViewportsNoAutoMerge; - config_viewports_no_task_bar_icon: bool, // bool ConfigViewportsNoTaskBarIcon; - config_viewports_no_decoration: bool, // bool ConfigViewportsNoDecoration; - config_viewports_no_default_parent: bool, // bool ConfigViewportsNoDefaultParent; - mouse_draw_cursor: bool, // bool MouseDrawCursor; - config_macosx_behaviours: bool, // bool ConfigMacOSXBehaviors; - config_input_trickle_event_queue: bool, // bool ConfigInputTrickleEventQueue; - config_input_text_cursor_blink: bool, // bool ConfigInputTextCursorBlink; - config_drag_click_to_input_text: bool, // bool ConfigDragClickToInputText; - config_windows_resize_from_edges: bool, // bool ConfigWindowsResizeFromEdges; - config_windows_move_from_title_bar_only: bool, // bool ConfigWindowsMoveFromTitleBarOnly; - config_memory_compact_timer: f32, // float ConfigMemoryCompactTimer; - backend_platform_name: [*c]const u8, // const char* BackendPlatformName; - backend_renderer_name: [*c]const u8, // const char* BackendRendererName; - backend_platform_user_data: ?*anyopaque, // void* BackendPlatformUserData; - backend_renderer_user_data: ?*anyopaque, // void* BackendRendererUserData; - backend_language_user_data: ?*anyopaque, // void* BackendLanguageUserData; - // - // const char* (*GetClipboardTextFn)(void* user_data); - get_clipboard_text_fn: *const fn (?*anyopaque) callconv(.C) [*c]const u8, - - // void (*SetClipboardTextFn)(void* user_data, const char* text); - set_clipboard_text_fn: *const fn (?*anyopaque, [*c]const u8) callconv(.C) void, - clipboard_user_data: ?*anyopaque, // void* ClipboardUserData; - - // void (*SetPlatformImeDataFn)(ImGuiViewport* viewport, ImGuiPlatformImeData* data); - set_platform_ime_data_fn: *const fn ([*c]Viewport, [*c]PlatformImeData) callconv(.C) void, - - _unused_padding: ?*anyopaque, // void* _UnusedPadding; - want_capture_mouse: bool, // bool WantCaptureMouse; - want_capture_keyboard: bool, // bool WantCaptureKeyboard; - want_text_input: bool, // bool WantTextInput; - want_set_mouse_pos: bool, // bool WantSetMousePos; - want_save_ini_settings: bool, // bool WantSaveIniSettings; - nav_active: bool, // bool NavActive; - nav_visible: bool, // bool NavVisible; - framerate: f32, // float Framerate; - metrics_render_vertices: c_int, // int MetricsRenderVertices; - metrics_render_indices: c_int, // int MetricsRenderIndices; - metrics_render_windows: c_int, // int MetricsRenderWindows; - metrics_active_windows: c_int, // int MetricsActiveWindows; - metrics_active_allocations: c_int, // int MetricsActiveAllocations; - mouse_delta: Vec2, // ImVec2 MouseDelta; - key_map: [@as(usize, @intFromEnum(Key.COUNT))]c_int, // int KeyMap[ImGuiKey_COUNT]; - keys_down: [@as(usize, @intFromEnum(Key.COUNT))]bool, // bool KeysDown[ImGuiKey_COUNT]; - mouse_pos: Vec2, // ImVec2 MousePos; - mouse_down: [5]bool, // bool MouseDown[5]; - mouse_wheel: f32, // float MouseWheel; - mouse_wheel_h: f32, // float MouseWheelH; - mouse_hovered_viewport: ID, // ImGuiID MouseHoveredViewport; - key_ctrl: bool, // bool KeyCtrl; - key_shift: bool, // bool KeyShift; - key_alt: bool, // bool KeyAlt; - key_super: bool, // bool KeySuper; - nav_inputs: [@intFromEnum(NavInput.COUNT)]f32, // float NavInputs[ImGuiNavInput_COUNT]; - key_mods: ModFlags, // ImGuiModFlags KeyMods; - keys_data: [@intFromEnum(Key.COUNT)]KeyData, // ImGuiKeyData KeysData[ImGuiKey_KeysData_SIZE]; -> KeysData_SIZE == COUNT - want_capture_mouse_unless_popup_close: bool, // bool WantCaptureMouseUnlessPopupClose; - mouse_pos_rev: Vec2, // ImVec2 MousePosPrev; - mouse_clicked_pos: [5]Vec2, // ImVec2 MouseClickedPos[5]; - mouse_cliked_time: [5]f64, // double MouseClickedTime[5]; - mouse_clicked: [5]bool, // bool MouseClicked[5]; - mouse_double_clicked: [5]bool, // bool MouseDoubleClicked[5]; - mouse_clicked_count: [5]U16, // ImU16 MouseClickedCount[5]; - mouse_clicked_last_count: [5]U16, // ImU16 MouseClickedLastCount[5]; - mouse_released: [5]bool, // bool MouseReleased[5]; - mouse_down_owned: [5]bool, // bool MouseDownOwned[5]; - mouse_down_owned_unless_popup_close: [5]bool, // bool MouseDownOwnedUnlessPopupClose[5]; - mouse_down_duration: [5]f32, // float MouseDownDuration[5]; - mouse_down_duration_prev: [5]f32, // float MouseDownDurationPrev[5]; - mouse_drag_max_distance_abs: [5]f32, // ImVec2 MouseDragMaxDistanceAbs[5]; - mouse_drag_max_distance_sqr: [5]f32, // float MouseDragMaxDistanceSqr[5]; - nav_inputs_down_duration: [@intFromEnum(NavInput.COUNT)]f32, // float NavInputsDownDuration[ImGuiNavInput_COUNT]; - nav_inputs_down_duration_prev: [@intFromEnum(NavInput.COUNT)]f32, // float NavInputsDownDurationPrev[ImGuiNavInput_COUNT]; - pen_pressure: f32, // float PenPressure; - app_focus_lost: bool, // bool AppFocusLost; - app_accepting_events: bool, // bool AppAcceptingEvents; - backend_using_legacy_key_arrays: S8, // ImS8 BackendUsingLegacyKeyArrays; - backend_using_legacy_nav_input_array: bool, // bool BackendUsingLegacyNavInputArray; - input_queue_surrogate: Wchar16, // ImWchar16 InputQueueSurrogate; - input_queue_characters: WcharVector, // ImVector_ImWchar InputQueueCharacters; -}; - -pub const Viewport = extern struct { // struct ImGuiViewport - id: ID, - flags: ViewportFlags, - pos: Vec2, - size: Vec2, - work_pos: Vec2, - work_size: Vec2, - dpi_scale: f32, - parent_viewport_id: ID, - draw_data: [*c]DrawData, - renderer_user_data: ?*anyopaque, - platform_user_data: ?*anyopaque, - platform_handle: ?*anyopaque, - platform_handle_raw: ?*anyopaque, - platform_request_move: bool, - platform_request_resize: bool, - platform_request_close: bool, -}; - -pub const PlatformMonitorVector = extern struct { // struct ImVector_ImGuiPlatformMonitor - size: c_int, - capacity: c_int, - data: [*c]PlatformMonitor, -}; - -pub const ViewportPtrVector = extern struct { // struct ImVector_ImGuiViewportPtr - size: c_int, - capacity: c_int, - data: [*c][*c]Viewport, -}; - -pub const PlatformIO = extern struct { // struct ImGuiPlatformIO - platform_create_window: *const fn ([*c]Viewport) callconv(.C) void, - platform_destroy_window: *const fn ([*c]Viewport) callconv(.C) void, - platform_show_window: *const fn ([*c]Viewport) callconv(.C) void, - platform_set_window_pos: *const fn ([*c]Viewport, Vec2) callconv(.C) void, - platform_get_window_pos: *const fn ([*c]Viewport) callconv(.C) Vec2, - platform_set_window_size: *const fn ([*c]Viewport, Vec2) callconv(.C) void, - platform_get_window_size: *const fn ([*c]Viewport) callconv(.C) Vec2, - platform_set_window_focus: *const fn ([*c]Viewport) callconv(.C) void, - platform_get_window_focus: *const fn ([*c]Viewport) callconv(.C) bool, - platform_get_window_minimized: *const fn ([*c]Viewport) callconv(.C) bool, - platform_set_window_title: *const fn ([*c]Viewport, [*c]const u8) callconv(.C) void, - platform_set_window_alpha: *const fn ([*c]Viewport, f32) callconv(.C) void, - platform_update_window: *const fn ([*c]Viewport) callconv(.C) void, - platform_render_window: *const fn ([*c]Viewport, ?*anyopaque) callconv(.C) void, - platform_swap_buffers: *const fn ([*c]Viewport, ?*anyopaque) callconv(.C) void, - platform_get_window_dpi_scale: *const fn ([*c]Viewport) callconv(.C) f32, - platform_on_changed_viewport: *const fn ([*c]Viewport) callconv(.C) void, - platform_create_vk_surface: *const fn ([*c]Viewport, U64, [*c]const void, [*c]U64) callconv(.C) c_int, - renderer_create_window: *const fn ([*c]Viewport) callconv(.C) void, - renderer_destroy_window: *const fn ([*c]Viewport) callconv(.C) void, - renderer_set_window_size: *const fn ([*c]Viewport, Vec2) callconv(.C) void, - renderer_render_window: *const fn ([*c]Viewport, ?*anyopaque) callconv(.C) void, - renderer_swap_buffers: *const fn ([*c]Viewport, ?*anyopaque) callconv(.C) void, - monitors: PlatformMonitor, - viewports: ViewportPtrVector, -}; - -pub const PlatformMonitor = extern struct { // struct ImGuiPlatformMonitor - main_pos: Vec2, - main_size: Vec2, - work_pos: Vec2, - work_size: Vec2, - dpi_scale: f32, -}; - -pub const ViewportFlags = packed struct(c_int) { - is_platform_window: bool = false, // cmGuiViewportFlags_IsPlatformWindow = 1 << 0, - is_platform_monitor: bool = false, // ImGuiViewportFlags_IsPlatformMonitor = 1 << 1, - owned_by_app: bool = false, // ImGuiViewportFlags_OwnedByApp = 1 << 2, - no_decoration: bool = false, // ImGuiViewportFlags_NoDecoration = 1 << 3, - no_task_bar_icon: bool = false, // ImGuiViewportFlags_NoTaskBarIcon = 1 << 4, - no_focus_on_appearing: bool = false, // ImGuiViewportFlags_NoFocusOnAppearing = 1 << 5, - no_focus_on_click: bool = false, // ImGuiViewportFlags_NoFocusOnClick = 1 << 6, - no_inputs: bool = false, // ImGuiViewportFlags_NoInputs = 1 << 7, - no_renderer_clear: bool = false, // ImGuiViewportFlags_NoRendererClear = 1 << 8, - top_most: bool = false, // ImGuiViewportFlags_TopMost = 1 << 9, - minimized: bool = false, // ImGuiViewportFlags_Minimized = 1 << 10, - no_auto_merge: bool = false, // ImGuiViewportFlags_NoAutoMerge = 1 << 11, - can_host_other_windows: bool = false, // ImGuiViewportFlags_CanHostOtherWindows = 1 << 12 - reserved: u19 = 0, // reserved, don't use -}; - -pub const DrawFlags = packed struct(c_int) { - closed: bool = false, // ImDrawFlags_Closed = 1 << 0, - round_corners_top_left: bool = false, // ImDrawFlags_RoundCornersTopLeft = 1 << 4, - round_corners_top_right: bool = false, // ImDrawFlags_RoundCornersTopRight = 1 << 5, - round_corners_bottom_left: bool = false, // ImDrawFlags_RoundCornersBottomLeft = 1 << 6, - round_corners_bottom_right: bool = false, // ImDrawFlags_RoundCornersBottomRight = 1 << 7, - round_corners_none: bool = false, // ImDrawFlags_RoundCornersNone = 1 << 8, - reserved: u26 = 0, // reserved, don't use - - pub const round_corners_top = .{ .round_corners_top_left = true, .round_corners_top_right = true }; - pub const round_corners_bottom = .{ .round_corners_bottom_left = true, .round_corners_bottom_right = true }; - pub const round_corners_left = .{ .round_corners_bottom_left = true, .round_corners_top_left = true }; - pub const round_corners_right = .{ .round_corners_bottom_right = true, .round_corners_top_right = true }; - pub const round_corners_all = .{ .round_corners_top_left = true, .round_corners_top_right = true, .round_corners_bottom_left = true, .round_corners_bottom_right = true }; - pub const round_corners_default = .{ .round_corners_all = true }; - pub const round_corners_mask = .{ .round_corners_all = true, .round_corners_none = true }; -}; - -pub const DrawListFlags = packed struct(c_int) { - anti_aliased_lines: bool = false, // ImDrawListFlags_AntiAliasedLines = 1 << 0, - anti_aliased_lines_use_tex: bool = false, // ImDrawListFlags_AntiAliasedLinesUseTex = 1 << 1, - anti_aliased_fill: bool = false, // ImDrawListFlags_AntiAliasedFill = 1 << 2, - allow_vtx_offset: bool = false, // ImDrawListFlags_AllowVtxOffset = 1 << 3 - reserved: u28 = 0, // reserved, don't use -}; - -pub const FontAtlasFlags = packed struct(c_int) { - no_power_of_two_height: bool = false, // ImFontAtlasFlags_NoPowerOfTwoHeight = 1 << 0, - no_mouse_cursors: bool = false, // ImFontAtlasFlags_NoMouseCursors = 1 << 1, - no_baked_lines: bool = false, // ImFontAtlasFlags_NoBakedLines = 1 << 2 - reserved: u29 = 0, // reserved, don't use -}; - -pub const PlatformImeData = extern struct { // struct ImGuiPlatformImeData - want_visible: bool, - input_pos: Vec2, - input_line_height: f32, -}; - -pub const StbUndoRecord = extern struct { // struct StbUndoRecord - where: c_int, - insert_length: c_int, - delete_length: c_int, - char_storage: c_int, -}; - -pub const StbUndoState = extern struct { // struct StbUndoState - undo_rec: [99]StbUndoRecord, - undo_char: [999]Wchar, - undo_point: c_short, - redo_point: c_short, - undo_char_point: c_int, - redo_char_point: c_int, -}; - -pub const StbTexteditState = extern struct { // struct STB_TexteditState - cursor: c_int, - select_start: c_int, - select_end: c_int, - insert_mode: u8, - row_count_per_page: c_int, - cursor_at_end_of_line: u8, - initialized: u8, - has_preferred_x: u8, - single_line: u8, - padding3: [3]u8, - preferred_x: f32, - undostate: StbUndoState, -}; - -pub const StbTexteditRow = extern struct { // struct StbTexteditRow - x0: f32, - x1: f32, - baseline_y_delta: f32, - ymin: f32, - ymax: f32, - num_chars: c_int, -}; - -pub const Vec1 = extern struct { // struct ImVec1 - x: f32, -}; - -pub const Rect = extern struct { // struct ImRect - min: Vec2, - max: Vec2, -}; - -pub const BitVector = extern struct { // struct ImBitVector - storage: U32, -}; - -pub const Vec2ih = extern struct { // struct ImVec2ih - x: c_short, - y: c_short, -}; - -pub const PoolIdx = c_int; - -pub const DrawListSharedData = extern struct { // struct ImDrawListSharedData - tex_uv_white_pixel: Vec2, - font: [*c]Font, - font_size: f32, - curve_tessellation_tol: f32, - circle_segment_max_error: f32, - clip_rect_fullscreen: Vec4, - initial_flags: DrawListFlags, - arc_fast_vtx: [48]Vec2, - arc_fast_radius_cutoff: f32, - circle_segment_counts: [64]U8, - tex_uv_lines: [*c]const Vec4, -}; - -pub const DrawListPtrVector = extern struct { // struct ImVector_ImDrawListPtr - size: c_int, - capacity: c_int, - data: [*c][*c]DrawList, -}; - -pub const DrawList = extern struct { // struct ImDrawList - cmd_buffer: DrawCmd, - idx_buffer: DrawIdx, - vtx_buffer: DrawVert, - flags: DrawListFlags, - _vtx_current_idx: c_uint, - _data: [*c]const DrawListSharedData, - _owner_name: [*c]const u8, - _vtx_write_ptr: [*c]DrawVert, - _idx_write_ptr: [*c]DrawIdx, - _clip_rect_stack: Vec4, - _texture_id_stack: TextureID, - _path: Vec2, - _cmd_header: DrawCmdHeader, - _splitter: DrawListSplitter, - _fringe_scale: f32, -}; - -pub const DrawDataBuilder = extern struct { // struct ImDrawDataBuilder - layers: [2]DrawListPtrVector, -}; - -pub const ItemFlags = packed struct(c_int) { - no_tab_stop: bool = false, // ImGuiItemFlags_NoTabStop = 1 << 0, - button_repeat: bool = false, // ImGuiItemFlags_ButtonRepeat = 1 << 1, - disabled: bool = false, // ImGuiItemFlags_Disabled = 1 << 2, - no_nav: bool = false, // ImGuiItemFlags_NoNav = 1 << 3, - no_nav_default_focus: bool = false, // ImGuiItemFlags_NoNavDefaultFocus = 1 << 4, - selectable_dont_close_popup: bool = false, // ImGuiItemFlags_SelectableDontClosePopup = 1 << 5, - mixed_value: bool = false, // ImGuiItemFlags_MixedValue = 1 << 6, - read_only: bool = false, // ImGuiItemFlags_ReadOnly = 1 << 7, - inputable: bool = false, // ImGuiItemFlags_Inputable = 1 << 8 - reserved: u23 = 0, // reserved, don't use -}; -pub const ItemStatusFlags = packed struct(c_int) { - hovered_rect: bool = false, // ImGuiItemStatusFlags_HoveredRect = 1 << 0, - has_display_rect: bool = false, // ImGuiItemStatusFlags_HasDisplayRect = 1 << 1, - edited: bool = false, // ImGuiItemStatusFlags_Edited = 1 << 2, - toggled_selection: bool = false, // ImGuiItemStatusFlags_ToggledSelection = 1 << 3, - toggled_open: bool = false, // ImGuiItemStatusFlags_ToggledOpen = 1 << 4, - has_deactivated: bool = false, // ImGuiItemStatusFlags_HasDeactivated = 1 << 5, - deactivated: bool = false, // ImGuiItemStatusFlags_Deactivated = 1 << 6, - hovered_window: bool = false, // ImGuiItemStatusFlags_HoveredWindow = 1 << 7, - focused_by_tabbing: bool = false, // ImGuiItemStatusFlags_FocusedByTabbing = 1 << 8 - reserved: u23 = 0, // reserved, don't use -}; - -pub const SeparatorFlags = packed struct(c_int) { - horizontal: bool = false, // ImGuiSeparatorFlags_Horizontal = 1 << 0, - vertical: bool = false, // ImGuiSeparatorFlags_Vertical = 1 << 1, - span_all_columns: bool = false, // ImGuiSeparatorFlags_SpanAllColumns = 1 << 2 - reserved: u29 = 0, // reserved, don't use -}; - -pub const TextFlags = packed struct(c_int) { - no_width_for_large_clipped_text: bool = false, // ImGuiTextFlags_NoWidthForLargeClippedText = 1 << 0 - reserved: u31 = 0, // reserved, don't use -}; - -pub const TooltipFlags = packed struct(c_int) { - override_previous_tooltip: bool = false, // ImGuiTooltipFlags_OverridePreviousTooltip = 1 << 0 - reserved: u31 = 0, // reserved, don't use -}; - -pub const LayoutType = enum(c_int) { - Horizontal = 0, - Vertical = 1, - _, -}; - -pub const LogType = enum(c_int) { - None = 0, - TTY, - File, - Buffer, - Clipboard, - _, -}; - -pub const Axis = enum(c_int) { - None = -1, - X = 0, - Y = 1, - _, -}; - -pub const PlotType = enum(c_int) { - Lines, - Histogram, - _, -}; - -pub const PopupPositionPolicy = enum(c_int) { - Default, - ComboBox, - Tooltip, - _, -}; - -pub const NextWindowDataFlags = packed struct(c_int) { - has_pos: bool = false, // ImGuiNextWindowDataFlags_HasPos = 1 << 0, - has_size: bool = false, // ImGuiNextWindowDataFlags_HasSize = 1 << 1, - has_content_size: bool = false, // ImGuiNextWindowDataFlags_HasContentSize = 1 << 2, - has_collapsed: bool = false, // ImGuiNextWindowDataFlags_HasCollapsed = 1 << 3, - has_size_constraint: bool = false, // ImGuiNextWindowDataFlags_HasSizeConstraint = 1 << 4, - has_focus: bool = false, // ImGuiNextWindowDataFlags_HasFocus = 1 << 5, - has_bg_alpha: bool = false, // ImGuiNextWindowDataFlags_HasBgAlpha = 1 << 6, - has_scroll: bool = false, // ImGuiNextWindowDataFlags_HasScroll = 1 << 7, - has_viewport: bool = false, // ImGuiNextWindowDataFlags_HasViewport = 1 << 8, - has_dock: bool = false, // ImGuiNextWindowDataFlags_HasDock = 1 << 9, - has_window_class: bool = false, // ImGuiNextWindowDataFlags_HasWindowClass = 1 << 10 - reserved: u21 = 0, // reserved, don't use -}; - -pub const NextItemDataFlags = packed struct(c_int) { - has_width: bool = false, // ImGuiNextItemDataFlags_HasWidth = 1 << 0, - has_open: bool = false, // ImGuiNextItemDataFlags_HasOpen = 1 << 1 - reserved: u30 = 0, // reserved, don't use -}; - -pub const ActivateFlags = packed struct(c_int) { - prefer_input: bool = false, // ImGuiActivateFlags_PreferInput = 1 << 0, - prefer_tweak: bool = false, // ImGuiActivateFlags_PreferTweak = 1 << 1, - try_to_preserve_state: bool = false, // ImGuiActivateFlags_TryToPreserveState = 1 << 2 - reserved: u29 = 0, // reserved, don't use -}; -pub const ScrollFlags = packed struct(c_int) { - keep_visible_edge_x: bool = false, // ImGuiScrollFlags_KeepVisibleEdgeX = 1 << 0, - keep_visible_edge_y: bool = false, // ImGuiScrollFlags_KeepVisibleEdgeY = 1 << 1, - keep_visible_center_x: bool = false, // ImGuiScrollFlags_KeepVisibleCenterX = 1 << 2, - keep_visible_center_y: bool = false, // ImGuiScrollFlags_KeepVisibleCenterY = 1 << 3, - always_center_x: bool = false, // ImGuiScrollFlags_AlwaysCenterX = 1 << 4, - always_center_y: bool = false, // ImGuiScrollFlags_AlwaysCenterY = 1 << 5, - no_scroll_parent: bool = false, // ImGuiScrollFlags_NoScrollParent = 1 << 6, - reserved: u25 = 0, // reserved, don't use - - pub const mask_x = .{ .keep_visible_edge_x = true, .keep_visible_center_x = true, .always_center_x = true }; - pub const mask_y = .{ .keep_visible_edge_y = true, .keep_visible_center_y = true, .always_center_y = true }; -}; -pub const NavHighlightFlags = packed struct(c_int) { - type_default: bool = false, // ImGuiNavHighlightFlags_TypeDefault = 1 << 0, - type_thin: bool = false, // ImGuiNavHighlightFlags_TypeThin = 1 << 1, - always_draw: bool = false, // ImGuiNavHighlightFlags_AlwaysDraw = 1 << 2, - no_rounding: bool = false, // ImGuiNavHighlightFlags_NoRounding = 1 << 3 - reserved: u28 = 0, // reserved, don't use -}; -pub const NavDirSourceFlags = packed struct(c_int) { - raw_keyboard: bool = false, // ImGuiNavDirSourceFlags_RawKeyboard = 1 << 0, - keyboard: bool = false, // ImGuiNavDirSourceFlags_Keyboard = 1 << 1, - pad_d_pad: bool = false, // ImGuiNavDirSourceFlags_PadDPad = 1 << 2, - pad_l_stick: bool = false, // ImGuiNavDirSourceFlags_PadLStick = 1 << 3 - reserved: u28 = 0, // reserved, don't use -}; -pub const NavMoveFlags = packed struct(c_int) { - loop_x: bool = false, // ImGuiNavMoveFlags_LoopX = 1 << 0, - loop_y: bool = false, // ImGuiNavMoveFlags_LoopY = 1 << 1, - wrap_x: bool = false, // ImGuiNavMoveFlags_WrapX = 1 << 2, - wrap_y: bool = false, // ImGuiNavMoveFlags_WrapY = 1 << 3, - allow_current_nav_id: bool = false, // ImGuiNavMoveFlags_AllowCurrentNavId = 1 << 4, - also_score_visible_set: bool = false, // ImGuiNavMoveFlags_AlsoScoreVisibleSet = 1 << 5, - scroll_to_edge_y: bool = false, // ImGuiNavMoveFlags_ScrollToEdgeY = 1 << 6, - forwarded: bool = false, // ImGuiNavMoveFlags_Forwarded = 1 << 7, - debug_no_result: bool = false, // ImGuiNavMoveFlags_DebugNoResult = 1 << 8, - focus_api: bool = false, // ImGuiNavMoveFlags_FocusApi = 1 << 9, - tabbing: bool = false, // ImGuiNavMoveFlags_Tabbing = 1 << 10, - activate: bool = false, // ImGuiNavMoveFlags_Activate = 1 << 11, - dont_set_nav_highlight: bool = false, // ImGuiNavMoveFlags_DontSetNavHighlight = 1 << 12 - reserved: u19 = 0, // reserved, don't use -}; - -pub const OldColumnFlags = packed struct(c_int) { - no_border: bool = false, // ImGuiOldColumnFlags_NoBorder = 1 << 0, - no_resize: bool = false, // ImGuiOldColumnFlags_NoResize = 1 << 1, - no_preserve_widths: bool = false, // ImGuiOldColumnFlags_NoPreserveWidths = 1 << 2, - no_force_within_window: bool = false, // ImGuiOldColumnFlags_NoForceWithinWindow = 1 << 3, - grow_parent_contents_size: bool = false, // ImGuiOldColumnFlags_GrowParentContentsSize = 1 << 4 - reserved: u27 = 0, // reserved, don't use -}; -pub const DebugLogFlags = packed struct(c_int) { - event_active_id: bool = false, // ImGuiDebugLogFlags_EventActiveId = 1 << 0, - event_focus: bool = false, // ImGuiDebugLogFlags_EventFocus = 1 << 1, - event_popup: bool = false, // ImGuiDebugLogFlags_EventPopup = 1 << 2, - event_nav: bool = false, // ImGuiDebugLogFlags_EventNav = 1 << 3, - event_i_o: bool = false, // ImGuiDebugLogFlags_EventIO = 1 << 4, - event_docking: bool = false, // ImGuiDebugLogFlags_EventDocking = 1 << 5, - event_viewport: bool = false, // ImGuiDebugLogFlags_EventViewport = 1 << 6, - output_to_t_t_y: bool = false, // ImGuiDebugLogFlags_OutputToTTY = 1 << 10 - reserved: u24 = 0, // reserved, don't use - - pub const event_mask = .{ .event_active_id = true, .event_focus = true, .event_popup = true, .event_nav = true, .event_i_o = true, .event_docking = true, .event_viewport = true }; -}; - -pub const NavLayer = enum(c_int) { - Main = 0, - Menu = 1, - COUNT, - _, -}; - -pub const DataAuthority = enum(c_int) { - Auto, - DockNode, - Window, - _, -}; - -pub const DockNodeState = enum(c_int) { - Unknown, - HostWindowHiddenBecauseSingleWindow, - HostWindowHiddenBecauseWindowsAreResizing, - HostWindowVisible, - _, -}; - -pub const WindowDockStyleCol = enum(c_int) { - Text, - Tab, - TabHovered, - TabActive, - TabUnfocused, - TabUnfocusedActive, - COUNT, - _, -}; - -pub const ContextHookType = enum(c_int) { - NewFramePre, - NewFramePost, - EndFramePre, - EndFramePost, - RenderPre, - RenderPost, - Shutdown, - PendingRemoval, - _, -}; - -pub const DataTypeTempStorage = extern struct { // struct ImGuiDataTypeTempStorage - data: [8]U8, -}; - -pub const DataTypeInfo = extern struct { // struct ImGuiDataTypeInfo - size: usize, - name: [*c]const u8, - print_fmt: [*c]const u8, - scan_fmt: [*c]const u8, -}; - -pub const ColorMod = extern struct { // struct ImGuiColorMod - col: StyleColor, - backup_value: Vec4, -}; - -// struct ImGuiStyleMod -// { -// ImGuiStyleVar VarIdx; -// union { int BackupInt[2]; float BackupFloat[2]; }; -// }; - -pub const StyleMod = struct { - VarIdx: StyleVar, - Backup: union { - int: [2]c_int, - float: [2]f32, - }, -}; - -pub const ComboPreviewData = extern struct { // struct ImGuiComboPreviewData - preview_rect: Rect, - backup_cursor_pos: Vec2, - backup_cursor_max_pos: Vec2, - backup_cursor_pos_prev_line: Vec2, - backup_prev_line_text_base_offset: f32, - backup_layout: LayoutType, -}; - -pub const GroupData = extern struct { // struct ImGuiGroupData - window_i_d: ID, - backup_cursor_pos: Vec2, - backup_cursor_max_pos: Vec2, - backup_indent: Vec1, - backup_group_offset: Vec1, - backup_curr_line_size: Vec2, - backup_curr_line_text_base_offset: f32, - backup_active_id_is_alive: ID, - backup_active_id_previous_frame_is_alive: bool, - backup_hovered_id_is_alive: bool, - emit_item: bool, -}; - -pub const MenuColumns = extern struct { // struct ImGuiMenuColumns - total_width: U32, - next_total_width: U32, - spacing: U16, - offset_icon: U16, - offset_label: U16, - offset_shortcut: U16, - offset_mark: U16, - widths: [4]U16, -}; - -pub const InputTextState = extern struct { // struct ImGuiInputTextState - id: ID, - cur_len_w: c_int, - cur_len_a: c_int, - text_w: WcharVector, - text_a: CharVector, - initial_text_a: CharVector, - text_a_is_valid: bool, - buf_capacity_a: c_int, - scroll_x: f32, - stb: StbTexteditState, - cursor_anim: f32, - cursor_follow: bool, - selected_all_mouse_lock: bool, - edited: bool, - flags: InputTextFlags, -}; - -pub const PopupData = extern struct { // struct ImGuiPopupData - popup_id: ID, - window: [*c]Window, - source_window: [*c]Window, - parent_nav_layer: c_int, - open_frame_count: c_int, - open_parent_id: ID, - open_popup_pos: Vec2, - open_mouse_pos: Vec2, -}; - -pub const NextWindowData = extern struct { // struct ImGuiNextWindowData - flags: NextWindowDataFlags, - pos_cond: Cond, - size_cond: Cond, - collapsed_cond: Cond, - dock_cond: Cond, - pos_val: Vec2, - pos_pivot_val: Vec2, - size_val: Vec2, - content_size_val: Vec2, - scroll_val: Vec2, - pos_undock: bool, - collapsed_val: bool, - size_constraint_rect: Rect, - size_callback: SizeCallback, - size_callback_user_data: ?*anyopaque, - bg_alpha_val: f32, - viewport_id: ID, - dock_id: ID, - window_class: WindowClass, - menu_bar_offset_min_val: Vec2, -}; - -pub const NextItemData = extern struct { // struct ImGuiNextItemData - flags: NextItemDataFlags, - width: f32, - focus_scope_id: ID, - open_cond: Cond, - open_val: bool, -}; - -pub const LastItemData = extern struct { // struct ImGuiLastItemData - id: ID, - in_flags: ItemFlags, - status_flags: ItemStatusFlags, - rect: Rect, - nav_rect: Rect, - display_rect: Rect, -}; - -pub const StackSizes = extern struct { // struct ImGuiStackSizes - size_of_id_stack: c_short, - size_of_color_stack: c_short, - size_of_style_var_stack: c_short, - size_of_font_stack: c_short, - size_of_focus_scope_stack: c_short, - size_of_group_stack: c_short, - size_of_item_flags_stack: c_short, - size_of_begin_popup_stack: c_short, - size_of_disabled_stack: c_short, -}; - -pub const WindowStackData = extern struct { // struct ImGuiWindowStackData - window: [*c]Window, - parent_last_item_data_backup: LastItemData, - stack_sizes_on_begin: StackSizes, -}; - -pub const PtrOrIndex = extern struct { // struct ImGuiPtrOrIndex - ptr: ?*anyopaque, - index: c_int, -}; - -pub const BitArrayForNamedKeys = extern struct { // struct ImBitArrayForNamedKeys - storage: [(NamedKeyCOUNT + 31) >> 5]U32, -}; - -pub const InputEventMousePos = extern struct { // struct ImGuiInputEventMousePos - pos_x: f32, - pos_y: f32, -}; - -pub const InputEventMouseWheel = extern struct { // struct ImGuiInputEventMouseWheel - wheel_x: f32, - wheel_y: f32, -}; - -pub const InputEventMouseButton = extern struct { // struct ImGuiInputEventMouseButton - button: c_int, - down: bool, -}; - -pub const InputEventMouseViewport = extern struct { // struct ImGuiInputEventMouseViewport - hovered_viewport_i_d: ID, -}; - -pub const InputEventKey = extern struct { // struct ImGuiInputEventKey - key: Key, - down: bool, - analog_value: f32, -}; - -pub const InputEventText = extern struct { // struct ImGuiInputEventText - char: c_uint, -}; - -pub const InputEventAppFocused = extern struct { // struct ImGuiInputEventAppFocused - focused: bool, -}; - -pub const InputEvent = extern struct { // struct ImGuiInputEvent - type: InputEventType, - source: InputSource, - events: extern union { - mouse_pos: InputEventMousePos, - mouse_wheel: InputEventMouseWheel, - mouse_button: InputEventMouseButton, - mouse_viewport: InputEventMouseViewport, - key: InputEventKey, - text: InputEventText, - app_focused: InputEventAppFocused, - }, - added_by_test_engine: bool, -}; - -pub const ListClipperRange = extern struct { // struct ImGuiListClipperRange - min: c_int, - max: c_int, - pos_to_index_convert: bool, - pos_to_index_offset_min: S8, - pos_to_index_offset_max: S8, -}; - -pub const ListClipperData = extern struct { // struct ImGuiListClipperData - list_clipper: [*c]ListClipper, - lossyness_offset: f32, - step_no: c_int, - items_frozen: c_int, - ranges: ListClipperRangeVector, -}; - -pub const ListClipperRangeVector = extern struct { // struct ImVector_ImGuiListClipperRange - size: c_int, - capacity: c_int, - data: [*c]ListClipperRange, -}; - -pub const NavItemData = extern struct { // struct ImGuiNavItemData - window: [*c]Window, - id: ID, - focus_scope_id: ID, - rect_rel: Rect, - in_flags: ItemFlags, - dist_box: f32, - dist_center: f32, - dist_axial: f32, -}; - -pub const OldColumnData = extern struct { // struct ImGuiOldColumnData - offset_norm: f32, - offset_norm_before_resize: f32, - flags: OldColumnFlags, - clip_rect: Rect, -}; - -pub const OldColumnDataVector = extern struct { // struct ImVector_ImGuiOldColumnData - size: c_int, - capacity: c_int, - data: [*c]OldColumnData, -}; - -pub const WindowPtrVector = extern struct { // struct ImVector_ImGuiWindowPtr - size: c_int, - capacity: c_int, - data: [*c]Window, -}; - -pub const WindowDockStyle = extern struct { // struct ImGuiWindowDockStyle - colors: [WindowDockStyleCol.COUNT]U32, -}; - -pub const DockRequestVector = extern struct { // struct ImVector_ImGuiDockRequest - size: c_int, - capacity: c_int, - data: [*c]DockRequest, -}; - -pub const DockNodeSettingsVector = extern struct { // struct ImVector_ImGuiDockNodeSettings - size: c_int, - capacity: c_int, - data: [*c]DockNodeSettings, -}; - -pub const DockContext = extern struct { // struct ImGuiDockContext - nodes: Storage, - requests: DockRequestVector, - nodes_settings: DockNodeSettingsVector, - want_full_rebuild: bool, -}; - -pub const ViewportP = extern struct { // struct ImGuiViewportP - _imgui_viewport: Viewport, - idx: c_int, - last_frame_active: c_int, - last_front_most_stamp_count: c_int, - last_name_hash: ID, - last_pos: Vec2, - alpha: f32, - last_alpha: f32, - platform_monitor: c_short, - platform_window_created: bool, - window: [*c]Window, - draw_lists_last_frame: [2]c_int, - draw_lists: [2][*c]DrawList, - draw_data_p: DrawData, - draw_data_builder: DrawDataBuilder, - last_platform_pos: Vec2, - last_platform_size: Vec2, - last_renderer_size: Vec2, - work_offset_min: Vec2, - work_offset_max: Vec2, - build_work_offset_min: Vec2, - build_work_offset_max: Vec2, -}; - -pub const WindowSettings = extern struct { // struct ImGuiWindowSettings - i_d: ID, - pos: Vec2ih, - size: Vec2ih, - viewport_pos: Vec2ih, - viewport_id: ID, - dock_id: ID, - class_id: ID, - dock_order: c_short, - collapsed: bool, - want_apply: bool, -}; - -pub const SettingsHandler = extern struct { // struct ImGuiSettingsHandler - type_name: [*c]const u8, - type_hash: ID, - clear_all_fn: *const fn ([*c]Context, [*c]SettingsHandler) void, - read_init_fn: *const fn ([*c]Context, [*c]SettingsHandler) void, - read_open_fn: *const fn ([*c]Context, [*c]SettingsHandler, [*c]const u8) ?*anyopaque, - read_line_fn: *const fn ([*c]Context, [*c]SettingsHandler, ?*anyopaque, [*c]const u8) void, - apply_all_fn: *const fn ([*c]Context, [*c]SettingsHandler) void, - write_all_fn: *const fn ([*c]Context, [*c]SettingsHandler, [*c]TextBuffer) void, - user_data: ?*anyopaque, -}; - -pub const MetricsConfig = extern struct { // struct ImGuiMetricsConfig - show_debug_log: bool, - show_stack_tool: bool, - show_windows_rects: bool, - show_windows_begin_order: bool, - show_tables_rects: bool, - show_draw_cmd_mesh: bool, - show_draw_cmd_bounding_boxes: bool, - show_docking_nodes: bool, - show_windows_rects_type: c_int, - show_tables_rects_type: c_int, -}; - -pub const StackLevelInfoVector = extern struct { // struct ImVector_ImGuiStackLevelInfo - size: c_int, - capacity: c_int, - data: [*c]StackLevelInfo, -}; - -pub const StackTool = extern struct { // struct ImGuiStackTool - last_active_frame: c_int, - stack_level: c_int, - query_id: ID, - results: StackLevelInfoVector, - copy_to_clipboard_on_ctrl_c: bool, - copy_to_clipboard_last_time: f32, -}; - -pub const ContextHook = extern struct { // struct ImGuiContextHook - hook_id: ID, - type: ContextHookType, - owner: ID, - callback: ContextHookCallback, - user_data: ?*anyopaque, -}; - -pub const InputEventVector = extern struct { // struct ImVector_ImGuiInputEvent - size: c_int, - capacity: c_int, - data: [*c]InputEvent, -}; - -pub const WindowStackDataVector = extern struct { // struct ImVector_ImGuiWindowStackData - size: c_int, - capacity: c_int, - data: [*c]WindowStackData, -}; - -pub const ColorModVector = extern struct { // struct ImVector_ImGuiColorMod - size: c_int, - capacity: c_int, - data: [*c]ColorMod, -}; - -pub const StyleModVector = extern struct { // struct ImGuiStyleMod - size: c_int, - capacity: c_int, - data: [*c]StyleMod, -}; - -pub const IDVector = extern struct { // struct ImGuiID - size: c_int, - capacity: c_int, - data: [*c]ID, -}; - -pub const ItemFlagsVector = extern struct { // struct ImGuiItemFlags - size: c_int, - capacity: c_int, - data: [*c]ItemFlags, -}; - -pub const GroupDataVector = extern struct { // struct ImGuiGroupData - size: c_int, - capacity: c_int, - data: [*c]GroupData, -}; - -pub const PopupDataVector = extern struct { // struct ImGuiPopupData - size: c_int, - capacity: c_int, - data: [*c]PopupData, -}; - -pub const ViewportPPtrVector = extern struct { // struct ImGuiViewportPPtr - size: c_int, - capacity: c_int, - data: [*c][*c]ViewportP, -}; - -pub const ListClipperDataVector = extern struct { // struct ImGuiListClipperData - size: c_int, - capacity: c_int, - data: [*c]ListClipperData, -}; - -pub const TableTempDataVector = extern struct { // struct ImVector_ImGuiTableTempData - size: c_int, - capacity: c_int, - data: [*c]TableTempData, -}; - -pub const TableVector = extern struct { // struct ImVector_ImGuiTable - size: c_int, - capacity: c_int, - data: [*c]Table, -}; - -pub const TabBarVector = extern struct { // struct ImVector_ImGuiTabBar - size: c_int, - capacity: c_int, - data: [*c]TabBar, -}; - -pub const PtrOrIndexVector = extern struct { // struct ImVector_ImGuiPtrOrIndex - size: c_int, - capacity: c_int, - data: [*c]PtrOrIndex, -}; - -pub const ShrinkWidthItemVector = extern struct { // struct ImVector_ImGuiShrinkWidthItem - size: c_int, - capacity: c_int, - data: [*c]ShrinkWidthItem, -}; - -pub const ShrinkWidthItem = extern struct { // struct ImVector_ImGuiShrinkWidthItem - index: c_int, - width: f32, - initial_width: f32, -}; - -pub const SettingsHandlerVector = extern struct { // struct ImVector_ImGuiSettingsHandler - size: c_int, - capacity: c_int, - data: [*c]SettingsHandler, -}; - -pub const ContextHookVector = extern struct { // struct ImVector_ImGuiContextHook - size: c_int, - capacity: c_int, - data: [*c]ContextHook, -}; - -pub const u8Vector = extern struct { // struct ImVector_unsigned_char - size: c_int, - capacity: c_int, - data: [*c]u8, -}; - -pub const TablePool = extern struct { // struct ImPool_ImGuiTable - buf: TableVector, - map: Storage, - free_idx: PoolIdx, - alive_count: PoolIdx, -}; - -pub const TabBarPool = extern struct { // struct ImPool_ImGuiTabBar - buf: TabBarVector, - map: Storage, - free_idx: PoolIdx, - alive_count: PoolIdx, -}; - -pub const TabItemVector = extern struct { // struct ImVector_ImGuiTabItem - size: c_int, - capacity: c_int, - data: [*c]TabItem, -}; - -pub const WindowSettingsChunkStream = extern struct { // struct ImChunkStream_ImGuiWindowSettings - buf: u8Vector, -}; - -pub const TableSettingsChunkStream = extern struct { // struct ImChunkStream_ImGuiTableSettings - buf: u8Vector, -}; - -pub const TabItem = extern struct { // struct ImGuiTabItem - i_d: ID, - flags: TabItemFlags, - window: [*c]Window, - last_frame_visible: c_int, - last_frame_selected: c_int, - offset: f32, - width: f32, - content_width: f32, - requested_width: f32, - name_offset: S32, - begin_order: S16, - index_during_layout: S16, - want_close: bool, -}; - -pub const TabBar = extern struct { // struct ImGuiTabBar - tabs: TabItemVector, - flags: TabBarFlags, - i_d: ID, - selected_tab_id: ID, - next_selected_tab_id: ID, - visible_tab_id: ID, - curr_frame_visible: c_int, - prev_frame_visible: c_int, - bar_rect: Rect, - curr_tabs_contents_height: f32, - prev_tabs_contents_height: f32, - width_all_tabs: f32, - width_all_tabs_ideal: f32, - scrolling_anim: f32, - scrolling_target: f32, - scrolling_target_dist_to_visibility: f32, - scrolling_speed: f32, - scrolling_rect_min_x: f32, - scrolling_rect_max_x: f32, - reorder_request_tab_id: ID, - reorder_request_offset: S16, - begin_count: S8, - want_layout: bool, - visible_tab_was_submitted: bool, - tabs_added_new: bool, - tabs_active_count: S16, - last_tab_item_idx: S16, - item_spacing_y: f32, - frame_padding: Vec2, - backup_cursor_pos: Vec2, - tabs_names: TextBuffer, -}; - -pub const TableTempData = extern struct { // struct ImGuiTableTempData - table_index: c_int, - last_time_active: f32, - user_outer_size: Vec2, - draw_splitter: DrawListSplitter, - host_backup_work_rect: Rect, - host_backup_parent_work_rect: Rect, - host_backup_prev_line_size: Vec2, - host_backup_curr_line_size: Vec2, - host_backup_cursor_max_pos: Vec2, - host_backup_columns_offset: Vec1, - host_backup_item_width: f32, - host_backup_item_width_stack_size: c_int, -}; -pub const ContextHookCallback = *const fn ([*c]Context, [*c]ContextHook) void; - -pub const TableSettings = extern struct { // struct ImGuiTableSettings - id: ID, - save_flags: TableFlags, - ref_scale: f32, - columns_count: TableColumnIdx, - columns_count_max: TableColumnIdx, - want_apply: bool, -}; - -pub const FontBuilderIO = extern struct { // struct ImFontBuilderIO - font_builder_build: *const fn ([*c]FontAtlas) callconv(.C) bool, -}; - -pub const TableCellData = extern struct { // struct ImGuiTableCellData - bg_color: U32, - column: TableColumnIdx, -}; - -pub const TableInstanceData = extern struct { // struct ImGuiTableInstanceData - last_outer_height: f32, - last_first_row_height: f32, -}; - -pub const TableColumnSpan = extern struct { // struct ImSpan_ImGuiTableColumn - data: [*c]TableColumn, - data_end: [*c]TableColumn, -}; - -pub const TableColumnIdxSpan = extern struct { // struct ImSpan_ImGuiTableColumnIdx - data: [*c]TableColumnIdx, - data_end: [*c]TableColumnIdx, -}; - -pub const TableCellDataSpan = extern struct { // struct ImSpan_ImGuiTableCellData - data: [*c]TableCellData, - data_end: [*c]TableCellData, -}; - -pub const TableInstanceDataVector = extern struct { // struct ImVector_ImGuiTableInstanceData - size: c_int, - capacity: c_int, - data: [*c]TableInstanceData, -}; - -pub const TableColumnSortSpecsVector = extern struct { // struct ImVector_ImGuiTableColumnSortSpecs - size: c_int, - capacity: c_int, - data: [*c]TableColumnSortSpecs, -}; - -pub const TextBuffer = extern struct { // struct ImGuiTextBuffer - buf: u8Vector, -}; - -pub const TableColumnIdx = S8; // ImGuiTableColumnIdx -pub const TableDrawChannelIdx = U8; // ImGuiTableDrawChannelIdx - -pub const Context = extern struct { // struct ImGuiContext - initialized: bool, - font_atlas_owned_by_context: bool, - io: Io, - platform_i_o: PlatformIO, - input_events_queue: InputEventVector, - input_events_trail: InputEventVector, - style: Style, - config_flags_curr_frame: ConfigFlags, - config_flags_last_frame: ConfigFlags, - font: [*c]Font, - font_size: f32, - font_base_size: f32, - draw_list_shared_data: DrawListSharedData, - time: f64, - frame_count: c_int, - frame_count_ended: c_int, - frame_count_platform_ended: c_int, - frame_count_rendered: c_int, - within_frame_scope: bool, - within_frame_scope_with_implicit_window: bool, - within_end_child: bool, - gc_compact_all: bool, - test_engine_hook_items: bool, - test_engine: ?*anyopaque, - windows: WindowPtrVector, - windows_focus_order: WindowPtrVector, - windows_temp_sort_buffer: WindowPtrVector, - current_window_stack: WindowStackDataVector, - windows_by_id: Storage, - windows_active_count: c_int, - windows_hover_padding: Vec2, - current_window: [*c]Window, - hovered_window: [*c]Window, - hovered_window_under_moving_window: [*c]Window, - hovered_dock_node: [*c]DockNode, - moving_window: [*c]Window, - wheeling_window: [*c]Window, - wheeling_window_ref_mouse_pos: Vec2, - wheeling_window_timer: f32, - debug_hook_id_info: ID, - hovered_id: ID, - hovered_id_previous_frame: ID, - hovered_id_allow_overlap: bool, - hovered_id_using_mouse_wheel: bool, - hovered_id_previous_frame_using_mouse_wheel: bool, - hovered_id_disabled: bool, - hovered_id_timer: f32, - hovered_id_not_active_timer: f32, - active_id: ID, - active_id_is_alive: ID, - active_id_timer: f32, - active_id_is_just_activated: bool, - active_id_allow_overlap: bool, - active_id_no_clear_on_focus_loss: bool, - active_id_has_been_pressed_before: bool, - active_id_has_been_edited_before: bool, - active_id_has_been_edited_this_frame: bool, - active_id_click_offset: Vec2, - active_id_window: [*c]Window, - active_id_source: InputSource, - active_id_mouse_button: c_int, - active_id_previous_frame: ID, - active_id_previous_frame_is_alive: bool, - active_id_previous_frame_has_been_edited_before: bool, - active_id_previous_frame_window: [*c]Window, - last_active_id: ID, - last_active_id_timer: f32, - active_id_using_mouse_wheel: bool, - active_id_using_nav_dir_mask: U32, - active_id_using_nav_input_mask: U32, - active_id_using_key_input_mask: BitArrayForNamedKeys, - current_item_flags: ItemFlags, - next_item_data: NextItemData, - last_item_data: LastItemData, - next_window_data: NextWindowData, - color_stack: ColorModVector, - style_var_stack: StyleModVector, - font_stack: FontPtrVector, - focus_scope_stack: IDVector, - item_flags_stack: ItemFlagsVector, - group_stack: GroupDataVector, - open_popup_stack: PopupDataVector, - begin_popup_stack: PopupDataVector, - begin_menu_count: c_int, - viewports: ViewportPPtrVector, - current_dpi_scale: f32, - current_viewport: [*c]ViewportP, - mouse_viewport: [*c]ViewportP, - mouse_last_hovered_viewport: [*c]ViewportP, - platform_last_focused_viewport_id: ID, - fallback_monitor: PlatformMonitor, - viewport_front_most_stamp_count: c_int, - nav_window: [*c]Window, - nav_id: ID, - nav_focus_scope_id: ID, - nav_activate_id: ID, - nav_activate_down_id: ID, - nav_activate_pressed_id: ID, - nav_activate_input_id: ID, - nav_activate_flags: ActivateFlags, - nav_just_moved_to_id: ID, - nav_just_moved_to_focus_scope_id: ID, - nav_just_moved_to_key_mods: ModFlags, - nav_next_activate_id: ID, - nav_next_activate_flags: ActivateFlags, - nav_input_source: InputSource, - nav_layer: NavLayer, - nav_id_is_alive: bool, - nav_mouse_pos_dirty: bool, - nav_disable_highlight: bool, - nav_disable_mouse_hover: bool, - nav_any_request: bool, - nav_init_request: bool, - nav_init_request_from_move: bool, - nav_init_result_id: ID, - nav_init_result_rect_rel: Rect, - nav_move_submitted: bool, - nav_move_scoring_items: bool, - nav_move_forward_to_next_frame: bool, - nav_move_flags: NavMoveFlags, - nav_move_scroll_flags: ScrollFlags, - nav_move_key_mods: ModFlags, - nav_move_dir: Dir, - nav_move_dir_for_debug: Dir, - nav_move_clip_dir: Dir, - nav_scoring_rect: Rect, - nav_scoring_no_clip_rect: Rect, - nav_scoring_debug_count: c_int, - nav_tabbing_dir: c_int, - nav_tabbing_counter: c_int, - nav_move_result_local: NavItemData, - nav_move_result_local_visible: NavItemData, - nav_move_result_other: NavItemData, - nav_tabbing_result_first: NavItemData, - nav_windowing_target: [*c]Window, - nav_windowing_target_anim: [*c]Window, - nav_windowing_list_window: [*c]Window, - nav_windowing_timer: f32, - nav_windowing_highlight_alpha: f32, - nav_windowing_toggle_layer: bool, - dim_bg_ratio: f32, - mouse_cursor: MouseCursor, - drag_drop_active: bool, - drag_drop_within_source: bool, - drag_drop_within_target: bool, - drag_drop_source_flags: DragDropFlags, - drag_drop_source_frame_count: c_int, - drag_drop_mouse_button: c_int, - drag_drop_payload: Payload, - drag_drop_target_rect: Rect, - drag_drop_target_id: ID, - drag_drop_accept_flags: DragDropFlags, - drag_drop_accept_id_curr_rect_surface: f32, - drag_drop_accept_id_curr: ID, - drag_drop_accept_id_prev: ID, - drag_drop_accept_frame_count: c_int, - drag_drop_hold_just_pressed_id: ID, - drag_drop_payload_buf_heap: u8Vector, - drag_drop_payload_buf_local: [16]u8, - clipper_temp_data_stacked: c_int, - clipper_temp_data: ListClipperDataVector, - current_table: [*c]Table, - tables_temp_data_stacked: c_int, - tables_temp_data: TableTempDataVector, - tables: Table, - tables_last_time_active: f32Vector, - draw_channels_temp_merge_buffer: DrawChannelVector, - current_tab_bar: [*c]TabBar, - tab_bars: TabBar, - current_tab_bar_stack: PtrOrIndexVector, - shrink_width_buffer: ShrinkWidthItemVector, - mouse_last_valid_pos: Vec2, - input_text_state: InputTextState, - input_text_password_font: Font, - temp_input_id: ID, - color_edit_options: ColorEditFlags, - color_edit_last_hue: f32, - color_edit_last_sat: f32, - color_edit_last_color: U32, - color_picker_ref: Vec4, - combo_preview_data: ComboPreviewData, - slider_grab_click_offset: f32, - slider_current_accum: f32, - slider_current_accum_dirty: bool, - drag_current_accum_dirty: bool, - drag_current_accum: f32, - drag_speed_default_ratio: f32, - scrollbar_click_delta_to_grab_center: f32, - disabled_alpha_backup: f32, - disabled_stack_size: c_short, - tooltip_override_count: c_short, - tooltip_slow_delay: f32, - clipboard_handler_data: u8Vector, - menus_id_submitted_this_frame: IDVector, - platform_ime_data: PlatformImeData, - platform_ime_data_prev: PlatformImeData, - platform_ime_viewport: ID, - platform_locale_decimal_point: u8, - dock_context: DockContext, - settings_loaded: bool, - settings_dirty_timer: f32, - settings_ini_data: TextBuffer, - settings_handlers: SettingsHandlerVector, - settings_windows: WindowSettings, - settings_tables: TableSettings, - hooks: ContextHookVector, - hook_id_next: ID, - log_enabled: bool, - log_type: LogType, - log_file: FileHandle, - log_buffer: TextBuffer, - log_next_prefix: [*c]const u8, - log_next_suffix: [*c]const u8, - log_line_pos_y: f32, - log_line_first_item: bool, - log_depth_ref: c_int, - log_depth_to_expand: c_int, - log_depth_to_expand_default: c_int, - debug_log_flags: DebugLogFlags, - debug_log_buf: TextBuffer, - debug_item_picker_active: bool, - debug_item_picker_break_id: ID, - debug_metrics_config: MetricsConfig, - debug_stack_tool: StackTool, - framerate_sec_per_frame: [120]f32, - framerate_sec_per_frame_idx: c_int, - framerate_sec_per_frame_count: c_int, - framerate_sec_per_frame_accum: f32, - want_capture_mouse_next_frame: c_int, - want_capture_keyboard_next_frame: c_int, - want_text_input_next_frame: c_int, - temp_buffer: u8Vector, -}; - -pub const DrawChannelVector = extern struct { // struct ImVector_ImDrawChannel - size: c_int, - capacity: c_int, - data: [*c]DrawChannel, -}; - -pub const DrawChannel = extern struct { // struct ImDrawChannel - _cmd_buffer: DrawCmdVector, - _idx_buffer: DrawIdxVector, -}; - -pub const DrawCmdVector = extern struct { // struct ImVector_ImDrawCmd - size: c_int, - capacity: c_int, - data: [*c]DrawCmd, -}; - -pub const DrawIdxVector = extern struct { // struct ImVector_ImDrawIdx - size: c_int, - capacity: c_int, - data: [*c]DrawIdx, -}; - -pub const f32Vector = extern struct { // struct ImVector_float - size: c_int, - capacity: c_int, - data: [*c]f32, -}; - -pub const FontPtrVector = extern struct { // struct ImVector_ImFontPtr - size: c_int, - capacity: c_int, - data: [*c]Font, -}; - -pub const Payload = extern struct { // struct ImGuiPayload - data: ?*anyopaque, - data_size: c_int, - source_id: ID, - source_parent_id: ID, - data_frame_count: c_int, - data_type: [32 + 1]u8, - preview: bool, - delivery: bool, -}; - -pub const ListClipper = extern struct { // struct ImGuiListClipper - display_start: c_int, - display_end: c_int, - items_count: c_int, - items_height: f32, - start_pos_y: f32, - temp_data: ?*anyopaque, -}; - -pub const Storage = struct { // struct ImGuiStorage - data: StoragePairVector, -}; - -pub const StoragePairVector = struct { - size: c_int, - capacity: c_int, - data: ?*StoragePair, -}; - -pub const WindowClass = extern struct { // struct ImGuiWindowClass - class_id: ID, - parent_viewport_id: ID, - viewport_flags_override_set: ViewportFlags, - viewport_flags_override_clear: ViewportFlags, - tab_item_flags_override_set: TabItemFlags, - dock_node_flags_override_set: DockNodeFlags, - docking_always_tab_bar: bool, - docking_allow_unclassed: bool, -}; - -pub const InputTextCallbackData = extern struct { // struct ImGuiInputTextCallbackData - event_flag: InputTextFlags, - flags: InputTextFlags, - user_data: ?*anyopaque, - event_char: Wchar, - event_key: Key, - buf: [*c]u8, - buf_text_len: c_int, - buf_size: c_int, - buf_dirty: bool, - cursor_pos: c_int, - selection_start: c_int, - selection_end: c_int, -}; - -pub const SizeCallbackData = extern struct { // struct ImGuiSizeCallbackData - user_data: ?*anyopaque, - pos: Vec2, - current_size: Vec2, - desired_size: Vec2, -}; - -pub const DrawData = extern struct { // struct ImDrawData - valid: bool, - cmd_lists_count: c_int, - total_idx_count: c_int, - total_vtx_count: c_int, - cmd_lists: [*c]DrawList, - display_pos: Vec2, - display_size: Vec2, - framebuffer_scale: Vec2, - owner_viewport: [*c]Viewport, -}; - -pub const FontGlyphVector = extern struct { // struct ImVector_ImFontGlyph - size: c_int, - capacity: c_int, - data: ?*FontGlyph, -}; - -pub const Font = extern struct { // struct ImFont - index_advance_x: f32Vector, - fallback_advance_x: f32, - font_size: f32, - index_lookup: WcharVector, - glyphs: FontGlyphVector, - fallback_glyph: ?*FontGlyph, - container_atlas: [*c]FontAtlas, - config_data: [*c]const FontConfig, - config_data_count: c_short, - fallback_char: Wchar, - ellipsis_char: Wchar, - dot_char: Wchar, - dirty_lookup_tables: bool, - scale: f32, - ascent: f32, - descent: f32, - metrics_total_surface: c_int, - used4k_pages_map: [(0xFFFF + 1) / 4096 / 8]U8, -}; - -pub const DrawCmd = extern struct { // struct ImDrawCmd - clip_rect: Vec4, - texture_id: TextureID, - vtx_offset: c_uint, - idx_offset: c_uint, - elem_count: c_uint, - user_callback: DrawCallback, - user_callback_data: ?*anyopaque, -}; - -pub const DrawVert = extern struct { // struct ImDrawVert - pos: Vec2, - uv: Vec2, - col: U32, -}; - -pub const DrawCmdHeader = extern struct { // struct ImDrawCmdHeader - clip_rect: Vec4, - texture_id: TextureID, - vtx_offset: c_uint, -}; - -pub const DrawListSplitter = extern struct { // struct ImDrawListSplitter - _current: c_int, - _count: c_int, - _channels: DrawChannelVector, -}; - -pub inline fn createContext(shared_font_atlas: [*c]FontAtlas) [*c]Context { //igCreateContext - return c.igCreateContext(shared_font_atlas); -} -pub inline fn destroyContext(ctx: [*c]Context) void { //igDestroyContext - c.igDestroyContext(ctx); -} -pub inline fn getCurrentContext() ?*Context { //igGetCurrentContext - return @ptrCast(c.igGetCurrentContext()); -} -pub inline fn setCurrentContext(ctx: [*c]Context) void { //igSetCurrentContext - c.igSetCurrentContext(ctx); -} -pub inline fn getIO() ?*Io { //igGetIO - return @ptrCast(c.igGetIO()); -} -pub inline fn getStyle() ?*Style { //igGetStyle - return @ptrCast(c.igGetStyle()); -} -pub inline fn newFrame() void { //igNewFrame - c.igNewFrame(); -} -pub inline fn endFrame() void { //igEndFrame - c.igEndFrame(); -} -pub inline fn render() void { //igRender - c.igRender(); -} -pub inline fn getDrawData() [*c]DrawData { //igGetDrawData - return c.igGetDrawData(); -} -pub inline fn showDemoWindow(p_open: [*c]bool) void { //igShowDemoWindow - c.igShowDemoWindow(p_open); -} -pub inline fn showMetricsWindow(p_open: [*c]bool) void { //igShowMetricsWindow - c.igShowMetricsWindow(p_open); -} -pub inline fn showDebugLogWindow(p_open: [*c]bool) void { //igShowDebugLogWindow - c.igShowDebugLogWindow(p_open); -} -pub inline fn showStackToolWindow(p_open: [*c]bool) void { //igShowStackToolWindow - c.igShowStackToolWindow(p_open); -} -pub inline fn showAboutWindow(p_open: [*c]bool) void { //igShowAboutWindow - c.igShowAboutWindow(p_open); -} -pub inline fn showStyleEditor(ref: [*c]Style) void { //igShowStyleEditor - c.igShowStyleEditor(ref); -} -pub inline fn showStyleSelector(label: [*c]const u8) bool { //igShowStyleSelector - return c.igShowStyleSelector(label); -} -pub inline fn showFontSelector(label: [*c]const u8) void { //igShowFontSelector - c.igShowFontSelector(label); -} -pub inline fn showUserGuide() void { //igShowUserGuide - c.igShowUserGuide(); -} -pub inline fn getVersion() [*c]const u8 { //igGetVersion - return c.igGetVersion(); -} -pub inline fn styleColorsDark(dst: [*c]Style) void { //igStyleColorsDark - c.igStyleColorsDark(dst); -} -pub inline fn styleColorsLight(dst: [*c]Style) void { //igStyleColorsLight - c.igStyleColorsLight(dst); -} -pub inline fn styleColorsClassic(dst: [*c]Style) void { //igStyleColorsClassic - c.igStyleColorsClassic(dst); -} -pub inline fn begin(name: [*c]const u8, p_open: [*c]bool, flags: WindowFlags) bool { //igBegin - return c.igBegin(name, p_open, @bitCast(flags)); -} -pub inline fn end() void { //igEnd - c.igEnd(); -} -pub inline fn beginChild_Str(str_id: [*c]const u8, size: Vec2, border: bool, flags: WindowFlags) bool { //igBeginChild_Str - return c.igBeginChild_Str(str_id, @bitCast(size), border, @bitCast(flags)); -} -pub inline fn beginChild_ID(id: ID, size: Vec2, border: bool, flags: WindowFlags) bool { //igBeginChild_ID - return c.igBeginChild_ID(id, @bitCast(size), border, @bitCast(flags)); -} -pub inline fn endChild() void { //igEndChild - c.igEndChild(); -} -pub inline fn isWindowAppearing() bool { //igIsWindowAppearing - return c.igIsWindowAppearing(); -} -pub inline fn isWindowCollapsed() bool { //igIsWindowCollapsed - return c.igIsWindowCollapsed(); -} -pub inline fn isWindowFocused(flags: FocusedFlags) bool { //igIsWindowFocused - return c.igIsWindowFocused(@bitCast(flags)); -} -pub inline fn isWindowHovered(flags: HoveredFlags) bool { //igIsWindowHovered - return c.igIsWindowHovered(@bitCast(flags)); -} -pub inline fn getWindowDrawList() [*c]DrawList { //igGetWindowDrawList - return c.igGetWindowDrawList(); -} -pub inline fn getWindowDpiScale() f32 { //igGetWindowDpiScale - return c.igGetWindowDpiScale(); -} -pub inline fn getWindowPos(pout: [*c]Vec2) void { //igGetWindowPos - c.igGetWindowPos(pout); -} -pub inline fn getWindowSize(pout: [*c]Vec2) void { //igGetWindowSize - c.igGetWindowSize(pout); -} -pub inline fn getWindowWidth() f32 { //igGetWindowWidth - return c.igGetWindowWidth(); -} -pub inline fn getWindowHeight() f32 { //igGetWindowHeight - return c.igGetWindowHeight(); -} -pub inline fn getWindowViewport() [*c]Viewport { //igGetWindowViewport - return c.igGetWindowViewport(); -} -pub inline fn setNextWindowPos(pos: Vec2, cond: Cond, pivot: Vec2) void { //igSetNextWindowPos - c.igSetNextWindowPos(@bitCast(pos), @bitCast(cond), @bitCast(pivot)); -} -pub inline fn setNextWindowSize(size: Vec2, cond: Cond) void { //igSetNextWindowSize - c.igSetNextWindowSize(@bitCast(size), @bitCast(cond)); -} -pub inline fn setNextWindowSizeConstraints(size_min: Vec2, size_max: Vec2, custom_callback: SizeCallback, custom_callback_data: ?*anyopaque) void { //igSetNextWindowSizeConstraints - c.igSetNextWindowSizeConstraints(@bitCast(size_min), @bitCast(size_max), custom_callback, custom_callback_data); -} -pub inline fn setNextWindowContentSize(size: Vec2) void { //igSetNextWindowContentSize - c.igSetNextWindowContentSize(@bitCast(size)); -} -pub inline fn setNextWindowCollapsed(collapsed: bool, cond: Cond) void { //igSetNextWindowCollapsed - c.igSetNextWindowCollapsed(collapsed, @bitCast(cond)); -} -pub inline fn setNextWindowFocus() void { //igSetNextWindowFocus - c.igSetNextWindowFocus(); -} -pub inline fn setNextWindowBgAlpha(alpha: f32) void { //igSetNextWindowBgAlpha - c.igSetNextWindowBgAlpha(alpha); -} -pub inline fn setNextWindowViewport(viewport_id: ID) void { //igSetNextWindowViewport - c.igSetNextWindowViewport(viewport_id); -} -pub inline fn setWindowPos_Vec2(pos: Vec2, cond: Cond) void { //igSetWindowPos_Vec2 - c.igSetWindowPos_Vec2(@bitCast(pos), @bitCast(cond)); -} -pub inline fn setWindowSize_Vec2(size: Vec2, cond: Cond) void { //igSetWindowSize_Vec2 - c.igSetWindowSize_Vec2(@bitCast(size), @bitCast(cond)); -} -pub inline fn setWindowCollapsed_Bool(collapsed: bool, cond: Cond) void { //igSetWindowCollapsed_Bool - c.igSetWindowCollapsed_Bool(collapsed, @bitCast(cond)); -} -pub inline fn setWindowFocus_Nil() void { //igSetWindowFocus_Nil - c.igSetWindowFocus_Nil(); -} -pub inline fn setWindowFontScale(scale: f32) void { //igSetWindowFontScale - c.igSetWindowFontScale(scale); -} -pub inline fn setWindowPos_Str(name: [*c]const u8, pos: Vec2, cond: Cond) void { //igSetWindowPos_Str - c.igSetWindowPos_Str(name, @bitCast(pos), @bitCast(cond)); -} -pub inline fn setWindowSize_Str(name: [*c]const u8, size: Vec2, cond: Cond) void { //igSetWindowSize_Str - c.igSetWindowSize_Str(name, @bitCast(size), @bitCast(cond)); -} -pub inline fn setWindowCollapsed_Str(name: [*c]const u8, collapsed: bool, cond: Cond) void { //igSetWindowCollapsed_Str - c.igSetWindowCollapsed_Str(name, collapsed, @bitCast(cond)); -} -pub inline fn setWindowFocus_Str(name: [*c]const u8) void { //igSetWindowFocus_Str - c.igSetWindowFocus_Str(name); -} -pub inline fn getContentRegionAvail(pout: [*c]Vec2) void { //igGetContentRegionAvail - c.igGetContentRegionAvail(pout); -} -pub inline fn getContentRegionMax(pout: [*c]Vec2) void { //igGetContentRegionMax - c.igGetContentRegionMax(pout); -} -pub inline fn getWindowContentRegionMin(pout: [*c]Vec2) void { //igGetWindowContentRegionMin - c.igGetWindowContentRegionMin(pout); -} -pub inline fn getWindowContentRegionMax(pout: [*c]Vec2) void { //igGetWindowContentRegionMax - c.igGetWindowContentRegionMax(pout); -} -pub inline fn getScrollX() f32 { //igGetScrollX - return c.igGetScrollX(); -} -pub inline fn getScrollY() f32 { //igGetScrollY - return c.igGetScrollY(); -} -pub inline fn setScrollX_Float(scroll_x: f32) void { //igSetScrollX_Float - c.igSetScrollX_Float(scroll_x); -} -pub inline fn setScrollY_Float(scroll_y: f32) void { //igSetScrollY_Float - c.igSetScrollY_Float(scroll_y); -} -pub inline fn getScrollMaxX() f32 { //igGetScrollMaxX - return c.igGetScrollMaxX(); -} -pub inline fn getScrollMaxY() f32 { //igGetScrollMaxY - return c.igGetScrollMaxY(); -} -pub inline fn setScrollHereX(center_x_ratio: f32) void { //igSetScrollHereX - c.igSetScrollHereX(center_x_ratio); -} -pub inline fn setScrollHereY(center_y_ratio: f32) void { //igSetScrollHereY - c.igSetScrollHereY(center_y_ratio); -} -pub inline fn setScrollFromPosX_Float(local_x: f32, center_x_ratio: f32) void { //igSetScrollFromPosX_Float - c.igSetScrollFromPosX_Float(local_x, center_x_ratio); -} -pub inline fn setScrollFromPosY_Float(local_y: f32, center_y_ratio: f32) void { //igSetScrollFromPosY_Float - c.igSetScrollFromPosY_Float(local_y, center_y_ratio); -} -pub inline fn pushFont(font: [*c]Font) void { //igPushFont - c.igPushFont(font); -} -pub inline fn popFont() void { //igPopFont - c.igPopFont(); -} -pub inline fn pushStyleColor_U32(idx: StyleColor, col: U32) void { //igPushStyleColor_U32 - c.igPushStyleColor_U32(idx, col); -} -pub inline fn pushStyleColor_Vec4(idx: StyleColor, col: Vec4) void { //igPushStyleColor_Vec4 - c.igPushStyleColor_Vec4(idx, @bitCast(col)); -} -pub inline fn popStyleColor(count: c_int) void { //igPopStyleColor - c.igPopStyleColor(count); -} -pub inline fn pushStyleVar_Float(idx: StyleVar, val: f32) void { //igPushStyleVar_Float - c.igPushStyleVar_Float(@intFromEnum(idx), val); -} -pub inline fn pushStyleVar_Vec2(idx: StyleVar, val: Vec2) void { //igPushStyleVar_Vec2 - c.igPushStyleVar_Vec2(@intFromEnum(idx), @bitCast(val)); -} -pub inline fn popStyleVar(count: c_int) void { //igPopStyleVar - c.igPopStyleVar(count); -} -pub inline fn pushAllowKeyboardFocus(allow_keyboard_focus: bool) void { //igPushAllowKeyboardFocus - c.igPushAllowKeyboardFocus(allow_keyboard_focus); -} -pub inline fn popAllowKeyboardFocus() void { //igPopAllowKeyboardFocus - c.igPopAllowKeyboardFocus(); -} -pub inline fn pushButtonRepeat(repeat: bool) void { //igPushButtonRepeat - c.igPushButtonRepeat(repeat); -} -pub inline fn popButtonRepeat() void { //igPopButtonRepeat - c.igPopButtonRepeat(); -} -pub inline fn pushItemWidth(item_width: f32) void { //igPushItemWidth - c.igPushItemWidth(item_width); -} -pub inline fn popItemWidth() void { //igPopItemWidth - c.igPopItemWidth(); -} -pub inline fn setNextItemWidth(item_width: f32) void { //igSetNextItemWidth - c.igSetNextItemWidth(item_width); -} -pub inline fn calcItemWidth() f32 { //igCalcItemWidth - return c.igCalcItemWidth(); -} -pub inline fn pushTextWrapPos(wrap_local_pos_x: f32) void { //igPushTextWrapPos - c.igPushTextWrapPos(wrap_local_pos_x); -} -pub inline fn popTextWrapPos() void { //igPopTextWrapPos - c.igPopTextWrapPos(); -} -pub inline fn getFont() [*c]Font { //igGetFont - return c.igGetFont(); -} -pub inline fn getFontSize() f32 { //igGetFontSize - return c.igGetFontSize(); -} -pub inline fn getFontTexUvWhitePixel(pout: [*c]Vec2) void { //igGetFontTexUvWhitePixel - c.igGetFontTexUvWhitePixel(pout); -} -pub inline fn getColorU32_Col(idx: StyleColor, alpha_mul: f32) U32 { //igGetColorU32_Col - return c.igGetColorU32_Col(idx, alpha_mul); -} -pub inline fn getColorU32_Vec4(col: Vec4) U32 { //igGetColorU32_Vec4 - return c.igGetColorU32_Vec4(@bitCast(col)); -} -pub inline fn getColorU32_U32(col: U32) U32 { //igGetColorU32_U32 - return c.igGetColorU32_U32(col); -} -pub inline fn getStyleColorVec4(idx: StyleColor) [*c]const Vec4 { //igGetStyleColorVec4 - return c.igGetStyleColorVec4(idx); -} -pub inline fn separator() void { //igSeparator - c.igSeparator(); -} -pub inline fn sameLine(offset_from_start_x: f32, space: f32) void { //igSameLine - c.igSameLine(offset_from_start_x, space); -} -pub inline fn newLine() void { //igNewLine - c.igNewLine(); -} -pub inline fn spacing() void { //igSpacing - c.igSpacing(); -} -pub inline fn dummy(size: Vec2) void { //igDummy - c.igDummy(@bitCast(size)); -} -pub inline fn indent(indent_w: f32) void { //igIndent - c.igIndent(indent_w); -} -pub inline fn unindent(indent_w: f32) void { //igUnindent - c.igUnindent(indent_w); -} -pub inline fn beginGroup() void { //igBeginGroup - c.igBeginGroup(); -} -pub inline fn endGroup() void { //igEndGroup - c.igEndGroup(); -} -pub inline fn getCursorPos(pout: [*c]Vec2) void { //igGetCursorPos - c.igGetCursorPos(pout); -} -pub inline fn getCursorPosX() f32 { //igGetCursorPosX - return c.igGetCursorPosX(); -} -pub inline fn getCursorPosY() f32 { //igGetCursorPosY - return c.igGetCursorPosY(); -} -pub inline fn setCursorPos(local_pos: Vec2) void { //igSetCursorPos - c.igSetCursorPos(@bitCast(local_pos)); -} -pub inline fn setCursorPosX(local_x: f32) void { //igSetCursorPosX - c.igSetCursorPosX(local_x); -} -pub inline fn setCursorPosY(local_y: f32) void { //igSetCursorPosY - c.igSetCursorPosY(local_y); -} -pub inline fn getCursorStartPos(pout: [*c]Vec2) void { //igGetCursorStartPos - c.igGetCursorStartPos(pout); -} -pub inline fn getCursorScreenPos(pout: [*c]Vec2) void { //igGetCursorScreenPos - c.igGetCursorScreenPos(pout); -} -pub inline fn setCursorScreenPos(pos: Vec2) void { //igSetCursorScreenPos - c.igSetCursorScreenPos(@bitCast(pos)); -} -pub inline fn alignTextToFramePadding() void { //igAlignTextToFramePadding - c.igAlignTextToFramePadding(); -} -pub inline fn getTextLineHeight() f32 { //igGetTextLineHeight - return c.igGetTextLineHeight(); -} -pub inline fn getTextLineHeightWithSpacing() f32 { //igGetTextLineHeightWithSpacing - return c.igGetTextLineHeightWithSpacing(); -} -pub inline fn getFrameHeight() f32 { //igGetFrameHeight - return c.igGetFrameHeight(); -} -pub inline fn getFrameHeightWithSpacing() f32 { //igGetFrameHeightWithSpacing - return c.igGetFrameHeightWithSpacing(); -} -pub inline fn pushID_Str(str_id: [*c]const u8) void { //igPushID_Str - c.igPushID_Str(str_id); -} -pub inline fn pushID_StrStr(str_id_begin: [*c]const u8, str_id_end: [*c]const u8) void { //igPushID_StrStr - c.igPushID_StrStr(str_id_begin, str_id_end); -} -pub inline fn pushID_Ptr(ptr_id: [*c]const void) void { //igPushID_Ptr - c.igPushID_Ptr(ptr_id); -} -pub inline fn pushID_Int(int_id: c_int) void { //igPushID_Int - c.igPushID_Int(int_id); -} -pub inline fn popID() void { //igPopID - c.igPopID(); -} -pub inline fn getID_Str(str_id: [*c]const u8) ID { //igGetID_Str - return c.igGetID_Str(str_id); -} -pub inline fn getID_StrStr(str_id_begin: [*c]const u8, str_id_end: [*c]const u8) ID { //igGetID_StrStr - return c.igGetID_StrStr(str_id_begin, str_id_end); -} -pub inline fn getID_Ptr(ptr_id: [*c]const void) ID { //igGetID_Ptr - return c.igGetID_Ptr(ptr_id); -} -pub inline fn textUnformatted(text: [*c]const u8, text_end: [*c]const u8) void { //igTextUnformatted - c.igTextUnformatted(text, text_end); -} -pub inline fn button(label: [*c]const u8, size: Vec2) bool { //igButton - return c.igButton(label, @bitCast(size)); -} -pub inline fn smallButton(label: [*c]const u8) bool { //igSmallButton - return c.igSmallButton(label); -} -pub inline fn invisibleButton(str_id: [*c]const u8, size: Vec2, flags: ButtonFlags) bool { //igInvisibleButton - return c.igInvisibleButton(str_id, @bitCast(size), flags); -} -pub inline fn arrowButton(str_id: [*c]const u8, dir: Dir) bool { //igArrowButton - return c.igArrowButton(str_id, @intFromEnum(dir)); -} -pub inline fn image(user_texture_id: TextureID, size: Vec2, uv0: Vec2, uv1: Vec2, tint_col: Vec4, border_col: Vec4) void { //igImage - c.igImage(user_texture_id, @bitCast(size), @bitCast(uv0), @bitCast(uv1), @bitCast(tint_col), @bitCast(border_col)); -} -pub inline fn imageButton(user_texture_id: TextureID, size: Vec2, uv0: Vec2, uv1: Vec2, frame_padding: c_int, bg_col: Vec4, tint_col: Vec4) bool { //igImageButton - return c.igImageButton(user_texture_id, @bitCast(size), @bitCast(uv0), @bitCast(uv1), frame_padding, @bitCast(bg_col), @bitCast(tint_col)); -} -pub inline fn checkbox(label: [*c]const u8, v: [*c]bool) bool { //igCheckbox - return c.igCheckbox(label, v); -} -pub inline fn checkboxFlags_IntPtr(label: [*c]const u8, flags: [*c]c_int, flags_value: c_int) bool { //igCheckboxFlags_IntPtr - return c.igCheckboxFlags_IntPtr(label, flags, flags_value); -} -pub inline fn checkboxFlags_UintPtr(label: [*c]const u8, flags: [*c]c_uint, flags_value: c_uint) bool { //igCheckboxFlags_UintPtr - return c.igCheckboxFlags_UintPtr(label, flags, flags_value); -} -pub inline fn radioButton_Bool(label: [*c]const u8, active: bool) bool { //igRadioButton_Bool - return c.igRadioButton_Bool(label, active); -} -pub inline fn radioButton_IntPtr(label: [*c]const u8, v: [*c]c_int, v_button: c_int) bool { //igRadioButton_IntPtr - return c.igRadioButton_IntPtr(label, v, v_button); -} -pub inline fn progressBar(fraction: f32, size_arg: Vec2, overlay: [*c]const u8) void { //igProgressBar - c.igProgressBar(fraction, @bitCast(size_arg), overlay); -} -pub inline fn bullet() void { //igBullet - c.igBullet(); -} -pub inline fn beginCombo(label: [*c]const u8, preview_value: [*c]const u8, flags: ComboFlags) bool { //igBeginCombo - return c.igBeginCombo(label, preview_value, @bitCast(flags)); -} -pub inline fn endCombo() void { //igEndCombo - c.igEndCombo(); -} -pub inline fn combo_Str(label: [*c]const u8, current_item: [*c]c_int, items_separated_by_zeros: [*c]const u8, popup_max_height_in_items: c_int) bool { //igCombo_Str - return c.igCombo_Str(label, current_item, items_separated_by_zeros, popup_max_height_in_items); -} -pub inline fn dragFloat(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: SliderFlags) bool { //igDragFloat - return c.igDragFloat(label, v, v_speed, v_min, v_max, format, @bitCast(flags)); -} -pub inline fn dragFloatRange2(label: [*c]const u8, v_current_min: [*c]f32, v_current_max: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, format_max: [*c]const u8, flags: SliderFlags) bool { //igDragFloatRange2 - return c.igDragFloatRange2(label, v_current_min, v_current_max, v_speed, v_min, v_max, format, format_max, @bitCast(flags)); -} -pub inline fn dragInt(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: SliderFlags) bool { //igDragInt - return c.igDragInt(label, v, v_speed, v_min, v_max, format, @bitCast(flags)); -} -pub inline fn dragIntRange2(label: [*c]const u8, v_current_min: [*c]c_int, v_current_max: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, format_max: [*c]const u8, flags: SliderFlags) bool { //igDragIntRange2 - return c.igDragIntRange2(label, v_current_min, v_current_max, v_speed, v_min, v_max, format, format_max, @bitCast(flags)); -} -pub inline fn dragScalar(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, v_speed: f32, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igDragScalar - return c.igDragScalar(label, @intFromEnum(data_type), p_data, v_speed, p_min, p_max, format, @bitCast(flags)); -} -pub inline fn dragScalarN(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, components: c_int, v_speed: f32, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igDragScalarN - return c.igDragScalarN(label, @intFromEnum(data_type), p_data, components, v_speed, p_min, p_max, format, @bitCast(flags)); -} -pub inline fn sliderFloat(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: SliderFlags) bool { //igSliderFloat - return c.igSliderFloat(label, v, v_min, v_max, format, @bitCast(flags)); -} -pub inline fn sliderAngle(label: [*c]const u8, v_rad: [*c]f32, v_degrees_min: f32, v_degrees_max: f32, format: [*c]const u8, flags: SliderFlags) bool { //igSliderAngle - return c.igSliderAngle(label, v_rad, v_degrees_min, v_degrees_max, format, @bitCast(flags)); -} -pub inline fn sliderInt(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: SliderFlags) bool { //igSliderInt - return c.igSliderInt(label, v, v_min, v_max, format, @bitCast(flags)); -} -pub inline fn sliderScalar(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igSliderScalar - return c.igSliderScalar(label, @intFromEnum(data_type), p_data, p_min, p_max, format, @bitCast(flags)); -} -pub inline fn sliderScalarN(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, components: c_int, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igSliderScalarN - return c.igSliderScalarN(label, @intFromEnum(data_type), p_data, components, p_min, p_max, format, @bitCast(flags)); -} -pub inline fn vSliderFloat(label: [*c]const u8, size: Vec2, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: SliderFlags) bool { //igVSliderFloat - return c.igVSliderFloat(label, @bitCast(size), v, v_min, v_max, format, @bitCast(flags)); -} -pub inline fn vSliderInt(label: [*c]const u8, size: Vec2, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: SliderFlags) bool { //igVSliderInt - return c.igVSliderInt(label, @bitCast(size), v, v_min, v_max, format, @bitCast(flags)); -} -pub inline fn vSliderScalar(label: [*c]const u8, size: Vec2, data_type: DataType, p_data: ?*anyopaque, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igVSliderScalar - return c.igVSliderScalar(label, @bitCast(size), @intFromEnum(data_type), p_data, p_min, p_max, format, @bitCast(flags)); -} -pub inline fn inputText(label: [*c]const u8, buf: [*c]u8, buf_size: usize, flags: InputTextFlags, callback: InputTextCallback, user_data: ?*anyopaque) bool { //igInputText - return c.igInputText(label, buf, buf_size, @bitCast(flags), callback, user_data); -} -pub inline fn inputTextMultiline(label: [*c]const u8, buf: [*c]u8, buf_size: usize, size: Vec2, flags: InputTextFlags, callback: InputTextCallback, user_data: ?*anyopaque) bool { //igInputTextMultiline - return c.igInputTextMultiline(label, buf, buf_size, @bitCast(size), @bitCast(flags), callback, user_data); -} -pub inline fn inputTextWithHint(label: [*c]const u8, hint: [*c]const u8, buf: [*c]u8, buf_size: usize, flags: InputTextFlags, callback: InputTextCallback, user_data: ?*anyopaque) bool { //igInputTextWithHint - return c.igInputTextWithHint(label, hint, buf, buf_size, @bitCast(flags), callback, user_data); -} -pub inline fn inputFloat(label: [*c]const u8, v: [*c]f32, step: f32, step_fast: f32, format: [*c]const u8, flags: InputTextFlags) bool { //igInputFloat - return c.igInputFloat(label, v, step, step_fast, format, @bitCast(flags)); -} -pub inline fn inputInt(label: [*c]const u8, v: [*c]c_int, step: c_int, step_fast: c_int, flags: InputTextFlags) bool { //igInputInt - return c.igInputInt(label, v, step, step_fast, @bitCast(flags)); -} - -pub inline fn inputDouble(label: [*c]const u8, v: [*c]f64, step: f64, step_fast: f64, format: [*c]const u8, flags: InputTextFlags) bool { //igInputDouble - return c.igInputDouble(label, v, step, step_fast, format, @bitCast(flags)); -} -pub inline fn inputScalar(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, p_step: [*c]const void, p_step_fast: [*c]const void, format: [*c]const u8, flags: InputTextFlags) bool { //igInputScalar - return c.igInputScalar(label, @intFromEnum(data_type), p_data, p_step, p_step_fast, format, @bitCast(flags)); -} -pub inline fn inputScalarN(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, components: c_int, p_step: [*c]const void, p_step_fast: [*c]const void, format: [*c]const u8, flags: InputTextFlags) bool { //igInputScalarN - return c.igInputScalarN(label, @intFromEnum(data_type), p_data, components, p_step, p_step_fast, format, @bitCast(flags)); -} -pub inline fn colorButton(desc_id: [*c]const u8, col: Vec4, flags: ColorEditFlags, size: Vec2) bool { //igColorButton - return c.igColorButton(desc_id, @bitCast(col), @bitCast(flags), @bitCast(size)); -} -pub inline fn setColorEditOptions(flags: ColorEditFlags) void { //igSetColorEditOptions - c.igSetColorEditOptions(@bitCast(flags)); -} -pub inline fn treeNode_Str(label: [*c]const u8) bool { //igTreeNode_Str - return c.igTreeNode_Str(label); -} -pub inline fn treeNodeEx_Str(label: [*c]const u8, flags: TreeNodeFlags) bool { //igTreeNodeEx_Str - return c.igTreeNodeEx_Str(label, @bitCast(flags)); -} -pub inline fn treePush_Str(str_id: [*c]const u8) void { //igTreePush_Str - c.igTreePush_Str(str_id); -} -pub inline fn treePush_Ptr(ptr_id: [*c]const void) void { //igTreePush_Ptr - c.igTreePush_Ptr(ptr_id); -} -pub inline fn treePop() void { //igTreePop - c.igTreePop(); -} -pub inline fn getTreeNodeToLabelSpacing() f32 { //igGetTreeNodeToLabelSpacing - return c.igGetTreeNodeToLabelSpacing(); -} -pub inline fn collapsingHeader_TreeNodeFlags(label: [*c]const u8, flags: TreeNodeFlags) bool { //igCollapsingHeader_TreeNodeFlags - return c.igCollapsingHeader_TreeNodeFlags(label, @bitCast(flags)); -} -pub inline fn collapsingHeader_BoolPtr(label: [*c]const u8, p_visible: [*c]bool, flags: TreeNodeFlags) bool { //igCollapsingHeader_BoolPtr - return c.igCollapsingHeader_BoolPtr(label, p_visible, @bitCast(flags)); -} -pub inline fn setNextItemOpen(is_open: bool, cond: Cond) void { //igSetNextItemOpen - c.igSetNextItemOpen(is_open, @bitCast(cond)); -} -pub inline fn selectable_Bool(label: [*c]const u8, selected: bool, flags: SelectableFlags, size: Vec2) bool { //igSelectable_Bool - return c.igSelectable_Bool(label, selected, @bitCast(flags), @bitCast(size)); -} -pub inline fn selectable_BoolPtr(label: [*c]const u8, p_selected: [*c]bool, flags: SelectableFlags, size: Vec2) bool { //igSelectable_BoolPtr - return c.igSelectable_BoolPtr(label, p_selected, @bitCast(flags), @bitCast(size)); -} -pub inline fn beginListBox(label: [*c]const u8, size: Vec2) bool { //igBeginListBox - return c.igBeginListBox(label, @bitCast(size)); -} -pub inline fn endListBox() void { //igEndListBox - c.igEndListBox(); -} -pub inline fn plotLines_FloatPtr(label: [*c]const u8, values: [*c]const f32, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: Vec2, stride: c_int) void { //igPlotLines_FloatPtr - c.igPlotLines_FloatPtr(label, values, values_count, values_offset, overlay_text, scale_min, scale_max, @bitCast(graph_size), stride); -} -pub inline fn plotHistogram_FloatPtr(label: [*c]const u8, values: [*c]const f32, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: Vec2, stride: c_int) void { //igPlotHistogram_FloatPtr - c.igPlotHistogram_FloatPtr(label, values, values_count, values_offset, overlay_text, scale_min, scale_max, @bitCast(graph_size), stride); -} -pub inline fn value_Bool(prefix: [*c]const u8, b: bool) void { //igValue_Bool - c.igValue_Bool(prefix, b); -} -pub inline fn value_Int(prefix: [*c]const u8, v: c_int) void { //igValue_Int - c.igValue_Int(prefix, v); -} -pub inline fn value_Uint(prefix: [*c]const u8, v: c_uint) void { //igValue_Uint - c.igValue_Uint(prefix, v); -} -pub inline fn value_Float(prefix: [*c]const u8, v: f32, float_format: [*c]const u8) void { //igValue_Float - c.igValue_Float(prefix, v, float_format); -} -pub inline fn beginMenuBar() bool { //igBeginMenuBar - return c.igBeginMenuBar(); -} -pub inline fn endMenuBar() void { //igEndMenuBar - c.igEndMenuBar(); -} -pub inline fn beginMainMenuBar() bool { //igBeginMainMenuBar - return c.igBeginMainMenuBar(); -} -pub inline fn endMainMenuBar() void { //igEndMainMenuBar - c.igEndMainMenuBar(); -} -pub inline fn beginMenu(label: [*c]const u8, enabled: bool) bool { //igBeginMenu - return c.igBeginMenu(label, enabled); -} -pub inline fn endMenu() void { //igEndMenu - c.igEndMenu(); -} -pub inline fn menuItem_Bool(label: [*c]const u8, shortcut: [*c]const u8, selected: bool, enabled: bool) bool { //igMenuItem_Bool - return c.igMenuItem_Bool(label, shortcut, selected, enabled); -} -pub inline fn menuItem_BoolPtr(label: [*c]const u8, shortcut: [*c]const u8, p_selected: [*c]bool, enabled: bool) bool { //igMenuItem_BoolPtr - return c.igMenuItem_BoolPtr(label, shortcut, p_selected, enabled); -} -pub inline fn beginTooltip() void { //igBeginTooltip - c.igBeginTooltip(); -} -pub inline fn endTooltip() void { //igEndTooltip - c.igEndTooltip(); -} -pub inline fn beginPopup(str_id: [*c]const u8, flags: WindowFlags) bool { //igBeginPopup - return c.igBeginPopup(str_id, @bitCast(flags)); -} -pub inline fn beginPopupModal(name: [*c]const u8, p_open: [*c]bool, flags: WindowFlags) bool { //igBeginPopupModal - return c.igBeginPopupModal(name, p_open, @bitCast(flags)); -} -pub inline fn endPopup() void { //igEndPopup - c.igEndPopup(); -} -pub inline fn openPopup_Str(str_id: [*c]const u8, popup_flags: PopupFlags) void { //igOpenPopup_Str - c.igOpenPopup_Str(str_id, @bitCast(popup_flags)); -} -pub inline fn openPopup_ID(id: ID, popup_flags: PopupFlags) void { //igOpenPopup_ID - c.igOpenPopup_ID(id, @bitCast(popup_flags)); -} -pub inline fn openPopupOnItemClick(str_id: [*c]const u8, popup_flags: PopupFlags) void { //igOpenPopupOnItemClick - c.igOpenPopupOnItemClick(str_id, @bitCast(popup_flags)); -} -pub inline fn closeCurrentPopup() void { //igCloseCurrentPopup - c.igCloseCurrentPopup(); -} -pub inline fn beginPopupContextItem(str_id: [*c]const u8, popup_flags: PopupFlags) bool { //igBeginPopupContextItem - return c.igBeginPopupContextItem(str_id, @bitCast(popup_flags)); -} -pub inline fn beginPopupContextWindow(str_id: [*c]const u8, popup_flags: PopupFlags) bool { //igBeginPopupContextWindow - return c.igBeginPopupContextWindow(str_id, @bitCast(popup_flags)); -} -pub inline fn beginPopupContextVoid(str_id: [*c]const u8, popup_flags: PopupFlags) bool { //igBeginPopupContextVoid - return c.igBeginPopupContextVoid(str_id, @bitCast(popup_flags)); -} -pub inline fn isPopupOpen_Str(str_id: [*c]const u8, flags: PopupFlags) bool { //igIsPopupOpen_Str - return c.igIsPopupOpen_Str(str_id, @bitCast(flags)); -} -pub inline fn beginTable(str_id: [*c]const u8, column: c_int, flags: TableFlags, outer_size: Vec2, inner_width: f32) bool { //igBeginTable - return c.igBeginTable(str_id, column, @bitCast(flags), @bitCast(outer_size), inner_width); -} -pub inline fn endTable() void { //igEndTable - c.igEndTable(); -} -pub inline fn tableNextRow(row_flags: TableRowFlags, min_row_height: f32) void { //igTableNextRow - c.igTableNextRow(@bitCast(row_flags), min_row_height); -} -pub inline fn tableNextColumn() bool { //igTableNextColumn - return c.igTableNextColumn(); -} -pub inline fn tableSetColumnIndex(column_n: c_int) bool { //igTableSetColumnIndex - return c.igTableSetColumnIndex(column_n); -} -pub inline fn tableSetupColumn(label: [*c]const u8, flags: TableColumnFlags, init_width_or_weight: f32, user_id: ID) void { //igTableSetupColumn - c.igTableSetupColumn(label, @bitCast(flags), init_width_or_weight, user_id); -} -pub inline fn tableSetupScrollFreeze(cols: c_int, rows: c_int) void { //igTableSetupScrollFreeze - c.igTableSetupScrollFreeze(cols, rows); -} -pub inline fn tableHeadersRow() void { //igTableHeadersRow - c.igTableHeadersRow(); -} -pub inline fn tableHeader(label: [*c]const u8) void { //igTableHeader - c.igTableHeader(label); -} -pub inline fn tableGetColumnCount() c_int { //igTableGetColumnCount - return c.igTableGetColumnCount(); -} -pub inline fn tableGetColumnIndex() c_int { //igTableGetColumnIndex - return c.igTableGetColumnIndex(); -} -pub inline fn tableGetRowIndex() c_int { //igTableGetRowIndex - return c.igTableGetRowIndex(); -} -pub inline fn tableGetColumnName_Int(column_n: c_int) [*c]const u8 { //igTableGetColumnName_Int - return c.igTableGetColumnName_Int(column_n); -} -pub inline fn tableGetColumnFlags(column_n: c_int) TableColumnFlags { //igTableGetColumnFlags - return c.igTableGetColumnFlags(column_n); -} -pub inline fn tableSetColumnEnabled(column_n: c_int, v: bool) void { //igTableSetColumnEnabled - c.igTableSetColumnEnabled(column_n, v); -} -pub inline fn tableSetBgColor(target: TableBgTarget, color: U32, column_n: c_int) void { //igTableSetBgColor - c.igTableSetBgColor(@bitCast(target), color, column_n); -} -pub inline fn columns(count: c_int, id: [*c]const u8, border: bool) void { //igColumns - c.igColumns(count, id, border); -} -pub inline fn nextColumn() void { //igNextColumn - c.igNextColumn(); -} -pub inline fn getColumnIndex() c_int { //igGetColumnIndex - return c.igGetColumnIndex(); -} -pub inline fn getColumnWidth(column_index: c_int) f32 { //igGetColumnWidth - return c.igGetColumnWidth(column_index); -} -pub inline fn setColumnWidth(column_index: c_int, width: f32) void { //igSetColumnWidth - c.igSetColumnWidth(column_index, width); -} -pub inline fn getColumnOffset(column_index: c_int) f32 { //igGetColumnOffset - return c.igGetColumnOffset(column_index); -} -pub inline fn setColumnOffset(column_index: c_int, offset_x: f32) void { //igSetColumnOffset - c.igSetColumnOffset(column_index, offset_x); -} -pub inline fn getColumnsCount() c_int { //igGetColumnsCount - return c.igGetColumnsCount(); -} -pub inline fn beginTabBar(str_id: [*c]const u8, flags: TabBarFlags) bool { //igBeginTabBar - return c.igBeginTabBar(str_id, @bitCast(flags)); -} -pub inline fn endTabBar() void { //igEndTabBar - c.igEndTabBar(); -} -pub inline fn beginTabItem(label: [*c]const u8, p_open: [*c]bool, flags: TabItemFlags) bool { //igBeginTabItem - return c.igBeginTabItem(label, p_open, @bitCast(flags)); -} -pub inline fn endTabItem() void { //igEndTabItem - c.igEndTabItem(); -} -pub inline fn tabItemButton(label: [*c]const u8, flags: TabItemFlags) bool { //igTabItemButton - return c.igTabItemButton(label, @bitCast(flags)); -} -pub inline fn setTabItemClosed(tab_or_docked_window_label: [*c]const u8) void { //igSetTabItemClosed - c.igSetTabItemClosed(tab_or_docked_window_label); -} -pub inline fn dockSpace(id: ID, size: Vec2, flags: DockNodeFlags, window_class: [*c]const WindowClass) ID { //igDockSpace - return c.igDockSpace(id, @bitCast(size), @bitCast(flags), @ptrCast(window_class)); -} -pub inline fn dockSpaceOverViewport(viewport: [*c]const Viewport, flags: DockNodeFlags, window_class: [*c]const WindowClass) ID { //igDockSpaceOverViewport - return c.igDockSpaceOverViewport(viewport, @bitCast(flags), @ptrCast(window_class)); -} -pub inline fn setNextWindowDockID(dock_id: ID, cond: Cond) void { //igSetNextWindowDockID - c.igSetNextWindowDockID(dock_id, @bitCast(cond)); -} -pub inline fn setNextWindowClass(window_class: [*c]const WindowClass) void { //igSetNextWindowClass - c.igSetNextWindowClass(@ptrCast(window_class)); -} -pub inline fn getWindowDockID() ID { //igGetWindowDockID - return c.igGetWindowDockID(); -} -pub inline fn isWindowDocked() bool { //igIsWindowDocked - return c.igIsWindowDocked(); -} -pub inline fn logToTTY(auto_open_depth: c_int) void { //igLogToTTY - c.igLogToTTY(auto_open_depth); -} -pub inline fn logToFile(auto_open_depth: c_int, filename: [*c]const u8) void { //igLogToFile - c.igLogToFile(auto_open_depth, filename); -} -pub inline fn logToClipboard(auto_open_depth: c_int) void { //igLogToClipboard - c.igLogToClipboard(auto_open_depth); -} -pub inline fn logFinish() void { //igLogFinish - c.igLogFinish(); -} -pub inline fn logButtons() void { //igLogButtons - c.igLogButtons(); -} -pub inline fn beginDragDropSource(flags: DragDropFlags) bool { //igBeginDragDropSource - return c.igBeginDragDropSource(@bitCast(flags)); -} -pub inline fn setDragDropPayload(t: [*c]const u8, data: [*c]const void, sz: usize, cond: Cond) bool { //igSetDragDropPayload - return c.igSetDragDropPayload(t, data, sz, @bitCast(cond)); -} -pub inline fn endDragDropSource() void { //igEndDragDropSource - c.igEndDragDropSource(); -} -pub inline fn beginDragDropTarget() bool { //igBeginDragDropTarget - return c.igBeginDragDropTarget(); -} -pub inline fn acceptDragDropPayload(t: [*c]const u8, flags: DragDropFlags) [*c]const Payload { //igAcceptDragDropPayload - return c.igAcceptDragDropPayload(t, @bitCast(flags)); -} -pub inline fn endDragDropTarget() void { //igEndDragDropTarget - c.igEndDragDropTarget(); -} -pub inline fn getDragDropPayload() [*c]const Payload { //igGetDragDropPayload - return c.igGetDragDropPayload(); -} -pub inline fn beginDisabled(disabled: bool) void { //igBeginDisabled - c.igBeginDisabled(disabled); -} -pub inline fn endDisabled() void { //igEndDisabled - c.igEndDisabled(); -} -pub inline fn pushClipRect(clip_rect_min: Vec2, clip_rect_max: Vec2, intersect_with_current_clip_rect: bool) void { //igPushClipRect - c.igPushClipRect(@bitCast(clip_rect_min), @bitCast(clip_rect_max), intersect_with_current_clip_rect); -} -pub inline fn popClipRect() void { //igPopClipRect - c.igPopClipRect(); -} -pub inline fn setItemDefaultFocus() void { //igSetItemDefaultFocus - c.igSetItemDefaultFocus(); -} -pub inline fn setKeyboardFocusHere(offset: c_int) void { //igSetKeyboardFocusHere - c.igSetKeyboardFocusHere(offset); -} -pub inline fn isItemHovered(flags: HoveredFlags) bool { //igIsItemHovered - return c.igIsItemHovered(@bitCast(flags)); -} -pub inline fn isItemActive() bool { //igIsItemActive - return c.igIsItemActive(); -} -pub inline fn isItemFocused() bool { //igIsItemFocused - return c.igIsItemFocused(); -} -pub inline fn isItemClicked(mouse_button: MouseButton) bool { //igIsItemClicked - return c.igIsItemClicked(@intFromEnum(mouse_button)); -} -pub inline fn isItemVisible() bool { //igIsItemVisible - return c.igIsItemVisible(); -} -pub inline fn isItemEdited() bool { //igIsItemEdited - return c.igIsItemEdited(); -} -pub inline fn isItemActivated() bool { //igIsItemActivated - return c.igIsItemActivated(); -} -pub inline fn isItemDeactivated() bool { //igIsItemDeactivated - return c.igIsItemDeactivated(); -} -pub inline fn isItemDeactivatedAfterEdit() bool { //igIsItemDeactivatedAfterEdit - return c.igIsItemDeactivatedAfterEdit(); -} -pub inline fn isItemToggledOpen() bool { //igIsItemToggledOpen - return c.igIsItemToggledOpen(); -} -pub inline fn isAnyItemHovered() bool { //igIsAnyItemHovered - return c.igIsAnyItemHovered(); -} -pub inline fn isAnyItemActive() bool { //igIsAnyItemActive - return c.igIsAnyItemActive(); -} -pub inline fn isAnyItemFocused() bool { //igIsAnyItemFocused - return c.igIsAnyItemFocused(); -} -pub inline fn getItemRectMin(pout: [*c]Vec2) void { //igGetItemRectMin - c.igGetItemRectMin(pout); -} -pub inline fn getItemRectMax(pout: [*c]Vec2) void { //igGetItemRectMax - c.igGetItemRectMax(pout); -} -pub inline fn getItemRectSize(pout: [*c]Vec2) void { //igGetItemRectSize - c.igGetItemRectSize(pout); -} -pub inline fn setItemAllowOverlap() void { //igSetItemAllowOverlap - c.igSetItemAllowOverlap(); -} -pub inline fn getMainViewport() ?*Viewport { //igGetMainViewport - return @ptrCast(c.igGetMainViewport()); -} -pub inline fn getBackgroundDrawList_Nil() [*c]DrawList { //igGetBackgroundDrawList_Nil - return c.igGetBackgroundDrawList_Nil(); -} -pub inline fn getForegroundDrawList_Nil() [*c]DrawList { //igGetForegroundDrawList_Nil - return c.igGetForegroundDrawList_Nil(); -} -pub inline fn getBackgroundDrawList_ViewportPtr(viewport: [*c]Viewport) [*c]DrawList { //igGetBackgroundDrawList_ViewportPtr - return c.igGetBackgroundDrawList_ViewportPtr(viewport); -} -pub inline fn getForegroundDrawList_ViewportPtr(viewport: [*c]Viewport) [*c]DrawList { //igGetForegroundDrawList_ViewportPtr - return c.igGetForegroundDrawList_ViewportPtr(viewport); -} -pub inline fn isRectVisible_Nil(size: Vec2) bool { //igIsRectVisible_Nil - return c.igIsRectVisible_Nil(@bitCast(size)); -} -pub inline fn isRectVisible_Vec2(rect_min: Vec2, rect_max: Vec2) bool { //igIsRectVisible_Vec2 - return c.igIsRectVisible_Vec2(@bitCast(rect_min), @bitCast(rect_max)); -} -pub inline fn getTime() f64 { //igGetTime - return c.igGetTime(); -} -pub inline fn getFrameCount() c_int { //igGetFrameCount - return c.igGetFrameCount(); -} -pub inline fn getDrawListSharedData() [*c]DrawListSharedData { //igGetDrawListSharedData - return c.igGetDrawListSharedData(); -} -pub inline fn getStyleColorName(idx: StyleColor) [*c]const u8 { //igGetStyleColorName - return c.igGetStyleColorName(idx); -} -pub inline fn setStateStorage(storage: [*c]Storage) void { //igSetStateStorage - c.igSetStateStorage(storage); -} -pub inline fn getStateStorage() [*c]Storage { //igGetStateStorage - return c.igGetStateStorage(); -} -pub inline fn beginChildFrame(id: ID, size: Vec2, flags: WindowFlags) bool { //igBeginChildFrame - return c.igBeginChildFrame(id, @bitCast(size), @bitCast(flags)); -} -pub inline fn endChildFrame() void { //igEndChildFrame - c.igEndChildFrame(); -} -pub inline fn calcTextSize(pout: [*c]Vec2, text: [*c]const u8, text_end: [*c]const u8, hide_text_after_double_hash: bool, wrap_width: f32) void { //igCalcTextSize - c.igCalcTextSize(pout, text, text_end, hide_text_after_double_hash, wrap_width); -} -pub inline fn colorConvertU32ToFloat4(pout: [*c]Vec4, in: U32) void { //igColorConvertU32ToFloat4 - c.igColorConvertU32ToFloat4(pout, in); -} -pub inline fn colorConvertFloat4ToU32(in: Vec4) U32 { //igColorConvertFloat4ToU32 - return c.igColorConvertFloat4ToU32(@bitCast(in)); -} -pub inline fn colorConvertRGBtoHSV(r: f32, g: f32, b: f32, out_h: [*c]f32, out_s: [*c]f32, out_v: [*c]f32) void { //igColorConvertRGBtoHSV - c.igColorConvertRGBtoHSV(r, g, b, out_h, out_s, out_v); -} -pub inline fn colorConvertHSVtoRGB(h: f32, s: f32, v: f32, out_r: [*c]f32, out_g: [*c]f32, out_b: [*c]f32) void { //igColorConvertHSVtoRGB - c.igColorConvertHSVtoRGB(h, s, v, out_r, out_g, out_b); -} -pub inline fn isKeyDown(key: Key) bool { //igIsKeyDown - return c.igIsKeyDown(@intFromEnum(key)); -} -pub inline fn isKeyPressed(key: Key, repeat: bool) bool { //igIsKeyPressed - return c.igIsKeyPressed(@intFromEnum(key), repeat); -} -pub inline fn isKeyReleased(key: Key) bool { //igIsKeyReleased - return c.igIsKeyReleased(@intFromEnum(key)); -} -pub inline fn getKeyPressedAmount(key: Key, repeat_delay: f32, rate: f32) c_int { //igGetKeyPressedAmount - return c.igGetKeyPressedAmount(@intFromEnum(key), repeat_delay, rate); -} -pub inline fn getKeyName(key: Key) [*c]const u8 { //igGetKeyName - return c.igGetKeyName(@intFromEnum(key)); -} -pub inline fn setNextFrameWantCaptureKeyboard(want_capture_keyboard: bool) void { //igSetNextFrameWantCaptureKeyboard - c.igSetNextFrameWantCaptureKeyboard(want_capture_keyboard); -} -pub inline fn isMouseDown(btn: MouseButton) bool { //igIsMouseDown - return c.igIsMouseDown(@intFromEnum(btn)); -} -pub inline fn isMouseClicked(btn: MouseButton, repeat: bool) bool { //igIsMouseClicked - return c.igIsMouseClicked(@intFromEnum(btn), repeat); -} -pub inline fn isMouseReleased(btn: MouseButton) bool { //igIsMouseReleased - return c.igIsMouseReleased(@intFromEnum(btn)); -} -pub inline fn isMouseDoubleClicked(btn: MouseButton) bool { //igIsMouseDoubleClicked - return c.igIsMouseDoubleClicked(@intFromEnum(btn)); -} -pub inline fn getMouseClickedCount(btn: MouseButton) c_int { //igGetMouseClickedCount - return c.igGetMouseClickedCount(@intFromEnum(btn)); -} -pub inline fn isMouseHoveringRect(r_min: Vec2, r_max: Vec2, clip: bool) bool { //igIsMouseHoveringRect - return c.igIsMouseHoveringRect(@bitCast(r_min), @bitCast(r_max), clip); -} -pub inline fn isMousePosValid(mouse_pos: [*c]const Vec2) bool { //igIsMousePosValid - return c.igIsMousePosValid(mouse_pos); -} -pub inline fn isAnyMouseDown() bool { //igIsAnyMouseDown - return c.igIsAnyMouseDown(); -} -pub inline fn getMousePos(pout: [*c]Vec2) void { //igGetMousePos - c.igGetMousePos(pout); -} -pub inline fn getMousePosOnOpeningCurrentPopup(pout: [*c]Vec2) void { //igGetMousePosOnOpeningCurrentPopup - c.igGetMousePosOnOpeningCurrentPopup(pout); -} -pub inline fn isMouseDragging(btn: MouseButton, lock_threshold: f32) bool { //igIsMouseDragging - return c.igIsMouseDragging(@intFromEnum(btn), lock_threshold); -} -pub inline fn getMouseDragDelta(pout: [*c]Vec2, btn: MouseButton, lock_threshold: f32) void { //igGetMouseDragDelta - c.igGetMouseDragDelta(pout, @intFromEnum(btn), lock_threshold); -} -pub inline fn resetMouseDragDelta(btn: MouseButton) void { //igResetMouseDragDelta - c.igResetMouseDragDelta(@intFromEnum(btn)); -} -pub inline fn getMouseCursor() MouseCursor { //igGetMouseCursor - return c.igGetMouseCursor(); -} -pub inline fn setMouseCursor(cursor_type: MouseCursor) void { //igSetMouseCursor - c.igSetMouseCursor(@intFromEnum(cursor_type)); -} -pub inline fn setNextFrameWantCaptureMouse(want_capture_mouse: bool) void { //igSetNextFrameWantCaptureMouse - c.igSetNextFrameWantCaptureMouse(want_capture_mouse); -} -pub inline fn getClipboardText() [*c]const u8 { //igGetClipboardText - return c.igGetClipboardText(); -} -pub inline fn setClipboardText(text: [*c]const u8) void { //igSetClipboardText - c.igSetClipboardText(text); -} -pub inline fn loadIniSettingsFromDisk(ini_filename: [*c]const u8) void { //igLoadIniSettingsFromDisk - c.igLoadIniSettingsFromDisk(ini_filename); -} -pub inline fn loadIniSettingsFromMemory(ini_data: [*c]const u8, ini_size: usize) void { //igLoadIniSettingsFromMemory - c.igLoadIniSettingsFromMemory(ini_data, ini_size); -} -pub inline fn saveIniSettingsToDisk(ini_filename: [*c]const u8) void { //igSaveIniSettingsToDisk - c.igSaveIniSettingsToDisk(ini_filename); -} -pub inline fn saveIniSettingsToMemory(out_ini_size: [*c]usize) [*c]const u8 { //igSaveIniSettingsToMemory - return c.igSaveIniSettingsToMemory(out_ini_size); -} -pub inline fn debugTextEncoding(text: [*c]const u8) void { //igDebugTextEncoding - c.igDebugTextEncoding(text); -} -pub inline fn debugCheckVersionAndDataLayout(version_str: [*c]const u8, sz_io: usize, sz_style: usize, sz_vec2: usize, sz_vec4: usize, sz_drawvert: usize, sz_drawidx: usize) bool { //igDebugCheckVersionAndDataLayout - return c.igDebugCheckVersionAndDataLayout(version_str, sz_io, sz_style, sz_vec2, sz_vec4, sz_drawvert, sz_drawidx); -} -pub inline fn setAllocatorFunctions(alloc_func: MemAllocFunc, free_func: MemFreeFunc, user_data: ?*anyopaque) void { //igSetAllocatorFunctions - c.igSetAllocatorFunctions(alloc_func, free_func, user_data); -} -pub inline fn getAllocatorFunctions(p_alloc_func: [*c]MemAllocFunc, p_free_func: [*c]MemFreeFunc, p_user_data: [*c]void) void { //igGetAllocatorFunctions - c.igGetAllocatorFunctions(p_alloc_func, p_free_func, p_user_data); -} -pub inline fn memAlloc(size: usize) ?*anyopaque { //igMemAlloc - return c.igMemAlloc(size); -} -pub inline fn memFree(ptr: ?*anyopaque) void { //igMemFree - c.igMemFree(ptr); -} -pub inline fn getPlatformIO() [*c]PlatformIO { //igGetPlatformIO - return c.igGetPlatformIO(); -} -pub inline fn updatePlatformWindows() void { //igUpdatePlatformWindows - c.igUpdatePlatformWindows(); -} -pub inline fn renderPlatformWindowsDefault(platform_render_arg: ?*anyopaque, renderer_render_arg: ?*anyopaque) void { //igRenderPlatformWindowsDefault - c.igRenderPlatformWindowsDefault(platform_render_arg, renderer_render_arg); -} -pub inline fn destroyPlatformWindows() void { //igDestroyPlatformWindows - c.igDestroyPlatformWindows(); -} -pub inline fn findViewportByID(id: ID) [*c]Viewport { //igFindViewportByID - return c.igFindViewportByID(id); -} -pub inline fn findViewportByPlatformHandle(platform_handle: ?*anyopaque) [*c]Viewport { //igFindViewportByPlatformHandle - return c.igFindViewportByPlatformHandle(platform_handle); -} -pub inline fn getKeyIndex(key: Key) c_int { //igGetKeyIndex - return c.igGetKeyIndex(@intFromEnum(key)); -} -pub inline fn imHashData(data: [*c]const void, data_size: usize, seed: U32) ID { //igImHashData - return c.igImHashData(data, data_size, seed); -} -pub inline fn imHashStr(data: [*c]const u8, data_size: usize, seed: U32) ID { //igImHashStr - return c.igImHashStr(data, data_size, seed); -} -pub inline fn imQsort(base: ?*anyopaque, count: usize, size_of_element: usize) void { //igImQsort - c.igImQsort(base, count, size_of_element); -} -pub inline fn imAlphaBlendColors(col_a: U32, col_b: U32) U32 { //igImAlphaBlendColors - return c.igImAlphaBlendColors(col_a, col_b); -} -pub inline fn imIsPowerOfTwo_Int(v: c_int) bool { //igImIsPowerOfTwo_Int - return c.igImIsPowerOfTwo_Int(v); -} -pub inline fn imIsPowerOfTwo_U64(v: U64) bool { //igImIsPowerOfTwo_U64 - return c.igImIsPowerOfTwo_U64(v); -} -pub inline fn imUpperPowerOfTwo(v: c_int) c_int { //igImUpperPowerOfTwo - return c.igImUpperPowerOfTwo(v); -} -pub inline fn imStricmp(str1: [*c]const u8, str2: [*c]const u8) c_int { //igImStricmp - return c.igImStricmp(str1, str2); -} -pub inline fn imStrnicmp(str1: [*c]const u8, str2: [*c]const u8, count: usize) c_int { //igImStrnicmp - return c.igImStrnicmp(str1, str2, count); -} -pub inline fn imStrncpy(dst: [*c]u8, src: [*c]const u8, count: usize) void { //igImStrncpy - c.igImStrncpy(dst, src, count); -} -pub inline fn imStrdup(str: [*c]const u8) [*c]u8 { //igImStrdup - return c.igImStrdup(str); -} -pub inline fn imStrdupcpy(dst: [*c]u8, p_dst_size: [*c]usize, str: [*c]const u8) [*c]u8 { //igImStrdupcpy - return c.igImStrdupcpy(dst, p_dst_size, str); -} -pub inline fn imStrchrRange(str_begin: [*c]const u8, str_end: [*c]const u8, ch: u8) [*c]const u8 { //igImStrchrRange - return c.igImStrchrRange(str_begin, str_end, ch); -} -pub inline fn imStrlenW(str: [*c]const Wchar) c_int { //igImStrlenW - return c.igImStrlenW(str); -} -pub inline fn imStreolRange(str: [*c]const u8, str_end: [*c]const u8) [*c]const u8 { //igImStreolRange - return c.igImStreolRange(str, str_end); -} -pub inline fn imStrbolW(buf_mid_line: [*c]const Wchar, buf_begin: [*c]const Wchar) [*c]const Wchar { //igImStrbolW - return c.igImStrbolW(buf_mid_line, buf_begin); -} -pub inline fn imStristr(haystack: [*c]const u8, haystack_end: [*c]const u8, needle: [*c]const u8, needle_end: [*c]const u8) [*c]const u8 { //igImStristr - return c.igImStristr(haystack, haystack_end, needle, needle_end); -} -pub inline fn imStrTrimBlanks(str: [*c]u8) void { //igImStrTrimBlanks - c.igImStrTrimBlanks(str); -} -pub inline fn imStrSkipBlank(str: [*c]const u8) [*c]const u8 { //igImStrSkipBlank - return c.igImStrSkipBlank(str); -} -pub inline fn imCharIsBlankA(ch: u8) bool { //igImCharIsBlankA - return c.igImCharIsBlankA(ch); -} -pub inline fn imCharIsBlankW(ch: c_uint) bool { //igImCharIsBlankW - return c.igImCharIsBlankW(ch); -} -pub inline fn imParseFormatFindStart(format: [*c]const u8) [*c]const u8 { //igImParseFormatFindStart - return c.igImParseFormatFindStart(format); -} -pub inline fn imParseFormatFindEnd(format: [*c]const u8) [*c]const u8 { //igImParseFormatFindEnd - return c.igImParseFormatFindEnd(format); -} -pub inline fn imParseFormatTrimDecorations(format: [*c]const u8, buf: [*c]u8, buf_size: usize) [*c]const u8 { //igImParseFormatTrimDecorations - return c.igImParseFormatTrimDecorations(format, buf, buf_size); -} -pub inline fn imParseFormatSanitizeForPrinting(fmt_in: [*c]const u8, fmt_out: [*c]u8, fmt_out_size: usize) void { //igImParseFormatSanitizeForPrinting - c.igImParseFormatSanitizeForPrinting(fmt_in, fmt_out, fmt_out_size); -} -pub inline fn imParseFormatSanitizeForScanning(fmt_in: [*c]const u8, fmt_out: [*c]u8, fmt_out_size: usize) [*c]const u8 { //igImParseFormatSanitizeForScanning - return c.igImParseFormatSanitizeForScanning(fmt_in, fmt_out, fmt_out_size); -} -pub inline fn imParseFormatPrecision(format: [*c]const u8, default_value: c_int) c_int { //igImParseFormatPrecision - return c.igImParseFormatPrecision(format, default_value); -} -pub inline fn imTextStrToUtf8(out_buf: [*c]u8, out_buf_size: c_int, in_text: [*c]const Wchar, in_text_end: [*c]const Wchar) c_int { //igImTextStrToUtf8 - return c.igImTextStrToUtf8(out_buf, out_buf_size, in_text, in_text_end); -} -pub inline fn imTextCharFromUtf8(out_char: [*c]c_uint, in_text: [*c]const u8, in_text_end: [*c]const u8) c_int { //igImTextCharFromUtf8 - return c.igImTextCharFromUtf8(out_char, in_text, in_text_end); -} -pub inline fn imTextStrFromUtf8(out_buf: [*c]Wchar, out_buf_size: c_int, in_text: [*c]const u8, in_text_end: [*c]const u8, in_remaining: [*c]const u8) c_int { //igImTextStrFromUtf8 - return c.igImTextStrFromUtf8(out_buf, out_buf_size, in_text, in_text_end, in_remaining); -} -pub inline fn imTextCountCharsFromUtf8(in_text: [*c]const u8, in_text_end: [*c]const u8) c_int { //igImTextCountCharsFromUtf8 - return c.igImTextCountCharsFromUtf8(in_text, in_text_end); -} -pub inline fn imTextCountUtf8BytesFromChar(in_text: [*c]const u8, in_text_end: [*c]const u8) c_int { //igImTextCountUtf8BytesFromChar - return c.igImTextCountUtf8BytesFromChar(in_text, in_text_end); -} -pub inline fn imTextCountUtf8BytesFromStr(in_text: [*c]const Wchar, in_text_end: [*c]const Wchar) c_int { //igImTextCountUtf8BytesFromStr - return c.igImTextCountUtf8BytesFromStr(in_text, in_text_end); -} -pub inline fn imFileOpen(filename: [*c]const u8, mode: [*c]const u8) FileHandle { //igImFileOpen - return c.igImFileOpen(filename, mode); -} -pub inline fn imFileClose(file: FileHandle) bool { //igImFileClose - return c.igImFileClose(file); -} -pub inline fn imFileGetSize(file: FileHandle) U64 { //igImFileGetSize - return c.igImFileGetSize(file); -} -pub inline fn imFileRead(data: ?*anyopaque, size: U64, count: U64, file: FileHandle) U64 { //igImFileRead - return c.igImFileRead(data, size, count, file); -} -pub inline fn imFileWrite(data: [*c]const void, size: U64, count: U64, file: FileHandle) U64 { //igImFileWrite - return c.igImFileWrite(data, size, count, file); -} -pub inline fn imFileLoadToMemory(filename: [*c]const u8, mode: [*c]const u8, out_file_size: [*c]usize, padding_bytes: c_int) ?*anyopaque { //igImFileLoadToMemory - return c.igImFileLoadToMemory(filename, mode, out_file_size, padding_bytes); -} -pub inline fn imPow_Float(x: f32, y: f32) f32 { //igImPow_Float - return c.igImPow_Float(x, y); -} -pub inline fn imPow_double(x: f64, y: f64) f64 { //igImPow_double - return c.igImPow_double(x, y); -} -pub inline fn imLog_Float(x: f32) f32 { //igImLog_Float - return c.igImLog_Float(x); -} -pub inline fn imLog_double(x: f64) f64 { //igImLog_double - return c.igImLog_double(x); -} -pub inline fn imAbs_Int(x: c_int) c_int { //igImAbs_Int - return c.igImAbs_Int(x); -} -pub inline fn imAbs_Float(x: f32) f32 { //igImAbs_Float - return c.igImAbs_Float(x); -} -pub inline fn imAbs_double(x: f64) f64 { //igImAbs_double - return c.igImAbs_double(x); -} -pub inline fn imSign_Float(x: f32) f32 { //igImSign_Float - return c.igImSign_Float(x); -} -pub inline fn imSign_double(x: f64) f64 { //igImSign_double - return c.igImSign_double(x); -} -pub inline fn imRsqrt_Float(x: f32) f32 { //igImRsqrt_Float - return c.igImRsqrt_Float(x); -} -pub inline fn imRsqrt_double(x: f64) f64 { //igImRsqrt_double - return c.igImRsqrt_double(x); -} -pub inline fn imMin(pout: [*c]Vec2, lhs: Vec2, rhs: Vec2) void { //igImMin - c.igImMin(pout, @bitCast(lhs), @bitCast(rhs)); -} -pub inline fn imMax(pout: [*c]Vec2, lhs: Vec2, rhs: Vec2) void { //igImMax - c.igImMax(pout, @bitCast(lhs), @bitCast(rhs)); -} -pub inline fn imClamp(pout: [*c]Vec2, v: Vec2, mn: Vec2, mx: Vec2) void { //igImClamp - c.igImClamp(pout, @bitCast(v), @bitCast(mn), @bitCast(mx)); -} -pub inline fn imLerp_Vec2Float(pout: [*c]Vec2, a: Vec2, b: Vec2, t: f32) void { //igImLerp_Vec2Float - c.igImLerp_Vec2Float(pout, @bitCast(a), @bitCast(b), t); -} -pub inline fn imLerp_Vec2Vec2(pout: [*c]Vec2, a: Vec2, b: Vec2, t: Vec2) void { //igImLerp_Vec2Vec2 - c.igImLerp_Vec2Vec2(pout, @bitCast(a), @bitCast(b), @bitCast(t)); -} -pub inline fn imLerp_Vec4(pout: [*c]Vec4, a: Vec4, b: Vec4, t: f32) void { //igImLerp_Vec4 - c.igImLerp_Vec4(pout, @bitCast(a), @bitCast(b), t); -} -pub inline fn imSaturate(f: f32) f32 { //igImSaturate - return c.igImSaturate(f); -} -pub inline fn imLengthSqr_Vec2(lhs: Vec2) f32 { //igImLengthSqr_Vec2 - return c.igImLengthSqr_Vec2(@bitCast(lhs)); -} -pub inline fn imLengthSqr_Vec4(lhs: Vec4) f32 { //igImLengthSqr_Vec4 - return c.igImLengthSqr_Vec4(@bitCast(lhs)); -} -pub inline fn imInvLength(lhs: Vec2, fail_value: f32) f32 { //igImInvLength - return c.igImInvLength(@bitCast(lhs), fail_value); -} -pub inline fn imFloor_Float(f: f32) f32 { //igImFloor_Float - return c.igImFloor_Float(f); -} -pub inline fn imFloorSigned_Float(f: f32) f32 { //igImFloorSigned_Float - return c.igImFloorSigned_Float(f); -} -pub inline fn imFloor_Vec2(pout: [*c]Vec2, v: Vec2) void { //igImFloor_Vec2 - c.igImFloor_Vec2(pout, @bitCast(v)); -} -pub inline fn imFloorSigned_Vec2(pout: [*c]Vec2, v: Vec2) void { //igImFloorSigned_Vec2 - c.igImFloorSigned_Vec2(pout, @bitCast(v)); -} -pub inline fn imModPositive(a: c_int, b: c_int) c_int { //igImModPositive - return c.igImModPositive(a, b); -} -pub inline fn imDot(a: Vec2, b: Vec2) f32 { //igImDot - return c.igImDot(@bitCast(a), @bitCast(b)); -} -pub inline fn imRotate(pout: [*c]Vec2, v: Vec2, cos_a: f32, sin_a: f32) void { //igImRotate - c.igImRotate(pout, @bitCast(v), cos_a, sin_a); -} -pub inline fn imLinearSweep(current: f32, target: f32, speed: f32) f32 { //igImLinearSweep - return c.igImLinearSweep(current, target, speed); -} -pub inline fn imMul(pout: [*c]Vec2, lhs: Vec2, rhs: Vec2) void { //igImMul - c.igImMul(pout, @bitCast(lhs), @bitCast(rhs)); -} -pub inline fn imIsFloatAboveGuaranteedIntegerPrecision(f: f32) bool { //igImIsFloatAboveGuaranteedIntegerPrecision - return c.igImIsFloatAboveGuaranteedIntegerPrecision(f); -} -pub inline fn imBezierCubicCalc(pout: [*c]Vec2, p1: Vec2, p2: Vec2, p3: Vec2, p4: Vec2, t: f32) void { //igImBezierCubicCalc - c.igImBezierCubicCalc(pout, @bitCast(p1), @bitCast(p2), @bitCast(p3), @bitCast(p4), t); -} -pub inline fn imBezierCubicClosestPoint(pout: [*c]Vec2, p1: Vec2, p2: Vec2, p3: Vec2, p4: Vec2, p: Vec2, num_segments: c_int) void { //igImBezierCubicClosestPoint - c.igImBezierCubicClosestPoint(pout, @bitCast(p1), @bitCast(p2), @bitCast(p3), @bitCast(p4), @bitCast(p), num_segments); -} -pub inline fn imBezierCubicClosestPointCasteljau(pout: [*c]Vec2, p1: Vec2, p2: Vec2, p3: Vec2, p4: Vec2, p: Vec2, tess_tol: f32) void { //igImBezierCubicClosestPointCasteljau - c.igImBezierCubicClosestPointCasteljau(pout, @bitCast(p1), @bitCast(p2), @bitCast(p3), @bitCast(p4), @bitCast(p), tess_tol); -} -pub inline fn imBezierQuadraticCalc(pout: [*c]Vec2, p1: Vec2, p2: Vec2, p3: Vec2, t: f32) void { //igImBezierQuadraticCalc - c.igImBezierQuadraticCalc(pout, @bitCast(p1), @bitCast(p2), @bitCast(p3), t); -} -pub inline fn imLineClosestPoint(pout: [*c]Vec2, a: Vec2, b: Vec2, p: Vec2) void { //igImLineClosestPoint - c.igImLineClosestPoint(pout, @bitCast(a), @bitCast(b), @bitCast(p)); -} -pub inline fn imTriangleContainsPoint(a: Vec2, b: Vec2, _c: Vec2, p: Vec2) bool { //igImTriangleContainsPoint - return c.igImTriangleContainsPoint(@bitCast(a), @bitCast(b), @bitCast(_c), @bitCast(p)); -} -pub inline fn imTriangleClosestPoint(pout: [*c]Vec2, a: Vec2, b: Vec2, _c: Vec2, p: Vec2) void { //igImTriangleClosestPoint - c.igImTriangleClosestPoint(pout, @bitCast(a), @bitCast(b), @bitCast(_c), @bitCast(p)); -} -pub inline fn imTriangleBarycentricCoords(a: Vec2, b: Vec2, _c: Vec2, p: Vec2, out_u: [*c]f32, out_v: [*c]f32, out_w: [*c]f32) void { //igImTriangleBarycentricCoords - c.igImTriangleBarycentricCoords(@bitCast(a), @bitCast(b), @bitCast(_c), @bitCast(p), out_u, out_v, out_w); -} -pub inline fn imTriangleArea(a: Vec2, b: Vec2, _c: Vec2) f32 { //igImTriangleArea - return c.igImTriangleArea(@bitCast(a), @bitCast(b), @bitCast(_c)); -} -pub inline fn imGetDirQuadrantFromDelta(dx: f32, dy: f32) Dir { //igImGetDirQuadrantFromDelta - return c.igImGetDirQuadrantFromDelta(dx, dy); -} -pub inline fn imBitArrayTestBit(arr: [*c]const U32, n: c_int) bool { //igImBitArrayTestBit - return c.igImBitArrayTestBit(arr, n); -} -pub inline fn imBitArrayClearBit(arr: [*c]U32, n: c_int) void { //igImBitArrayClearBit - c.igImBitArrayClearBit(arr, n); -} -pub inline fn imBitArraySetBit(arr: [*c]U32, n: c_int) void { //igImBitArraySetBit - c.igImBitArraySetBit(arr, n); -} -pub inline fn imBitArraySetBitRange(arr: [*c]U32, n: c_int, n2: c_int) void { //igImBitArraySetBitRange - c.igImBitArraySetBitRange(arr, n, n2); -} -pub inline fn getCurrentWindowRead() [*c]Window { //igGetCurrentWindowRead - return c.igGetCurrentWindowRead(); -} -pub inline fn getCurrentWindow() [*c]Window { //igGetCurrentWindow - return c.igGetCurrentWindow(); -} -pub inline fn findWindowByID(id: ID) [*c]Window { //igFindWindowByID - return c.igFindWindowByID(id); -} -pub inline fn findWindowByName(name: [*c]const u8) [*c]Window { //igFindWindowByName - return c.igFindWindowByName(name); -} -pub inline fn updateWindowParentAndRootLinks(window: [*c]Window, flags: WindowFlags, parent_window: [*c]Window) void { //igUpdateWindowParentAndRootLinks - c.igUpdateWindowParentAndRootLinks(window, @bitCast(flags), parent_window); -} -pub inline fn calcWindowNextAutoFitSize(pout: [*c]Vec2, window: [*c]Window) void { //igCalcWindowNextAutoFitSize - c.igCalcWindowNextAutoFitSize(pout, window); -} -pub inline fn isWindowChildOf(window: [*c]Window, potential_parent: [*c]Window, popup_hierarchy: bool, dock_hierarchy: bool) bool { //igIsWindowChildOf - return c.igIsWindowChildOf(window, potential_parent, popup_hierarchy, dock_hierarchy); -} -pub inline fn isWindowWithinBeginStackOf(window: [*c]Window, potential_parent: [*c]Window) bool { //igIsWindowWithinBeginStackOf - return c.igIsWindowWithinBeginStackOf(window, potential_parent); -} -pub inline fn isWindowAbove(potential_above: [*c]Window, potential_below: [*c]Window) bool { //igIsWindowAbove - return c.igIsWindowAbove(potential_above, potential_below); -} -pub inline fn isWindowNavFocusable(window: [*c]Window) bool { //igIsWindowNavFocusable - return c.igIsWindowNavFocusable(window); -} -pub inline fn setWindowPos_WindowPtr(window: [*c]Window, pos: Vec2, cond: Cond) void { //igSetWindowPos_WindowPtr - c.igSetWindowPos_WindowPtr(window, @bitCast(pos), @bitCast(cond)); -} -pub inline fn setWindowSize_WindowPtr(window: [*c]Window, size: Vec2, cond: Cond) void { //igSetWindowSize_WindowPtr - c.igSetWindowSize_WindowPtr(window, @bitCast(size), @bitCast(cond)); -} -pub inline fn setWindowCollapsed_WindowPtr(window: [*c]Window, collapsed: bool, cond: Cond) void { //igSetWindowCollapsed_WindowPtr - c.igSetWindowCollapsed_WindowPtr(window, collapsed, @bitCast(cond)); -} -pub inline fn setWindowHitTestHole(window: [*c]Window, pos: Vec2, size: Vec2) void { //igSetWindowHitTestHole - c.igSetWindowHitTestHole(window, @bitCast(pos), @bitCast(size)); -} -pub inline fn windowRectAbsToRel(pout: [*c]Rect, window: [*c]Window, r: Rect) void { //igWindowRectAbsToRel - c.igWindowRectAbsToRel(pout, window, @bitCast(r)); -} -pub inline fn windowRectRelToAbs(pout: [*c]Rect, window: [*c]Window, r: Rect) void { //igWindowRectRelToAbs - c.igWindowRectRelToAbs(pout, window, @bitCast(r)); -} -pub inline fn focusWindow(window: [*c]Window) void { //igFocusWindow - c.igFocusWindow(window); -} -pub inline fn focusTopMostWindowUnderOne(under_this_window: [*c]Window, ignore_window: [*c]Window) void { //igFocusTopMostWindowUnderOne - c.igFocusTopMostWindowUnderOne(under_this_window, ignore_window); -} -pub inline fn bringWindowToFocusFront(window: [*c]Window) void { //igBringWindowToFocusFront - c.igBringWindowToFocusFront(window); -} -pub inline fn bringWindowToDisplayFront(window: [*c]Window) void { //igBringWindowToDisplayFront - c.igBringWindowToDisplayFront(window); -} -pub inline fn bringWindowToDisplayBack(window: [*c]Window) void { //igBringWindowToDisplayBack - c.igBringWindowToDisplayBack(window); -} -pub inline fn bringWindowToDisplayBehind(window: [*c]Window, above_window: [*c]Window) void { //igBringWindowToDisplayBehind - c.igBringWindowToDisplayBehind(window, above_window); -} -pub inline fn findWindowDisplayIndex(window: [*c]Window) c_int { //igFindWindowDisplayIndex - return c.igFindWindowDisplayIndex(window); -} -pub inline fn findBottomMostVisibleWindowWithinBeginStack(window: [*c]Window) [*c]Window { //igFindBottomMostVisibleWindowWithinBeginStack - return c.igFindBottomMostVisibleWindowWithinBeginStack(window); -} -pub inline fn setCurrentFont(font: [*c]Font) void { //igSetCurrentFont - c.igSetCurrentFont(font); -} -pub inline fn getDefaultFont() [*c]Font { //igGetDefaultFont - return c.igGetDefaultFont(); -} -pub inline fn getForegroundDrawList_WindowPtr(window: [*c]Window) [*c]DrawList { //igGetForegroundDrawList_WindowPtr - return c.igGetForegroundDrawList_WindowPtr(window); -} -pub inline fn initialize() void { //igInitialize - c.igInitialize(); -} -pub inline fn shutdown() void { //igShutdown - c.igShutdown(); -} -pub inline fn updateInputEvents(trickle_fast_inputs: bool) void { //igUpdateInputEvents - c.igUpdateInputEvents(trickle_fast_inputs); -} -pub inline fn updateHoveredWindowAndCaptureFlags() void { //igUpdateHoveredWindowAndCaptureFlags - c.igUpdateHoveredWindowAndCaptureFlags(); -} -pub inline fn startMouseMovingWindow(window: [*c]Window) void { //igStartMouseMovingWindow - c.igStartMouseMovingWindow(window); -} -pub inline fn startMouseMovingWindowOrNode(window: [*c]Window, node: [*c]DockNode, undock_floating_node: bool) void { //igStartMouseMovingWindowOrNode - c.igStartMouseMovingWindowOrNode(window, node, undock_floating_node); -} -pub inline fn updateMouseMovingWindowNewFrame() void { //igUpdateMouseMovingWindowNewFrame - c.igUpdateMouseMovingWindowNewFrame(); -} -pub inline fn updateMouseMovingWindowEndFrame() void { //igUpdateMouseMovingWindowEndFrame - c.igUpdateMouseMovingWindowEndFrame(); -} -pub inline fn addContextHook(context: [*c]Context, hook: [*c]const ContextHook) ID { //igAddContextHook - return c.igAddContextHook(context, hook); -} -pub inline fn removeContextHook(context: [*c]Context, hook_to_remove: ID) void { //igRemoveContextHook - c.igRemoveContextHook(context, hook_to_remove); -} -pub inline fn callContextHooks(context: [*c]Context, t: ContextHookType) void { //igCallContextHooks - c.igCallContextHooks(context, @intFromEnum(t)); -} -pub inline fn translateWindowsInViewport(viewport: [*c]ViewportP, old_pos: Vec2, new_pos: Vec2) void { //igTranslateWindowsInViewport - c.igTranslateWindowsInViewport(viewport, @bitCast(old_pos), @bitCast(new_pos)); -} -pub inline fn scaleWindowsInViewport(viewport: [*c]ViewportP, scale: f32) void { //igScaleWindowsInViewport - c.igScaleWindowsInViewport(viewport, scale); -} -pub inline fn destroyPlatformWindow(viewport: [*c]ViewportP) void { //igDestroyPlatformWindow - c.igDestroyPlatformWindow(viewport); -} -pub inline fn setWindowViewport(window: [*c]Window, viewport: [*c]ViewportP) void { //igSetWindowViewport - c.igSetWindowViewport(window, viewport); -} -pub inline fn setCurrentViewport(window: [*c]Window, viewport: [*c]ViewportP) void { //igSetCurrentViewport - c.igSetCurrentViewport(window, viewport); -} -pub inline fn getViewportPlatformMonitor(viewport: [*c]Viewport) [*c]const PlatformMonitor { //igGetViewportPlatformMonitor - return c.igGetViewportPlatformMonitor(viewport); -} -pub inline fn findHoveredViewportFromPlatformWindowStack(mouse_platform_pos: Vec2) [*c]ViewportP { //igFindHoveredViewportFromPlatformWindowStack - return c.igFindHoveredViewportFromPlatformWindowStack(@bitCast(mouse_platform_pos)); -} -pub inline fn markIniSettingsDirty_Nil() void { //igMarkIniSettingsDirty_Nil - c.igMarkIniSettingsDirty_Nil(); -} -pub inline fn markIniSettingsDirty_WindowPtr(window: [*c]Window) void { //igMarkIniSettingsDirty_WindowPtr - c.igMarkIniSettingsDirty_WindowPtr(window); -} -pub inline fn clearIniSettings() void { //igClearIniSettings - c.igClearIniSettings(); -} -pub inline fn createNewWindowSettings(name: [*c]const u8) [*c]WindowSettings { //igCreateNewWindowSettings - return c.igCreateNewWindowSettings(name); -} -pub inline fn findWindowSettings(id: ID) [*c]WindowSettings { //igFindWindowSettings - return c.igFindWindowSettings(id); -} -pub inline fn findOrCreateWindowSettings(name: [*c]const u8) [*c]WindowSettings { //igFindOrCreateWindowSettings - return c.igFindOrCreateWindowSettings(name); -} -pub inline fn addSettingsHandler(handler: [*c]const SettingsHandler) void { //igAddSettingsHandler - c.igAddSettingsHandler(handler); -} -pub inline fn removeSettingsHandler(type_name: [*c]const u8) void { //igRemoveSettingsHandler - c.igRemoveSettingsHandler(type_name); -} -pub inline fn findSettingsHandler(type_name: [*c]const u8) [*c]SettingsHandler { //igFindSettingsHandler - return c.igFindSettingsHandler(type_name); -} -pub inline fn setNextWindowScroll(scroll: Vec2) void { //igSetNextWindowScroll - c.igSetNextWindowScroll(@bitCast(scroll)); -} -pub inline fn setScrollX_WindowPtr(window: [*c]Window, scroll_x: f32) void { //igSetScrollX_WindowPtr - c.igSetScrollX_WindowPtr(window, scroll_x); -} -pub inline fn setScrollY_WindowPtr(window: [*c]Window, scroll_y: f32) void { //igSetScrollY_WindowPtr - c.igSetScrollY_WindowPtr(window, scroll_y); -} -pub inline fn setScrollFromPosX_WindowPtr(window: [*c]Window, local_x: f32, center_x_ratio: f32) void { //igSetScrollFromPosX_WindowPtr - c.igSetScrollFromPosX_WindowPtr(window, local_x, center_x_ratio); -} -pub inline fn setScrollFromPosY_WindowPtr(window: [*c]Window, local_y: f32, center_y_ratio: f32) void { //igSetScrollFromPosY_WindowPtr - c.igSetScrollFromPosY_WindowPtr(window, local_y, center_y_ratio); -} -pub inline fn scrollToItem(flags: ScrollFlags) void { //igScrollToItem - c.igScrollToItem(@bitCast(flags)); -} -pub inline fn scrollToRect(window: [*c]Window, rect: Rect, flags: ScrollFlags) void { //igScrollToRect - c.igScrollToRect(window, @bitCast(rect), @bitCast(flags)); -} -pub inline fn scrollToRectEx(pout: [*c]Vec2, window: [*c]Window, rect: Rect, flags: ScrollFlags) void { //igScrollToRectEx - c.igScrollToRectEx(pout, window, @bitCast(rect), @bitCast(flags)); -} -pub inline fn scrollToBringRectIntoView(window: [*c]Window, rect: Rect) void { //igScrollToBringRectIntoView - c.igScrollToBringRectIntoView(window, @bitCast(rect)); -} -pub inline fn getItemID() ID { //igGetItemID - return c.igGetItemID(); -} -pub inline fn getItemStatusFlags() ItemStatusFlags { //igGetItemStatusFlags - return c.igGetItemStatusFlags(); -} -pub inline fn getItemFlags() ItemFlags { //igGetItemFlags - return c.igGetItemFlags(); -} -pub inline fn getActiveID() ID { //igGetActiveID - return c.igGetActiveID(); -} -pub inline fn getFocusID() ID { //igGetFocusID - return c.igGetFocusID(); -} -pub inline fn setActiveID(id: ID, window: [*c]Window) void { //igSetActiveID - c.igSetActiveID(id, window); -} -pub inline fn setFocusID(id: ID, window: [*c]Window) void { //igSetFocusID - c.igSetFocusID(id, window); -} -pub inline fn clearActiveID() void { //igClearActiveID - c.igClearActiveID(); -} -pub inline fn getHoveredID() ID { //igGetHoveredID - return c.igGetHoveredID(); -} -pub inline fn setHoveredID(id: ID) void { //igSetHoveredID - c.igSetHoveredID(id); -} -pub inline fn keepAliveID(id: ID) void { //igKeepAliveID - c.igKeepAliveID(id); -} -pub inline fn markItemEdited(id: ID) void { //igMarkItemEdited - c.igMarkItemEdited(id); -} -pub inline fn pushOverrideID(id: ID) void { //igPushOverrideID - c.igPushOverrideID(id); -} -pub inline fn getIDWithSeed(str_id_begin: [*c]const u8, str_id_end: [*c]const u8, seed: ID) ID { //igGetIDWithSeed - return c.igGetIDWithSeed(str_id_begin, str_id_end, seed); -} -pub inline fn itemSize_Vec2(size: Vec2, text_baseline_y: f32) void { //igItemSize_Vec2 - c.igItemSize_Vec2(@bitCast(size), text_baseline_y); -} -pub inline fn itemSize_Rect(bb: Rect, text_baseline_y: f32) void { //igItemSize_Rect - c.igItemSize_Rect(@bitCast(bb), text_baseline_y); -} -pub inline fn itemAdd(bb: Rect, id: ID, nav_bb: [*c]const Rect, extra_flags: ItemFlags) bool { //igItemAdd - return c.igItemAdd(@bitCast(bb), id, nav_bb, @bitCast(extra_flags)); -} -pub inline fn itemHoverable(bb: Rect, id: ID) bool { //igItemHoverable - return c.igItemHoverable(@bitCast(bb), id); -} -pub inline fn isClippedEx(bb: Rect, id: ID) bool { //igIsClippedEx - return c.igIsClippedEx(@bitCast(bb), id); -} -pub inline fn setLastItemData(item_id: ID, in_flags: ItemFlags, status_flags: ItemStatusFlags, item_rect: Rect) void { //igSetLastItemData - c.igSetLastItemData(item_id, @bitCast(in_flags), @bitCast(status_flags), @bitCast(item_rect)); -} -pub inline fn calcItemSize(pout: [*c]Vec2, size: Vec2, default_w: f32, default_h: f32) void { //igCalcItemSize - c.igCalcItemSize(pout, @bitCast(size), default_w, default_h); -} -pub inline fn calcWrapWidthForPos(pos: Vec2, wrap_pos_x: f32) f32 { //igCalcWrapWidthForPos - return c.igCalcWrapWidthForPos(@bitCast(pos), wrap_pos_x); -} -pub inline fn pushMultiItemsWidths(components: c_int, width_full: f32) void { //igPushMultiItemsWidths - c.igPushMultiItemsWidths(components, width_full); -} -pub inline fn isItemToggledSelection() bool { //igIsItemToggledSelection - return c.igIsItemToggledSelection(); -} -pub inline fn getContentRegionMaxAbs(pout: [*c]Vec2) void { //igGetContentRegionMaxAbs - c.igGetContentRegionMaxAbs(pout); -} -pub inline fn shrinkWidths(items: [*c]ShrinkWidthItem, count: c_int, width_excess: f32) void { //igShrinkWidths - c.igShrinkWidths(items, count, width_excess); -} -pub inline fn pushItemFlag(option: ItemFlags, enabled: bool) void { //igPushItemFlag - c.igPushItemFlag(@bitCast(option), enabled); -} -pub inline fn popItemFlag() void { //igPopItemFlag - c.igPopItemFlag(); -} -pub inline fn logBegin(t: LogType, auto_open_depth: c_int) void { //igLogBegin - c.igLogBegin(@intFromEnum(t), auto_open_depth); -} -pub inline fn logToBuffer(auto_open_depth: c_int) void { //igLogToBuffer - c.igLogToBuffer(auto_open_depth); -} -pub inline fn logRenderedText(ref_pos: [*c]const Vec2, text: [*c]const u8, text_end: [*c]const u8) void { //igLogRenderedText - c.igLogRenderedText(ref_pos, text, text_end); -} -pub inline fn logSetNextTextDecoration(prefix: [*c]const u8, suffix: [*c]const u8) void { //igLogSetNextTextDecoration - c.igLogSetNextTextDecoration(prefix, suffix); -} -pub inline fn beginChildEx(name: [*c]const u8, id: ID, size_arg: Vec2, border: bool, flags: WindowFlags) bool { //igBeginChildEx - return c.igBeginChildEx(name, id, @bitCast(size_arg), border, @bitCast(flags)); -} -pub inline fn openPopupEx(id: ID, popup_flags: PopupFlags) void { //igOpenPopupEx - c.igOpenPopupEx(id, @bitCast(popup_flags)); -} -pub inline fn closePopupToLevel(remaining: c_int, restore_focus_to_window_under_popup: bool) void { //igClosePopupToLevel - c.igClosePopupToLevel(remaining, restore_focus_to_window_under_popup); -} -pub inline fn closePopupsOverWindow(ref_window: [*c]Window, restore_focus_to_window_under_popup: bool) void { //igClosePopupsOverWindow - c.igClosePopupsOverWindow(ref_window, restore_focus_to_window_under_popup); -} -pub inline fn closePopupsExceptModals() void { //igClosePopupsExceptModals - c.igClosePopupsExceptModals(); -} -pub inline fn isPopupOpen_ID(id: ID, popup_flags: PopupFlags) bool { //igIsPopupOpen_ID - return c.igIsPopupOpen_ID(id, @bitCast(popup_flags)); -} -pub inline fn beginPopupEx(id: ID, extra_flags: WindowFlags) bool { //igBeginPopupEx - return c.igBeginPopupEx(id, @bitCast(extra_flags)); -} -pub inline fn beginTooltipEx(tooltip_flags: TooltipFlags, extra_window_flags: WindowFlags) void { //igBeginTooltipEx - c.igBeginTooltipEx(@bitCast(tooltip_flags), @bitCast(extra_window_flags)); -} -pub inline fn getPopupAllowedExtentRect(pout: [*c]Rect, window: [*c]Window) void { //igGetPopupAllowedExtentRect - c.igGetPopupAllowedExtentRect(pout, window); -} -pub inline fn getTopMostPopupModal() [*c]Window { //igGetTopMostPopupModal - return c.igGetTopMostPopupModal(); -} -pub inline fn getTopMostAndVisiblePopupModal() [*c]Window { //igGetTopMostAndVisiblePopupModal - return c.igGetTopMostAndVisiblePopupModal(); -} -pub inline fn findBestWindowPosForPopup(pout: [*c]Vec2, window: [*c]Window) void { //igFindBestWindowPosForPopup - c.igFindBestWindowPosForPopup(pout, window); -} -pub inline fn findBestWindowPosForPopupEx(pout: [*c]Vec2, ref_pos: Vec2, size: Vec2, last_dir: [*c]Dir, r_outer: Rect, r_avoid: Rect, policy: PopupPositionPolicy) void { //igFindBestWindowPosForPopupEx - c.igFindBestWindowPosForPopupEx(pout, @bitCast(ref_pos), @bitCast(size), last_dir, @bitCast(r_outer), @bitCast(r_avoid), @intFromEnum(policy)); -} -pub inline fn beginViewportSideBar(name: [*c]const u8, viewport: [*c]Viewport, dir: Dir, size: f32, window_flags: WindowFlags) bool { //igBeginViewportSideBar - return c.igBeginViewportSideBar(name, viewport, @intFromEnum(dir), size, @bitCast(window_flags)); -} -pub inline fn beginMenuEx(label: [*c]const u8, icon: [*c]const u8, enabled: bool) bool { //igBeginMenuEx - return c.igBeginMenuEx(label, icon, enabled); -} -pub inline fn menuItemEx(label: [*c]const u8, icon: [*c]const u8, shortcut: [*c]const u8, selected: bool, enabled: bool) bool { //igMenuItemEx - return c.igMenuItemEx(label, icon, shortcut, selected, enabled); -} -pub inline fn beginComboPopup(popup_id: ID, bb: Rect, flags: ComboFlags) bool { //igBeginComboPopup - return c.igBeginComboPopup(popup_id, @bitCast(bb), @bitCast(flags)); -} -pub inline fn beginComboPreview() bool { //igBeginComboPreview - return c.igBeginComboPreview(); -} -pub inline fn endComboPreview() void { //igEndComboPreview - c.igEndComboPreview(); -} -pub inline fn navInitWindow(window: [*c]Window, force_reinit: bool) void { //igNavInitWindow - c.igNavInitWindow(window, force_reinit); -} -pub inline fn navInitRequestApplyResult() void { //igNavInitRequestApplyResult - c.igNavInitRequestApplyResult(); -} -pub inline fn navMoveRequestButNoResultYet() bool { //igNavMoveRequestButNoResultYet - return c.igNavMoveRequestButNoResultYet(); -} -pub inline fn navMoveRequestSubmit(move_dir: Dir, clip_dir: Dir, move_flags: NavMoveFlags, scroll_flags: ScrollFlags) void { //igNavMoveRequestSubmit - c.igNavMoveRequestSubmit(@intFromEnum(move_dir), @intFromEnum(clip_dir), @bitCast(move_flags), @bitCast(scroll_flags)); -} -pub inline fn navMoveRequestForward(move_dir: Dir, clip_dir: Dir, move_flags: NavMoveFlags, scroll_flags: ScrollFlags) void { //igNavMoveRequestForward - c.igNavMoveRequestForward(@intFromEnum(move_dir), @intFromEnum(clip_dir), @bitCast(move_flags), @bitCast(scroll_flags)); -} -pub inline fn navMoveRequestResolveWithLastItem(result: [*c]NavItemData) void { //igNavMoveRequestResolveWithLastItem - c.igNavMoveRequestResolveWithLastItem(result); -} -pub inline fn navMoveRequestCancel() void { //igNavMoveRequestCancel - c.igNavMoveRequestCancel(); -} -pub inline fn navMoveRequestApplyResult() void { //igNavMoveRequestApplyResult - c.igNavMoveRequestApplyResult(); -} -pub inline fn navMoveRequestTryWrapping(window: [*c]Window, move_flags: NavMoveFlags) void { //igNavMoveRequestTryWrapping - c.igNavMoveRequestTryWrapping(window, @bitCast(move_flags)); -} -pub inline fn getNavInputName(n: NavInput) [*c]const u8 { //igGetNavInputName - return c.igGetNavInputName(@intFromEnum(n)); -} -pub inline fn getNavInputAmount(n: NavInput, mode: NavReadMode) f32 { //igGetNavInputAmount - return c.igGetNavInputAmount(@intFromEnum(n), @intFromEnum(mode)); -} -pub inline fn getNavInputAmount2d(pout: [*c]Vec2, dir_sources: NavDirSourceFlags, mode: NavReadMode, slow_factor: f32, fast_factor: f32) void { //igGetNavInputAmount2d - c.igGetNavInputAmount2d(pout, @bitCast(dir_sources), @intFromEnum(mode), slow_factor, fast_factor); -} -pub inline fn calcTypematicRepeatAmount(t0: f32, t1: f32, repeat_delay: f32, repeat_rate: f32) c_int { //igCalcTypematicRepeatAmount - return c.igCalcTypematicRepeatAmount(t0, t1, repeat_delay, repeat_rate); -} -pub inline fn activateItem(id: ID) void { //igActivateItem - c.igActivateItem(id); -} -pub inline fn setNavWindow(window: [*c]Window) void { //igSetNavWindow - c.igSetNavWindow(window); -} -pub inline fn setNavID(id: ID, nav_layer: NavLayer, focus_scope_id: ID, rect_rel: Rect) void { //igSetNavID - c.igSetNavID(id, @intFromEnum(nav_layer), focus_scope_id, @bitCast(rect_rel)); -} -pub inline fn pushFocusScope(id: ID) void { //igPushFocusScope - c.igPushFocusScope(id); -} -pub inline fn popFocusScope() void { //igPopFocusScope - c.igPopFocusScope(); -} -pub inline fn getFocusedFocusScope() ID { //igGetFocusedFocusScope - return c.igGetFocusedFocusScope(); -} -pub inline fn getFocusScope() ID { //igGetFocusScope - return c.igGetFocusScope(); -} -pub inline fn isNamedKey(key: Key) bool { //igIsNamedKey - return c.igIsNamedKey(@intFromEnum(key)); -} -pub inline fn isLegacyKey(key: Key) bool { //igIsLegacyKey - return c.igIsLegacyKey(@intFromEnum(key)); -} -pub inline fn isGamepadKey(key: Key) bool { //igIsGamepadKey - return c.igIsGamepadKey(@intFromEnum(key)); -} -pub inline fn getKeyData(key: Key) [*c]KeyData { //igGetKeyData - return c.igGetKeyData(@intFromEnum(key)); -} -pub inline fn setItemUsingMouseWheel() void { //igSetItemUsingMouseWheel - c.igSetItemUsingMouseWheel(); -} -pub inline fn setActiveIdUsingNavAndKeys() void { //igSetActiveIdUsingNavAndKeys - c.igSetActiveIdUsingNavAndKeys(); -} -pub inline fn isActiveIdUsingNavDir(dir: Dir) bool { //igIsActiveIdUsingNavDir - return c.igIsActiveIdUsingNavDir(@intFromEnum(dir)); -} -pub inline fn isActiveIdUsingNavInput(input: NavInput) bool { //igIsActiveIdUsingNavInput - return c.igIsActiveIdUsingNavInput(@intFromEnum(input)); -} -pub inline fn isActiveIdUsingKey(key: Key) bool { //igIsActiveIdUsingKey - return c.igIsActiveIdUsingKey(@intFromEnum(key)); -} -pub inline fn setActiveIdUsingKey(key: Key) void { //igSetActiveIdUsingKey - c.igSetActiveIdUsingKey(@intFromEnum(key)); -} -pub inline fn isMouseDragPastThreshold(btn: MouseButton, lock_threshold: f32) bool { //igIsMouseDragPastThreshold - return c.igIsMouseDragPastThreshold(@intFromEnum(btn), lock_threshold); -} -pub inline fn isNavInputDown(n: NavInput) bool { //igIsNavInputDown - return c.igIsNavInputDown(@intFromEnum(n)); -} -pub inline fn isNavInputTest(n: NavInput, rm: NavReadMode) bool { //igIsNavInputTest - return c.igIsNavInputTest(@intFromEnum(n), @intFromEnum(rm)); -} -pub inline fn getMergedModFlags() ModFlags { //igGetMergedModFlags - return c.igGetMergedModFlags(); -} -pub inline fn isKeyPressedMap(key: Key, repeat: bool) bool { //igIsKeyPressedMap - return c.igIsKeyPressedMap(@intFromEnum(key), repeat); -} -pub inline fn dockContextInitialize(ctx: [*c]Context) void { //igDockContextInitialize - c.igDockContextInitialize(ctx); -} -pub inline fn dockContextShutdown(ctx: [*c]Context) void { //igDockContextShutdown - c.igDockContextShutdown(ctx); -} -pub inline fn dockContextClearNodes(ctx: [*c]Context, root_id: ID, clear_settings_refs: bool) void { //igDockContextClearNodes - c.igDockContextClearNodes(ctx, root_id, clear_settings_refs); -} -pub inline fn dockContextRebuildNodes(ctx: [*c]Context) void { //igDockContextRebuildNodes - c.igDockContextRebuildNodes(ctx); -} -pub inline fn dockContextNewFrameUpdateUndocking(ctx: [*c]Context) void { //igDockContextNewFrameUpdateUndocking - c.igDockContextNewFrameUpdateUndocking(ctx); -} -pub inline fn dockContextNewFrameUpdateDocking(ctx: [*c]Context) void { //igDockContextNewFrameUpdateDocking - c.igDockContextNewFrameUpdateDocking(ctx); -} -pub inline fn dockContextEndFrame(ctx: [*c]Context) void { //igDockContextEndFrame - c.igDockContextEndFrame(ctx); -} -pub inline fn dockContextGenNodeID(ctx: [*c]Context) ID { //igDockContextGenNodeID - return c.igDockContextGenNodeID(ctx); -} -pub inline fn dockContextQueueDock(ctx: [*c]Context, target: [*c]Window, target_node: [*c]DockNode, payload: [*c]Window, split_dir: Dir, split_ratio: f32, split_outer: bool) void { //igDockContextQueueDock - c.igDockContextQueueDock(ctx, target, target_node, payload, @intFromEnum(split_dir), split_ratio, split_outer); -} -pub inline fn dockContextQueueUndockWindow(ctx: [*c]Context, window: [*c]Window) void { //igDockContextQueueUndockWindow - c.igDockContextQueueUndockWindow(ctx, window); -} -pub inline fn dockContextQueueUndockNode(ctx: [*c]Context, node: [*c]DockNode) void { //igDockContextQueueUndockNode - c.igDockContextQueueUndockNode(ctx, node); -} -pub inline fn dockContextCalcDropPosForDocking(target: [*c]Window, target_node: [*c]DockNode, payload: [*c]Window, split_dir: Dir, split_outer: bool, out_pos: [*c]Vec2) bool { //igDockContextCalcDropPosForDocking - return c.igDockContextCalcDropPosForDocking(target, target_node, payload, @intFromEnum(split_dir), split_outer, out_pos); -} -pub inline fn dockNodeBeginAmendTabBar(node: [*c]DockNode) bool { //igDockNodeBeginAmendTabBar - return c.igDockNodeBeginAmendTabBar(node); -} -pub inline fn dockNodeEndAmendTabBar() void { //igDockNodeEndAmendTabBar - c.igDockNodeEndAmendTabBar(); -} -pub inline fn dockNodeGetRootNode(node: [*c]DockNode) [*c]DockNode { //igDockNodeGetRootNode - return c.igDockNodeGetRootNode(node); -} -pub inline fn dockNodeIsInHierarchyOf(node: [*c]DockNode, parent: [*c]DockNode) bool { //igDockNodeIsInHierarchyOf - return c.igDockNodeIsInHierarchyOf(node, parent); -} -pub inline fn dockNodeGetDepth(node: [*c]const DockNode) c_int { //igDockNodeGetDepth - return c.igDockNodeGetDepth(node); -} -pub inline fn dockNodeGetWindowMenuButtonId(node: [*c]const DockNode) ID { //igDockNodeGetWindowMenuButtonId - return c.igDockNodeGetWindowMenuButtonId(node); -} -pub inline fn getWindowDockNode() [*c]DockNode { //igGetWindowDockNode - return c.igGetWindowDockNode(); -} -pub inline fn getWindowAlwaysWantOwnTabBar(window: [*c]Window) bool { //igGetWindowAlwaysWantOwnTabBar - return c.igGetWindowAlwaysWantOwnTabBar(window); -} -pub inline fn beginDocked(window: [*c]Window, p_open: [*c]bool) void { //igBeginDocked - c.igBeginDocked(window, p_open); -} -pub inline fn beginDockableDragDropSource(window: [*c]Window) void { //igBeginDockableDragDropSource - c.igBeginDockableDragDropSource(window); -} -pub inline fn beginDockableDragDropTarget(window: [*c]Window) void { //igBeginDockableDragDropTarget - c.igBeginDockableDragDropTarget(window); -} -pub inline fn setWindowDock(window: [*c]Window, dock_id: ID, cond: Cond) void { //igSetWindowDock - c.igSetWindowDock(window, dock_id, @bitCast(cond)); -} -pub inline fn dockBuilderDockWindow(window_name: [*c]const u8, node_id: ID) void { //igDockBuilderDockWindow - c.igDockBuilderDockWindow(window_name, node_id); -} -pub inline fn dockBuilderGetNode(node_id: ID) [*c]DockNode { //igDockBuilderGetNode - return c.igDockBuilderGetNode(node_id); -} -pub inline fn dockBuilderGetCentralNode(node_id: ID) [*c]DockNode { //igDockBuilderGetCentralNode - return c.igDockBuilderGetCentralNode(node_id); -} -pub inline fn dockBuilderAddNode(node_id: ID, flags: DockNodeFlags) ID { //igDockBuilderAddNode - return c.igDockBuilderAddNode(node_id, @bitCast(flags)); -} -pub inline fn dockBuilderRemoveNode(node_id: ID) void { //igDockBuilderRemoveNode - c.igDockBuilderRemoveNode(node_id); -} -pub inline fn dockBuilderRemoveNodeDockedWindows(node_id: ID, clear_settings_refs: bool) void { //igDockBuilderRemoveNodeDockedWindows - c.igDockBuilderRemoveNodeDockedWindows(node_id, clear_settings_refs); -} -pub inline fn dockBuilderRemoveNodeChildNodes(node_id: ID) void { //igDockBuilderRemoveNodeChildNodes - c.igDockBuilderRemoveNodeChildNodes(node_id); -} -pub inline fn dockBuilderSetNodePos(node_id: ID, pos: Vec2) void { //igDockBuilderSetNodePos - c.igDockBuilderSetNodePos(node_id, @bitCast(pos)); -} -pub inline fn dockBuilderSetNodeSize(node_id: ID, size: Vec2) void { //igDockBuilderSetNodeSize - c.igDockBuilderSetNodeSize(node_id, @bitCast(size)); -} -pub inline fn dockBuilderSplitNode(node_id: ID, split_dir: Dir, size_ratio_for_node_at_dir: f32, out_id_at_dir: [*c]ID, out_id_at_opposite_dir: [*c]ID) ID { //igDockBuilderSplitNode - return c.igDockBuilderSplitNode(node_id, @intFromEnum(split_dir), size_ratio_for_node_at_dir, out_id_at_dir, out_id_at_opposite_dir); -} -pub inline fn dockBuilderCopyDockSpace(src_dockspace_id: ID, dst_dockspace_id: ID, in_window_remap_pairs: [*c]CharVector) void { //igDockBuilderCopyDockSpace - c.igDockBuilderCopyDockSpace(src_dockspace_id, dst_dockspace_id, in_window_remap_pairs); -} -pub inline fn dockBuilderCopyNode(src_node_id: ID, dst_node_id: ID, out_node_remap_pairs: [*c]IDVector) void { //igDockBuilderCopyNode - c.igDockBuilderCopyNode(src_node_id, dst_node_id, out_node_remap_pairs); -} -pub inline fn dockBuilderCopyWindowSettings(src_name: [*c]const u8, dst_name: [*c]const u8) void { //igDockBuilderCopyWindowSettings - c.igDockBuilderCopyWindowSettings(src_name, dst_name); -} -pub inline fn dockBuilderFinish(node_id: ID) void { //igDockBuilderFinish - c.igDockBuilderFinish(node_id); -} -pub inline fn isDragDropActive() bool { //igIsDragDropActive - return c.igIsDragDropActive(); -} -pub inline fn beginDragDropTargetCustom(bb: Rect, id: ID) bool { //igBeginDragDropTargetCustom - return c.igBeginDragDropTargetCustom(@bitCast(bb), id); -} -pub inline fn clearDragDrop() void { //igClearDragDrop - c.igClearDragDrop(); -} -pub inline fn isDragDropPayloadBeingAccepted() bool { //igIsDragDropPayloadBeingAccepted - return c.igIsDragDropPayloadBeingAccepted(); -} -pub inline fn setWindowClipRectBeforeSetChannel(window: [*c]Window, clip_rect: Rect) void { //igSetWindowClipRectBeforeSetChannel - c.igSetWindowClipRectBeforeSetChannel(window, @bitCast(clip_rect)); -} -pub inline fn beginColumns(str_id: [*c]const u8, count: c_int, flags: OldColumnFlags) void { //igBeginColumns - c.igBeginColumns(str_id, count, @bitCast(flags)); -} -pub inline fn endColumns() void { //igEndColumns - c.igEndColumns(); -} -pub inline fn pushColumnClipRect(column_index: c_int) void { //igPushColumnClipRect - c.igPushColumnClipRect(column_index); -} -pub inline fn pushColumnsBackground() void { //igPushColumnsBackground - c.igPushColumnsBackground(); -} -pub inline fn popColumnsBackground() void { //igPopColumnsBackground - c.igPopColumnsBackground(); -} -pub inline fn getColumnsID(str_id: [*c]const u8, count: c_int) ID { //igGetColumnsID - return c.igGetColumnsID(str_id, count); -} -pub inline fn getColumnOffsetFromNorm(col: [*c]const OldColumns, offset_norm: f32) f32 { //igGetColumnOffsetFromNorm - return c.igGetColumnOffsetFromNorm(col, offset_norm); -} -pub inline fn getColumnNormFromOffset(col: [*c]const OldColumns, offset: f32) f32 { //igGetColumnNormFromOffset - return c.igGetColumnNormFromOffset(col, offset); -} -pub inline fn tableOpenContextMenu(column_n: c_int) void { //igTableOpenContextMenu - c.igTableOpenContextMenu(column_n); -} -pub inline fn tableSetColumnWidth(column_n: c_int, width: f32) void { //igTableSetColumnWidth - c.igTableSetColumnWidth(column_n, width); -} -pub inline fn tableSetColumnSortDirection(column_n: c_int, sort_direction: SortDirection, append_to_sort_specs: bool) void { //igTableSetColumnSortDirection - c.igTableSetColumnSortDirection(column_n, @intFromEnum(sort_direction), append_to_sort_specs); -} -pub inline fn tableGetHoveredColumn() c_int { //igTableGetHoveredColumn - return c.igTableGetHoveredColumn(); -} -pub inline fn tableGetHeaderRowHeight() f32 { //igTableGetHeaderRowHeight - return c.igTableGetHeaderRowHeight(); -} -pub inline fn tablePushBackgroundChannel() void { //igTablePushBackgroundChannel - c.igTablePushBackgroundChannel(); -} -pub inline fn tablePopBackgroundChannel() void { //igTablePopBackgroundChannel - c.igTablePopBackgroundChannel(); -} -pub inline fn getCurrentTable() [*c]Table { //igGetCurrentTable - return c.igGetCurrentTable(); -} -pub inline fn tableFindByID(id: ID) [*c]Table { //igTableFindByID - return c.igTableFindByID(id); -} -pub inline fn beginTableEx(name: [*c]const u8, id: ID, columns_count: c_int, flags: TableFlags, outer_size: Vec2, inner_width: f32) bool { //igBeginTableEx - return c.igBeginTableEx(name, id, columns_count, @bitCast(flags), @bitCast(outer_size), inner_width); -} -pub inline fn tableBeginInitMemory(table: [*c]Table, columns_count: c_int) void { //igTableBeginInitMemory - c.igTableBeginInitMemory(table, columns_count); -} -pub inline fn tableBeginApplyRequests(table: [*c]Table) void { //igTableBeginApplyRequests - c.igTableBeginApplyRequests(table); -} -pub inline fn tableSetupDrawChannels(table: [*c]Table) void { //igTableSetupDrawChannels - c.igTableSetupDrawChannels(table); -} -pub inline fn tableUpdateLayout(table: [*c]Table) void { //igTableUpdateLayout - c.igTableUpdateLayout(table); -} -pub inline fn tableUpdateBorders(table: [*c]Table) void { //igTableUpdateBorders - c.igTableUpdateBorders(table); -} -pub inline fn tableUpdateColumnsWeightFromWidth(table: [*c]Table) void { //igTableUpdateColumnsWeightFromWidth - c.igTableUpdateColumnsWeightFromWidth(table); -} -pub inline fn tableDrawBorders(table: [*c]Table) void { //igTableDrawBorders - c.igTableDrawBorders(table); -} -pub inline fn tableDrawContextMenu(table: [*c]Table) void { //igTableDrawContextMenu - c.igTableDrawContextMenu(table); -} -pub inline fn tableMergeDrawChannels(table: [*c]Table) void { //igTableMergeDrawChannels - c.igTableMergeDrawChannels(table); -} -pub inline fn tableGetInstanceData(table: [*c]Table, instance_no: c_int) [*c]TableInstanceData { //igTableGetInstanceData - return c.igTableGetInstanceData(table, instance_no); -} -pub inline fn tableSortSpecsSanitize(table: [*c]Table) void { //igTableSortSpecsSanitize - c.igTableSortSpecsSanitize(table); -} -pub inline fn tableSortSpecsBuild(table: [*c]Table) void { //igTableSortSpecsBuild - c.igTableSortSpecsBuild(table); -} -pub inline fn tableGetColumnNextSortDirection(column: [*c]TableColumn) SortDirection { //igTableGetColumnNextSortDirection - return c.igTableGetColumnNextSortDirection(column); -} -pub inline fn tableFixColumnSortDirection(table: [*c]Table, column: [*c]TableColumn) void { //igTableFixColumnSortDirection - c.igTableFixColumnSortDirection(table, column); -} -pub inline fn tableGetColumnWidthAuto(table: [*c]Table, column: [*c]TableColumn) f32 { //igTableGetColumnWidthAuto - return c.igTableGetColumnWidthAuto(table, column); -} -pub inline fn tableBeginRow(table: [*c]Table) void { //igTableBeginRow - c.igTableBeginRow(table); -} -pub inline fn tableEndRow(table: [*c]Table) void { //igTableEndRow - c.igTableEndRow(table); -} -pub inline fn tableBeginCell(table: [*c]Table, column_n: c_int) void { //igTableBeginCell - c.igTableBeginCell(table, column_n); -} -pub inline fn tableEndCell(table: [*c]Table) void { //igTableEndCell - c.igTableEndCell(table); -} -pub inline fn tableGetCellBgRect(pout: [*c]Rect, table: [*c]const Table, column_n: c_int) void { //igTableGetCellBgRect - c.igTableGetCellBgRect(pout, table, column_n); -} -pub inline fn tableGetColumnName_TablePtr(table: [*c]const Table, column_n: c_int) [*c]const u8 { //igTableGetColumnName_TablePtr - return c.igTableGetColumnName_TablePtr(table, column_n); -} -pub inline fn tableGetColumnResizeID(table: [*c]const Table, column_n: c_int, instance_no: c_int) ID { //igTableGetColumnResizeID - return c.igTableGetColumnResizeID(table, column_n, instance_no); -} -pub inline fn tableGetMaxColumnWidth(table: [*c]const Table, column_n: c_int) f32 { //igTableGetMaxColumnWidth - return c.igTableGetMaxColumnWidth(table, column_n); -} -pub inline fn tableSetColumnWidthAutoSingle(table: [*c]Table, column_n: c_int) void { //igTableSetColumnWidthAutoSingle - c.igTableSetColumnWidthAutoSingle(table, column_n); -} -pub inline fn tableSetColumnWidthAutoAll(table: [*c]Table) void { //igTableSetColumnWidthAutoAll - c.igTableSetColumnWidthAutoAll(table); -} -pub inline fn tableRemove(table: [*c]Table) void { //igTableRemove - c.igTableRemove(table); -} -pub inline fn tableGcCompactTransientBuffers_TablePtr(table: [*c]Table) void { //igTableGcCompactTransientBuffers_TablePtr - c.igTableGcCompactTransientBuffers_TablePtr(table); -} -pub inline fn tableGcCompactTransientBuffers_TableTempDataPtr(table: [*c]TableTempData) void { //igTableGcCompactTransientBuffers_TableTempDataPtr - c.igTableGcCompactTransientBuffers_TableTempDataPtr(table); -} -pub inline fn tableGcCompactSettings() void { //igTableGcCompactSettings - c.igTableGcCompactSettings(); -} -pub inline fn tableLoadSettings(table: [*c]Table) void { //igTableLoadSettings - c.igTableLoadSettings(table); -} -pub inline fn tableSaveSettings(table: [*c]Table) void { //igTableSaveSettings - c.igTableSaveSettings(table); -} -pub inline fn tableResetSettings(table: [*c]Table) void { //igTableResetSettings - c.igTableResetSettings(table); -} -pub inline fn tableGetBoundSettings(table: [*c]Table) [*c]TableSettings { //igTableGetBoundSettings - return c.igTableGetBoundSettings(table); -} -pub inline fn tableSettingsAddSettingsHandler() void { //igTableSettingsAddSettingsHandler - c.igTableSettingsAddSettingsHandler(); -} -pub inline fn tableSettingsCreate(id: ID, columns_count: c_int) [*c]TableSettings { //igTableSettingsCreate - return c.igTableSettingsCreate(id, columns_count); -} -pub inline fn tableSettingsFindByID(id: ID) [*c]TableSettings { //igTableSettingsFindByID - return c.igTableSettingsFindByID(id); -} -pub inline fn beginTabBarEx(tab_bar: [*c]TabBar, bb: Rect, flags: TabBarFlags, dock_node: [*c]DockNode) bool { //igBeginTabBarEx - return c.igBeginTabBarEx(tab_bar, @bitCast(bb), @bitCast(flags), dock_node); -} -pub inline fn tabBarFindTabByID(tab_bar: [*c]TabBar, tab_id: ID) [*c]TabItem { //igTabBarFindTabByID - return c.igTabBarFindTabByID(tab_bar, tab_id); -} -pub inline fn tabBarFindMostRecentlySelectedTabForActiveWindow(tab_bar: [*c]TabBar) [*c]TabItem { //igTabBarFindMostRecentlySelectedTabForActiveWindow - return c.igTabBarFindMostRecentlySelectedTabForActiveWindow(tab_bar); -} -pub inline fn tabBarAddTab(tab_bar: [*c]TabBar, tab_flags: TabItemFlags, window: [*c]Window) void { //igTabBarAddTab - c.igTabBarAddTab(tab_bar, @bitCast(tab_flags), window); -} -pub inline fn tabBarRemoveTab(tab_bar: [*c]TabBar, tab_id: ID) void { //igTabBarRemoveTab - c.igTabBarRemoveTab(tab_bar, tab_id); -} -pub inline fn tabBarCloseTab(tab_bar: [*c]TabBar, tab: [*c]TabItem) void { //igTabBarCloseTab - c.igTabBarCloseTab(tab_bar, tab); -} -pub inline fn tabBarQueueReorder(tab_bar: [*c]TabBar, tab: [*c]const TabItem, offset: c_int) void { //igTabBarQueueReorder - c.igTabBarQueueReorder(tab_bar, tab, offset); -} -pub inline fn tabBarQueueReorderFromMousePos(tab_bar: [*c]TabBar, tab: [*c]const TabItem, mouse_pos: Vec2) void { //igTabBarQueueReorderFromMousePos - c.igTabBarQueueReorderFromMousePos(tab_bar, tab, @bitCast(mouse_pos)); -} -pub inline fn tabBarProcessReorder(tab_bar: [*c]TabBar) bool { //igTabBarProcessReorder - return c.igTabBarProcessReorder(tab_bar); -} -pub inline fn tabItemEx(tab_bar: [*c]TabBar, label: [*c]const u8, p_open: [*c]bool, flags: TabItemFlags, docked_window: [*c]Window) bool { //igTabItemEx - return c.igTabItemEx(tab_bar, label, p_open, @bitCast(flags), docked_window); -} -pub inline fn tabItemCalcSize(pout: [*c]Vec2, label: [*c]const u8, has_close_button: bool) void { //igTabItemCalcSize - c.igTabItemCalcSize(pout, label, has_close_button); -} -pub inline fn tabItemBackground(draw_list: [*c]DrawList, bb: Rect, flags: TabItemFlags, col: U32) void { //igTabItemBackground - c.igTabItemBackground(draw_list, @bitCast(bb), @bitCast(flags), col); -} -pub inline fn renderText(pos: Vec2, text: [*c]const u8, text_end: [*c]const u8, hide_text_after_hash: bool) void { //igRenderText - c.igRenderText(@bitCast(pos), text, text_end, hide_text_after_hash); -} -pub inline fn renderTextWrapped(pos: Vec2, text: [*c]const u8, text_end: [*c]const u8, wrap_width: f32) void { //igRenderTextWrapped - c.igRenderTextWrapped(@bitCast(pos), text, text_end, wrap_width); -} -pub inline fn renderTextEllipsis(draw_list: [*c]DrawList, pos_min: Vec2, pos_max: Vec2, clip_max_x: f32, ellipsis_max_x: f32, text: [*c]const u8, text_end: [*c]const u8, text_size_if_known: [*c]const Vec2) void { //igRenderTextEllipsis - c.igRenderTextEllipsis(draw_list, @bitCast(pos_min), @bitCast(pos_max), clip_max_x, ellipsis_max_x, text, text_end, text_size_if_known); -} -pub inline fn renderFrame(p_min: Vec2, p_max: Vec2, fill_col: U32, border: bool, rounding: f32) void { //igRenderFrame - c.igRenderFrame(@bitCast(p_min), @bitCast(p_max), fill_col, border, rounding); -} -pub inline fn renderFrameBorder(p_min: Vec2, p_max: Vec2, rounding: f32) void { //igRenderFrameBorder - c.igRenderFrameBorder(@bitCast(p_min), @bitCast(p_max), rounding); -} -pub inline fn renderColorRectWithAlphaCheckerboard(draw_list: [*c]DrawList, p_min: Vec2, p_max: Vec2, fill_col: U32, grid_step: f32, grid_off: Vec2, rounding: f32, flags: DrawFlags) void { //igRenderColorRectWithAlphaCheckerboard - c.igRenderColorRectWithAlphaCheckerboard(draw_list, @bitCast(p_min), @bitCast(p_max), fill_col, grid_step, @bitCast(grid_off), rounding, @bitCast(flags)); -} -pub inline fn renderNavHighlight(bb: Rect, id: ID, flags: NavHighlightFlags) void { //igRenderNavHighlight - c.igRenderNavHighlight(@bitCast(bb), id, @bitCast(flags)); -} -pub inline fn findRenderedTextEnd(text: [*c]const u8, text_end: [*c]const u8) [*c]const u8 { //igFindRenderedTextEnd - return c.igFindRenderedTextEnd(text, text_end); -} -pub inline fn renderMouseCursor(pos: Vec2, scale: f32, mouse_cursor: MouseCursor, col_fill: U32, col_border: U32, col_shadow: U32) void { //igRenderMouseCursor - c.igRenderMouseCursor(@bitCast(pos), scale, @intFromEnum(mouse_cursor), col_fill, col_border, col_shadow); -} -pub inline fn renderArrow(draw_list: [*c]DrawList, pos: Vec2, col: U32, dir: Dir, scale: f32) void { //igRenderArrow - c.igRenderArrow(draw_list, @bitCast(pos), col, @intFromEnum(dir), scale); -} -pub inline fn renderBullet(draw_list: [*c]DrawList, pos: Vec2, col: U32) void { //igRenderBullet - c.igRenderBullet(draw_list, @bitCast(pos), col); -} -pub inline fn renderCheckMark(draw_list: [*c]DrawList, pos: Vec2, col: U32, sz: f32) void { //igRenderCheckMark - c.igRenderCheckMark(draw_list, @bitCast(pos), col, sz); -} -pub inline fn renderArrowPointingAt(draw_list: [*c]DrawList, pos: Vec2, half_sz: Vec2, direction: Dir, col: U32) void { //igRenderArrowPointingAt - c.igRenderArrowPointingAt(draw_list, @bitCast(pos), @bitCast(half_sz), @intFromEnum(direction), col); -} -pub inline fn renderArrowDockMenu(draw_list: [*c]DrawList, p_min: Vec2, sz: f32, col: U32) void { //igRenderArrowDockMenu - c.igRenderArrowDockMenu(draw_list, @bitCast(p_min), sz, col); -} -pub inline fn renderRectFilledRangeH(draw_list: [*c]DrawList, rect: Rect, col: U32, x_start_norm: f32, x_end_norm: f32, rounding: f32) void { //igRenderRectFilledRangeH - c.igRenderRectFilledRangeH(draw_list, @bitCast(rect), col, x_start_norm, x_end_norm, rounding); -} -pub inline fn renderRectFilledWithHole(draw_list: [*c]DrawList, outer: Rect, inner: Rect, col: U32, rounding: f32) void { //igRenderRectFilledWithHole - c.igRenderRectFilledWithHole(draw_list, @bitCast(outer), @bitCast(inner), col, rounding); -} -pub inline fn calcRoundingFlagsForRectInRect(r_in: Rect, r_outer: Rect, threshold: f32) DrawFlags { //igCalcRoundingFlagsForRectInRect - return c.igCalcRoundingFlagsForRectInRect(@bitCast(r_in), @bitCast(r_outer), threshold); -} -pub inline fn textEx(text: [*c]const u8, text_end: [*c]const u8, flags: TextFlags) void { //igTextEx - c.igTextEx(text, text_end, @bitCast(flags)); -} -pub inline fn buttonEx(label: [*c]const u8, size_arg: Vec2, flags: ButtonFlags) bool { //igButtonEx - return c.igButtonEx(label, @bitCast(size_arg), flags); -} -pub inline fn closeButton(id: ID, pos: Vec2) bool { //igCloseButton - return c.igCloseButton(id, @bitCast(pos)); -} -pub inline fn collapseButton(id: ID, pos: Vec2, dock_node: [*c]DockNode) bool { //igCollapseButton - return c.igCollapseButton(id, @bitCast(pos), dock_node); -} -pub inline fn arrowButtonEx(str_id: [*c]const u8, dir: Dir, size_arg: Vec2, flags: ButtonFlags) bool { //igArrowButtonEx - return c.igArrowButtonEx(str_id, @intFromEnum(dir), @bitCast(size_arg), flags); -} -pub inline fn scrollbar(axis: Axis) void { //igScrollbar - c.igScrollbar(@intFromEnum(axis)); -} -pub inline fn scrollbarEx(bb: Rect, id: ID, axis: Axis, p_scroll_v: [*c]S64, avail_v: S64, contents_v: S64, flags: DrawFlags) bool { //igScrollbarEx - return c.igScrollbarEx(@bitCast(bb), id, @intFromEnum(axis), p_scroll_v, avail_v, contents_v, @bitCast(flags)); -} -pub inline fn imageButtonEx(id: ID, texture_id: TextureID, size: Vec2, uv0: Vec2, uv1: Vec2, padding: Vec2, bg_col: Vec4, tint_col: Vec4) bool { //igImageButtonEx - return c.igImageButtonEx(id, texture_id, @bitCast(size), @bitCast(uv0), @bitCast(uv1), @bitCast(padding), @bitCast(bg_col), @bitCast(tint_col)); -} -pub inline fn getWindowScrollbarRect(pout: [*c]Rect, window: [*c]Window, axis: Axis) void { //igGetWindowScrollbarRect - c.igGetWindowScrollbarRect(pout, window, @intFromEnum(axis)); -} -pub inline fn getWindowScrollbarID(window: [*c]Window, axis: Axis) ID { //igGetWindowScrollbarID - return c.igGetWindowScrollbarID(window, @intFromEnum(axis)); -} -pub inline fn getWindowResizeCornerID(window: [*c]Window, n: c_int) ID { //igGetWindowResizeCornerID - return c.igGetWindowResizeCornerID(window, n); -} -pub inline fn getWindowResizeBorderID(window: [*c]Window, dir: Dir) ID { //igGetWindowResizeBorderID - return c.igGetWindowResizeBorderID(window, @intFromEnum(dir)); -} -pub inline fn separatorEx(flags: SeparatorFlags) void { //igSeparatorEx - c.igSeparatorEx(@bitCast(flags)); -} -pub inline fn checkboxFlags_S64Ptr(label: [*c]const u8, flags: [*c]S64, flags_value: S64) bool { //igCheckboxFlags_S64Ptr - return c.igCheckboxFlags_S64Ptr(label, flags, flags_value); -} -pub inline fn checkboxFlags_U64Ptr(label: [*c]const u8, flags: [*c]U64, flags_value: U64) bool { //igCheckboxFlags_U64Ptr - return c.igCheckboxFlags_U64Ptr(label, flags, flags_value); -} -pub inline fn buttonBehavior(bb: Rect, id: ID, out_hovered: [*c]bool, out_held: [*c]bool, flags: ButtonFlags) bool { //igButtonBehavior - return c.igButtonBehavior(@bitCast(bb), id, out_hovered, out_held, flags); -} -pub inline fn dragBehavior(id: ID, data_type: DataType, p_v: ?*anyopaque, v_speed: f32, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igDragBehavior - return c.igDragBehavior(id, @intFromEnum(data_type), p_v, v_speed, p_min, p_max, format, @bitCast(flags)); -} -pub inline fn sliderBehavior(bb: Rect, id: ID, data_type: DataType, p_v: ?*anyopaque, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags, out_grab_bb: [*c]Rect) bool { //igSliderBehavior - return c.igSliderBehavior(@bitCast(bb), id, @intFromEnum(data_type), p_v, p_min, p_max, format, @bitCast(flags), out_grab_bb); -} -pub inline fn splitterBehavior(bb: Rect, id: ID, axis: Axis, size1: [*c]f32, size2: [*c]f32, min_size1: f32, min_size2: f32, hover_extend: f32, hover_visibility_delay: f32, bg_col: U32) bool { //igSplitterBehavior - return c.igSplitterBehavior(@bitCast(bb), id, @intFromEnum(axis), size1, size2, min_size1, min_size2, hover_extend, hover_visibility_delay, bg_col); -} -pub inline fn treeNodeBehavior(id: ID, flags: TreeNodeFlags, label: [*c]const u8, label_end: [*c]const u8) bool { //igTreeNodeBehavior - return c.igTreeNodeBehavior(id, @bitCast(flags), label, label_end); -} -pub inline fn treeNodeBehaviorIsOpen(id: ID, flags: TreeNodeFlags) bool { //igTreeNodeBehaviorIsOpen - return c.igTreeNodeBehaviorIsOpen(id, @bitCast(flags)); -} -pub inline fn treePushOverrideID(id: ID) void { //igTreePushOverrideID - c.igTreePushOverrideID(id); -} -pub inline fn dataTypeGetInfo(data_type: DataType) [*c]const DataTypeInfo { //igDataTypeGetInfo - return c.igDataTypeGetInfo(@intFromEnum(data_type)); -} -pub inline fn dataTypeFormatString(buf: [*c]u8, buf_size: c_int, data_type: DataType, p_data: [*c]const void, format: [*c]const u8) c_int { //igDataTypeFormatString - return c.igDataTypeFormatString(buf, buf_size, @intFromEnum(data_type), p_data, format); -} -pub inline fn dataTypeApplyOp(data_type: DataType, op: c_int, output: ?*anyopaque, arg_1: [*c]const void, arg_2: [*c]const void) void { //igDataTypeApplyOp - c.igDataTypeApplyOp(@intFromEnum(data_type), op, output, arg_1, arg_2); -} -pub inline fn dataTypeApplyFromText(buf: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, format: [*c]const u8) bool { //igDataTypeApplyFromText - return c.igDataTypeApplyFromText(buf, @intFromEnum(data_type), p_data, format); -} -pub inline fn dataTypeCompare(data_type: DataType, arg_1: [*c]const void, arg_2: [*c]const void) c_int { //igDataTypeCompare - return c.igDataTypeCompare(@intFromEnum(data_type), arg_1, arg_2); -} -pub inline fn dataTypeClamp(data_type: DataType, p_data: ?*anyopaque, p_min: [*c]const void, p_max: [*c]const void) bool { //igDataTypeClamp - return c.igDataTypeClamp(@intFromEnum(data_type), p_data, p_min, p_max); -} -pub inline fn inputTextEx(label: [*c]const u8, hint: [*c]const u8, buf: [*c]u8, buf_size: c_int, size_arg: Vec2, flags: InputTextFlags, callback: InputTextCallback, user_data: ?*anyopaque) bool { //igInputTextEx - return c.igInputTextEx(label, hint, buf, buf_size, @bitCast(size_arg), @bitCast(flags), callback, user_data); -} -pub inline fn tempInputText(bb: Rect, id: ID, label: [*c]const u8, buf: [*c]u8, buf_size: c_int, flags: InputTextFlags) bool { //igTempInputText - return c.igTempInputText(@bitCast(bb), id, label, buf, buf_size, @bitCast(flags)); -} -pub inline fn tempInputScalar(bb: Rect, id: ID, label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, format: [*c]const u8, p_clamp_min: [*c]const void, p_clamp_max: [*c]const void) bool { //igTempInputScalar - return c.igTempInputScalar(@bitCast(bb), id, label, @intFromEnum(data_type), p_data, format, p_clamp_min, p_clamp_max); -} -pub inline fn tempInputIsActive(id: ID) bool { //igTempInputIsActive - return c.igTempInputIsActive(id); -} -pub inline fn getInputTextState(id: ID) [*c]InputTextState { //igGetInputTextState - return c.igGetInputTextState(id); -} -pub inline fn colorTooltip(text: [*c]const u8, col: [*c]const f32, flags: ColorEditFlags) void { //igColorTooltip - c.igColorTooltip(text, col, @bitCast(flags)); -} -pub inline fn colorEditOptionsPopup(col: [*c]const f32, flags: ColorEditFlags) void { //igColorEditOptionsPopup - c.igColorEditOptionsPopup(col, @bitCast(flags)); -} -pub inline fn colorPickerOptionsPopup(ref_col: [*c]const f32, flags: ColorEditFlags) void { //igColorPickerOptionsPopup - c.igColorPickerOptionsPopup(ref_col, @bitCast(flags)); -} -pub inline fn shadeVertsLinearColorGradientKeepAlpha(draw_list: [*c]DrawList, vert_start_idx: c_int, vert_end_idx: c_int, gradient_p0: Vec2, gradient_p1: Vec2, col0: U32, col1: U32) void { //igShadeVertsLinearColorGradientKeepAlpha - c.igShadeVertsLinearColorGradientKeepAlpha(draw_list, vert_start_idx, vert_end_idx, @bitCast(gradient_p0), @bitCast(gradient_p1), col0, col1); -} -pub inline fn shadeVertsLinearUV(draw_list: [*c]DrawList, vert_start_idx: c_int, vert_end_idx: c_int, a: Vec2, b: Vec2, uv_a: Vec2, uv_b: Vec2, clamp: bool) void { //igShadeVertsLinearUV - c.igShadeVertsLinearUV(draw_list, vert_start_idx, vert_end_idx, @bitCast(a), @bitCast(b), @bitCast(uv_a), @bitCast(uv_b), clamp); -} -pub inline fn gcCompactTransientMiscBuffers() void { //igGcCompactTransientMiscBuffers - c.igGcCompactTransientMiscBuffers(); -} -pub inline fn gcCompactTransientWindowBuffers(window: [*c]Window) void { //igGcCompactTransientWindowBuffers - c.igGcCompactTransientWindowBuffers(window); -} -pub inline fn gcAwakeTransientWindowBuffers(window: [*c]Window) void { //igGcAwakeTransientWindowBuffers - c.igGcAwakeTransientWindowBuffers(window); -} -pub inline fn errorCheckEndFrameRecover(log_callback: ErrorLogCallback, user_data: ?*anyopaque) void { //igErrorCheckEndFrameRecover - c.igErrorCheckEndFrameRecover(log_callback, user_data); -} -pub inline fn errorCheckEndWindowRecover(log_callback: ErrorLogCallback, user_data: ?*anyopaque) void { //igErrorCheckEndWindowRecover - c.igErrorCheckEndWindowRecover(log_callback, user_data); -} -pub inline fn debugDrawItemRect(col: U32) void { //igDebugDrawItemRect - c.igDebugDrawItemRect(col); -} -pub inline fn debugStartItemPicker() void { //igDebugStartItemPicker - c.igDebugStartItemPicker(); -} -pub inline fn showFontAtlas(atlas: [*c]FontAtlas) void { //igShowFontAtlas - c.igShowFontAtlas(atlas); -} -pub inline fn debugHookIdInfo(id: ID, data_type: DataType, data_id: [*c]const void, data_id_end: [*c]const void) void { //igDebugHookIdInfo - c.igDebugHookIdInfo(id, @intFromEnum(data_type), data_id, data_id_end); -} -pub inline fn debugNodeColumns(cols: [*c]OldColumns) void { //igDebugNodeColumns - c.igDebugNodeColumns(cols); -} -pub inline fn debugNodeDockNode(node: [*c]DockNode, label: [*c]const u8) void { //igDebugNodeDockNode - c.igDebugNodeDockNode(node, label); -} -pub inline fn debugNodeDrawList(window: [*c]Window, viewport: [*c]ViewportP, draw_list: [*c]const DrawList, label: [*c]const u8) void { //igDebugNodeDrawList - c.igDebugNodeDrawList(window, viewport, draw_list, label); -} -pub inline fn debugNodeDrawCmdShowMeshAndBoundingBox(out_draw_list: [*c]DrawList, draw_list: [*c]const DrawList, draw_cmd: [*c]const DrawCmd, show_mesh: bool, show_aabb: bool) void { //igDebugNodeDrawCmdShowMeshAndBoundingBox - c.igDebugNodeDrawCmdShowMeshAndBoundingBox(out_draw_list, draw_list, draw_cmd, show_mesh, show_aabb); -} -pub inline fn debugNodeFont(font: [*c]Font) void { //igDebugNodeFont - c.igDebugNodeFont(font); -} -pub inline fn debugNodeFontGlyph(font: [*c]Font, glyph: [*c]const FontGlyph) void { //igDebugNodeFontGlyph - c.igDebugNodeFontGlyph(font, glyph); -} -pub inline fn debugNodeStorage(storage: [*c]Storage, label: [*c]const u8) void { //igDebugNodeStorage - c.igDebugNodeStorage(storage, label); -} -pub inline fn debugNodeTabBar(tab_bar: [*c]TabBar, label: [*c]const u8) void { //igDebugNodeTabBar - c.igDebugNodeTabBar(tab_bar, label); -} -pub inline fn debugNodeTable(table: [*c]Table) void { //igDebugNodeTable - c.igDebugNodeTable(table); -} -pub inline fn debugNodeTableSettings(settings: [*c]TableSettings) void { //igDebugNodeTableSettings - c.igDebugNodeTableSettings(settings); -} -pub inline fn debugNodeInputTextState(state: [*c]InputTextState) void { //igDebugNodeInputTextState - c.igDebugNodeInputTextState(state); -} -pub inline fn debugNodeWindow(window: [*c]Window, label: [*c]const u8) void { //igDebugNodeWindow - c.igDebugNodeWindow(window, label); -} -pub inline fn debugNodeWindowSettings(settings: [*c]WindowSettings) void { //igDebugNodeWindowSettings - c.igDebugNodeWindowSettings(settings); -} -pub inline fn debugNodeWindowsList(windows: [*c]WindowPtrVector, label: [*c]const u8) void { //igDebugNodeWindowsList - c.igDebugNodeWindowsList(windows, label); -} -pub inline fn debugNodeWindowsListByBeginStackParent(windows: [*c]Window, windows_size: c_int, parent_in_begin_stack: [*c]Window) void { //igDebugNodeWindowsListByBeginStackParent - c.igDebugNodeWindowsListByBeginStackParent(windows, windows_size, parent_in_begin_stack); -} -pub inline fn debugNodeViewport(viewport: [*c]ViewportP) void { //igDebugNodeViewport - c.igDebugNodeViewport(viewport); -} -pub inline fn debugRenderViewportThumbnail(draw_list: [*c]DrawList, viewport: [*c]ViewportP, bb: Rect) void { //igDebugRenderViewportThumbnail - c.igDebugRenderViewportThumbnail(draw_list, viewport, @bitCast(bb)); -} -pub inline fn imFontAtlasGetBuilderForStbTruetype() [*c]const FontBuilderIO { //igImFontAtlasGetBuilderForStbTruetype - return c.igImFontAtlasGetBuilderForStbTruetype(); -} -pub inline fn imFontAtlasBuildInit(atlas: [*c]FontAtlas) void { //igImFontAtlasBuildInit - c.igImFontAtlasBuildInit(atlas); -} -pub inline fn imFontAtlasBuildSetupFont(atlas: [*c]FontAtlas, font: [*c]Font, font_config: [*c]FontConfig, ascent: f32, descent: f32) void { //igImFontAtlasBuildSetupFont - c.igImFontAtlasBuildSetupFont(atlas, font, font_config, ascent, descent); -} -pub inline fn imFontAtlasBuildPackCustomRects(atlas: [*c]FontAtlas, stbrp_context_opaque: ?*anyopaque) void { //igImFontAtlasBuildPackCustomRects - c.igImFontAtlasBuildPackCustomRects(atlas, stbrp_context_opaque); -} -pub inline fn imFontAtlasBuildFinish(atlas: [*c]FontAtlas) void { //igImFontAtlasBuildFinish - c.igImFontAtlasBuildFinish(atlas); -} -pub inline fn imFontAtlasBuildRender8bppRectFromString(atlas: [*c]FontAtlas, x: c_int, y: c_int, w: c_int, h: c_int, in_str: [*c]const u8, in_marker_char: u8, in_marker_pixel_value: u8) void { //igImFontAtlasBuildRender8bppRectFromString - c.igImFontAtlasBuildRender8bppRectFromString(atlas, x, y, w, h, in_str, in_marker_char, in_marker_pixel_value); -} -pub inline fn imFontAtlasBuildRender32bppRectFromString(atlas: [*c]FontAtlas, x: c_int, y: c_int, w: c_int, h: c_int, in_str: [*c]const u8, in_marker_char: u8, in_marker_pixel_value: c_uint) void { //igImFontAtlasBuildRender32bppRectFromString - c.igImFontAtlasBuildRender32bppRectFromString(atlas, x, y, w, h, in_str, in_marker_char, in_marker_pixel_value); -} - -// TODO structs with bitfields... -// for the time being this shall be just an opaque pointer -pub const DockRequest = opaque {}; -pub const Table = opaque {}; -pub const StackLevelInfo = opaque {}; -pub const TableColumnSortSpecs = opaque {}; -pub const DockNode = opaque {}; -pub const TableColumnSettings = opaque {}; -pub const TableColumn = opaque {}; -pub const Window = opaque {}; -pub const FontGlyph = opaque {}; -pub const DockNodeSettings = opaque {}; -pub const StoragePair = opaque {}; - -pub const ErrorLogCallback = *const fn (?*anyopaque, [*c]const u8) callconv(.C) void; -pub const DrawCallback = *const fn ([*c]const DrawList, [*c]const DrawCmd) callconv(.C) void; - -// TODO file handles? typedef FILE* ImFileHandle; -pub const FileHandle = std.fs.File; - -var textFmtBuffer: [1024]u8 = undefined; - -pub inline fn textSlice(buf: []const u8) void { - textUnformatted(@ptrCast(buf.ptr), buf.ptr + buf.len); -} - -pub inline fn textFmt(comptime fmt: []const u8, args: anytype) !void { - const buffer = try std.fmt.bufPrint(&textFmtBuffer, fmt, args); - textUnformatted(@ptrCast(buffer.ptr), buffer.ptr + buffer.len); -} - -// pub inline fn textV(fmt: [*c]const u8, args: list) void { //igTextV -// c.igTextV(fmt, args); -// } -// pub inline fn textColoredV(col: Vec4, fmt: [*c]const u8, args: list) void { //igTextColoredV -// c.igTextColoredV(@bitCast(col), fmt, args); -// } -// pub inline fn textDisabledV(fmt: [*c]const u8, args: list) void { //igTextDisabledV -// c.igTextDisabledV(fmt, args); -// } -// pub inline fn textWrappedV(fmt: [*c]const u8, args: list) void { //igTextWrappedV -// c.igTextWrappedV(fmt, args); -// } -// pub inline fn labelTextV(label: [*c]const u8, fmt: [*c]const u8, args: list) void { //igLabelTextV -// c.igLabelTextV(label, fmt, args); -// } -// pub inline fn bulletTextV(fmt: [*c]const u8, args: list) void { //igBulletTextV -// c.igBulletTextV(fmt, args); -// } -// -// pub inline fn treeNodeV_Str(str_id: [*c]const u8, fmt: [*c]const u8, args: list) bool { //igTreeNodeV_Str -// return c.igTreeNodeV_Str(str_id, fmt, args); -// } -// pub inline fn treeNodeV_Ptr(ptr_id: [*c]const void, fmt: [*c]const u8, args: list) bool { //igTreeNodeV_Ptr -// return c.igTreeNodeV_Ptr(ptr_id, fmt, args); -// } -// -// pub inline fn treeNodeExV_Str(str_id: [*c]const u8, flags: TreeNodeFlags, fmt: [*c]const u8, args: list) bool { //igTreeNodeExV_Str -// return c.igTreeNodeExV_Str(str_id, @bitCast(flags), fmt, args); -// } -// pub inline fn treeNodeExV_Ptr(ptr_id: [*c]const void, flags: TreeNodeFlags, fmt: [*c]const u8, args: list) bool { //igTreeNodeExV_Ptr -// return c.igTreeNodeExV_Ptr(ptr_id, @bitCast(flags), fmt, args); -// } -// -// pub inline fn setTooltipV(fmt: [*c]const u8, args: list) void { //igSetTooltipV -// c.igSetTooltipV(fmt, args); -// } -// -// pub inline fn logTextV(fmt: [*c]const u8, args: list) void { //igLogTextV -// c.igLogTextV(fmt, args); -// } -// -// pub inline fn imFormatStringV(buf: [*c]u8, buf_size: usize, fmt: [*c]const u8, args: list) c_int { //igImFormatStringV -// return c.igImFormatStringV(buf, buf_size, fmt, args); -// } -// pub inline fn imFormatStringToTempBufferV(out_buf: [*c]const u8, out_buf_end: [*c]const u8, fmt: [*c]const u8, args: list) void { //igImFormatStringToTempBufferV -// c.igImFormatStringToTempBufferV(out_buf, out_buf_end, fmt, args); -// } -// -// -// pub inline fn debugLogV(fmt: [*c]const u8, args: list) void { //igDebugLogV -// c.igDebugLogV(fmt, args); -// } - -pub const c = @cImport({ - @cDefine("CIMGUI_DEFINE_ENUMS_AND_STRUCTS", {}); - @cDefine("CIMGUI_USE_GLFW", "1"); // if this needs a reference to glfw3, cleanest thing to do is to copy the glfw3 header here. I suspect it won't need it though. - @cInclude("cimgui.h"); - @cInclude("cimgui_compat.h"); - @cInclude("cimgui_impl.h"); - @cInclude("cimplot.h"); -}); - -test "Imgui Header test" { - const flags = WindowFlags{}; - const flags2 = WindowFlags.no_nav; - std.debug.print("flags = {any}\n{any}\n\n ", .{ flags, flags2 }); - std.debug.print("size of Style = {d}", .{@sizeOf(Style)}); - std.debug.print("size of Io = {d}\n", .{@sizeOf(Io)}); - std.debug.print("size of InputEvent = {d}\n", .{@sizeOf(InputEvent)}); -} +// manually crafted translation for cimgui to zig +const std = @import("std"); + +// ImVector_int == i32 in zig, +pub const ConstCharPtrVector = extern struct { + size: c_int, + capacity: c_int, + data: [*c][*c]const u8, +}; + +pub const CharVector = extern struct { + size: c_int, + capacity: c_int, + data: [*c][*c]u8, +}; + +pub const WcharVector = extern struct { // typedef struct ImVector_ImWchar { + size: c_int, + capacity: c_int, + data: [*c]Wchar, +}; + +const OldColumns = c_int; + +// ImVector typedefs +pub const VectorInt = c_int; // ImVector_Int + +// ImGui typedefs +// pub const Col = c_int; // ImGuiCol +// pub const Cond = c_int; // ImGuiCond +// pub const DataType = c_int; // ImGuiDataType +// pub const Dir = c_int; // ImGuiDir +// pub const Key = c_int; // ImGuiKey +// pub const NavInput = c_int; // ImGuiNavInput +// pub const MouseButton = c_int; // ImGuiMouseButton +// pub const MouseCursor = c_int; // ImGuiMouseCursor +// pub const SortDirection = c_int; // ImGuiSortDirection +// pub const StyleVar = c_int; // ImGuiStyleVar +// pub const TableBgTarget = c_int; // ImGuiTableBgTarget +// pub const BackendFlags = c_int; // ImGuiBackendFlags +// pub const ButtonFlags = c_int; // ImGuiButtonFlags +// pub const ColorEditFlags = c_int; // ImGuiColorEditFlags +// pub const ConfigFlags = c_int; // ImGuiConfigFlags +// pub const ComboFlags = c_int; // ImGuiComboFlags +// pub const DockNodeFlags = c_int; // ImGuiDockNodeFlags +// pub const DragDropFlags = c_int; // ImGuiDragDropFlags +// pub const FocusedFlags = c_int; // ImGuiFocusedFlags +// pub const HoveredFlags = c_int; // ImGuiHoveredFlags +// pub const InputTextFlags = c_int; // ImGuiInputTextFlags +// pub const ModFlags = c_int; // ImGuiModFlags +// pub const PopupFlags = c_int; // ImGuiPopupFlags +// pub const SelectableFlags = c_int; // ImGuiSelectableFlags +// pub const SliderFlags = c_int; // ImGuiSliderFlags +// pub const TabBarFlags = c_int; // ImGuiTabBarFlags +// pub const TabItemFlags = c_int; // ImGuiTabItemFlags +// pub const TableFlags = c_int; // ImGuiTableFlags +// pub const TableColumnFlags = c_int; // ImGuiTableColumnFlags +// pub const TableRowFlags = c_int; // ImGuiTableRowFlags +// pub const TreeNodeFlags = c_int; // ImGuiTreeNodeFlags +// pub const ViewportFlags = c_int; // ImGuiViewportFlags + +// Im typedefs +//pub const DrawFlags = c_int; // ImDrawFlags +// pub const DrawListFlags = c_int; // ImDrawListFlags +// pub const FontAtlasFlags = c_int; // ImFontAtlasFlags +// + +// Base Type Typedefs +pub const TextureID = ?*anyopaque; //ImTextureID; +pub const DrawIdx = c_ushort; //ImDrawIdx; +pub const ID = c_uint; // ImGuiID; +pub const S8 = i8; // ImS8; +pub const U8 = u8; // ImU8; +pub const S16 = c_short; // ImS16; +pub const U16 = c_ushort; // ImU16; +pub const S32 = c_int; // ImS32; +pub const U32 = c_uint; // ImU32; +pub const S64 = c_longlong; // ImS64; +pub const U64 = c_ulonglong; // ImU64; +pub const Wchar = c_ushort; // ImWchar; +pub const Wchar16 = c_ushort; // ImWchar16; +pub const Wchar32 = c_int; // ImWchar32; + +pub const InputTextCallback = *fn (data: *InputTextCallbackData) c_int; // ImGuiInputTextCallback +pub const SizeCallback = *fn (data: *SizeCallbackData) void; // ImGuiInputTextCallback +pub const MemAllocFunc = *fn (sz: usize, user_data: ?*anyopaque) ?*anyopaque; // ImGuiMemAllocFunc +pub const MemFreeFunc = *fn (ptr: ?*anyopaque, user_data: ?*anyopaque) void; // ImMemAllocFunction + +pub const Vec2 = extern struct { // ImVec2 + x: f32 = 0, + y: f32 = 0, +}; + +pub const Vec4 = extern struct { // ImVec4 + x: f32 = 0, + y: f32 = 0, + z: f32 = 0, + w: f32 = 0, +}; + +pub const WindowFlags = packed struct(c_int) { // ImGuiWindowFlags + no_title_bar: bool = false, + no_resize: bool = false, + no_move: bool = false, + no_scrollbar: bool = false, + no_scroll_with_mouse: bool = false, + no_collapse: bool = false, + always_auto_resize: bool = false, + no_background: bool = false, + no_saved_settings: bool = false, + no_mouse_inputs: bool = false, + menu_bar: bool = false, + horizontal_scrollbar: bool = false, + no_focus_on_appearing: bool = false, + no_bring_to_front_on_focus: bool = false, + always_vertical_scrollbar: bool = false, + always_horizontal_scrollbar: bool = false, + always_use_window_padding: bool = false, + no_nav_inputs: bool = false, + no_nav_focus: bool = false, + unsaved_document: bool = false, + no_docking: bool = false, + reserved: u11 = 0, // reserved, don't use + + pub const no_nav: @This() = .{ .no_nav_inputs = true, .no_nav_focus = true }; + pub const no_decoration: @This() = .{ .no_title_bar = true, .no_resize = true, .no_scrollbar = true, .no_collapse = true }; + pub const no_inputs: @This() = .{ .no_mouse_inputs = true, .no_nav_inputs = true, .no_nav_focus = true }; +}; + +pub const InputTextFlags = packed struct(c_int) { // ImGuiInputTextFlags + chars_decimal: bool = false, // ImGuiInputTextFlags_CharsDecimal = 1 << 0 + chars_hexadecimal: bool = false, // ImGuiInputTextFlags_CharsHexadecimal = 1 << 1 + chars_uppercase: bool = false, // ImGuiInputTextFlags_CharsUppercase = 1 << 2 + no_blank: bool = false, // ImGuiInputTextFlags_CharsNoBlank = 1 << 3 + auto_select_all: bool = false, // ImGuiInputTextFlags_AutoSelectAll = 1 << 4 + enter_returns_true: bool = false, // ImGuiInputTextFlags_EnterReturnsTrue = 1 << 5 + callback_completion: bool = false, // ImGuiInputTextFlags_CallbackCompletion = 1 << 6, + callback_history: bool = false, // ImGuiInputTextFlags_CallbackHistory = 1 << 7, + callback_always: bool = false, // ImGuiInputTextFlags_CallbackAlways = 1 << 8, + callback_char_filter: bool = false, // ImGuiInputTextFlags_CallbackCharFilter = 1 << 9, + allow_tab_input: bool = false, // ImGuiInputTextFlags_AllowTabInput = 1 << 10, + ctrl_enter_for_newline: bool = false, // ImGuiInputTextFlags_CtrlEnterForNewLine = 1 << 11, + no_horizontal_scroll: bool = false, // ImGuiInputTextFlags_NoHorizontalScroll = 1 << 12, + always_overwrite: bool = false, // ImGuiInputTextFlags_AlwaysOverwrite = 1 << 13, + read_only: bool = false, // ImGuiInputTextFlags_ReadOnly = 1 << 14, + password: bool = false, // ImGuiInputTextFlags_Password = 1 << 15, + no_undo_redo: bool = false, // ImGuiInputTextFlags_NoUndoRedo = 1 << 16, + chars_scientific: bool = false, // ImGuiInputTextFlags_CharsScientific = 1 << 17, + callback_resize: bool = false, // ImGuiInputTextFlags_CallbackResize = 1 << 18, + callback_edit: bool = false, // ImGuiInputTextFlags_CallbackEdit = 1 << 19 + reserved: u12 = 0, // reserved, don't use +}; + +pub const TreeNodeFlags = packed struct(c_int) { + selected: bool = false, // ImGuiTreeNodeFlags_Selected = 1 << 0, + framed: bool = false, // ImGuiTreeNodeFlags_Framed = 1 << 1, + allow_item_overlap: bool = false, // ImGuiTreeNodeFlags_AllowItemOverlap = 1 << 2, + no_tree_push_on_open: bool = false, // ImGuiTreeNodeFlags_NoTreePushOnOpen = 1 << 3, + no_auto_open_on_log: bool = false, // ImGuiTreeNodeFlags_NoAutoOpenOnLog = 1 << 4, + default_open: bool = false, // ImGuiTreeNodeFlags_DefaultOpen = 1 << 5, + open_on_double_click: bool = false, // ImGuiTreeNodeFlags_OpenOnDoubleClick = 1 << 6, + open_on_arrow: bool = false, // ImGuiTreeNodeFlags_OpenOnArrow = 1 << 7, + leaf: bool = false, // ImGuiTreeNodeFlags_Leaf = 1 << 8, + bullet: bool = false, // ImGuiTreeNodeFlags_Bullet = 1 << 9, + frame_padding: bool = false, // ImGuiTreeNodeFlags_FramePadding = 1 << 10, + span_avail_width: bool = false, // ImGuiTreeNodeFlags_SpanAvailWidth = 1 << 11, + span_full_width: bool = false, // ImGuiTreeNodeFlags_SpanFullWidth = 1 << 12, + nav_left_jumps_back_here: bool = false, // ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 1 << 13, + reserved: u18 = 0, // reserved, don't use + + pub const collapsing_header = .{ .framed = true, .no_tree_push_on_open = true, .no_auto_open_on_log = true }; +}; + +pub const PopupFlags = packed struct(c_int) { + mouse_button_left: bool = false, // ImGuiPopupFlags_MouseButtonLeft = 0, + mouse_button_right: bool = false, // ImGuiPopupFlags_MouseButtonRight = 1, + mouse_button_middle: bool = false, // ImGuiPopupFlags_MouseButtonMiddle = 2, + mouse_button_mask: bool = false, // ImGuiPopupFlags_MouseButtonMask_ = 0x1F, + mouse_button_default: bool = false, // ImGuiPopupFlags_MouseButtonDefault_ = 1, + no_open_over_existing_popup: bool = false, // ImGuiPopupFlags_NoOpenOverExistingPopup = 1 << 5, + no_open_over_items: bool = false, // ImGuiPopupFlags_NoOpenOverItems = 1 << 6, + any_popup_id: bool = false, // ImGuiPopupFlags_AnyPopupId = 1 << 7, + any_popup_level: bool = false, // ImGuiPopupFlags_AnyPopupLevel = 1 << 8, + reserved: u23 = 0, // reserved, don't use + + pub const any_popup = .{ .any_popup_id = true, .any_popup_level = true }; +}; + +pub const SelectableFlags = packed struct(c_int) { + dont_close_popups: bool = false, // ImGuiSelectableFlags_DontClosePopups = 1 << 0, + span_all_columns: bool = false, // ImGuiSelectableFlags_SpanAllColumns = 1 << 1, + allow_double_click: bool = false, // ImGuiSelectableFlags_AllowDoubleClick = 1 << 2, + disabled: bool = false, // ImGuiSelectableFlags_Disabled = 1 << 3, + allow_item_overlap: bool = false, // ImGuiSelectableFlags_AllowItemOverlap = 1 << 4 + reserved: u27 = 0, // reserved, don't use +}; + +pub const ComboFlags = packed struct(c_int) { + popup_align_left: bool = false, // ImGuiComboFlags_PopupAlignLeft = 1 << 0, + height_small: bool = false, // ImGuiComboFlags_HeightSmall = 1 << 1, + height_regular: bool = false, // ImGuiComboFlags_HeightRegular = 1 << 2, + height_large: bool = false, // ImGuiComboFlags_HeightLarge = 1 << 3, + height_largest: bool = false, // ImGuiComboFlags_HeightLargest = 1 << 4, + no_arrow_button: bool = false, // ImGuiComboFlags_NoArrowButton = 1 << 5, + no_preview: bool = false, // ImGuiComboFlags_NoPreview = 1 << 6, + reserved: u25 = 0, // reserved, don't use + + pub const height_mask = .{ .height_small = true, .height_regular = true, .height_large = true, .height_largest = true }; +}; + +pub const TabBarFlags = packed struct(c_int) { + reorderable: bool = false, // ImGuiTabBarFlags_Reorderable = 1 << 0, + auto_select_new_tabs: bool = false, // ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1, + tab_list_popup_button: bool = false, // ImGuiTabBarFlags_TabListPopupButton = 1 << 2, + no_close_with_middle_mouse_button: bool = false, // ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3, + no_tab_list_scrolling_buttons: bool = false, // ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4, + no_tooltip: bool = false, // ImGuiTabBarFlags_NoTooltip = 1 << 5, + fitting_policy_resize_down: bool = false, // ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 6, + fitting_policy_scroll: bool = false, // ImGuiTabBarFlags_FittingPolicyScroll = 1 << 7, + reserved: u24 = 0, // reserved, don't use + + pub const fitting_policy_mask = .{ .fitting_policy_resize_down = true, .fitting_policy_scroll = true }; + pub const fitting_policy_default = .{ .fitting_policy_resize_down = true }; +}; + +pub const TabItemFlags = packed struct(c_int) { + unsaved_document: bool = false, // ImGuiTabItemFlags_UnsavedDocument = 1 << 0, + set_selected: bool = false, // ImGuiTabItemFlags_SetSelected = 1 << 1, + no_close_with_middle_mouse_button: bool = false, // ImGuiTabItemFlags_NoCloseWithMiddleMouseButton = 1 << 2, + no_push_id: bool = false, // ImGuiTabItemFlags_NoPushId = 1 << 3, + no_tooltip: bool = false, // ImGuiTabItemFlags_NoTooltip = 1 << 4, + no_reorder: bool = false, // ImGuiTabItemFlags_NoReorder = 1 << 5, + leading: bool = false, // ImGuiTabItemFlags_Leading = 1 << 6, + trailing: bool = false, // ImGuiTabItemFlags_Trailing = 1 << 7 + reserved: u24 = 0, // reserved, don't use +}; + +pub const TableFlags = packed struct(c_int) { + resizable: bool = false, // ImGuiTableFlags_Resizable = 1 << 0, + reorderable: bool = false, // ImGuiTableFlags_Reorderable = 1 << 1, + hideable: bool = false, // ImGuiTableFlags_Hideable = 1 << 2, + sortable: bool = false, // ImGuiTableFlags_Sortable = 1 << 3, + no_saved_settings: bool = false, // ImGuiTableFlags_NoSavedSettings = 1 << 4, + context_menu_in_body: bool = false, // ImGuiTableFlags_ContextMenuInBody = 1 << 5, + row_bg: bool = false, // ImGuiTableFlags_RowBg = 1 << 6, + borders_inner_h: bool = false, // ImGuiTableFlags_BordersInnerH = 1 << 7, + borders_outer_h: bool = false, // ImGuiTableFlags_BordersOuterH = 1 << 8, + borders_inner_v: bool = false, // ImGuiTableFlags_BordersInnerV = 1 << 9, + borders_outer_v: bool = false, // ImGuiTableFlags_BordersOuterV = 1 << 10, + no_borders_in_body: bool = false, // ImGuiTableFlags_NoBordersInBody = 1 << 11, + no_borders_in_body_until_resize: bool = false, // ImGuiTableFlags_NoBordersInBodyUntilResize = 1 << 12, + sizing_fixed_fit: bool = false, // ImGuiTableFlags_SizingFixedFit = 1 << 13, + sizing_fixed_same: bool = false, // ImGuiTableFlags_SizingFixedSame = 2 << 13, + sizing_stretch_prop: bool = false, // ImGuiTableFlags_SizingStretchProp = 3 << 13, + sizing_stretch_same: bool = false, // ImGuiTableFlags_SizingStretchSame = 4 << 13, + no_host_extend_x: bool = false, // ImGuiTableFlags_NoHostExtendX = 1 << 16, + no_host_extend_y: bool = false, // ImGuiTableFlags_NoHostExtendY = 1 << 17, + no_keep_columns_visible: bool = false, // ImGuiTableFlags_NoKeepColumnsVisible = 1 << 18, + precise_widths: bool = false, // ImGuiTableFlags_PreciseWidths = 1 << 19, + no_clip: bool = false, // ImGuiTableFlags_NoClip = 1 << 20, + pad_outer_x: bool = false, // ImGuiTableFlags_PadOuterX = 1 << 21, + no_pad_outer_x: bool = false, // ImGuiTableFlags_NoPadOuterX = 1 << 22, + no_pad_inner_x: bool = false, // ImGuiTableFlags_NoPadInnerX = 1 << 23, + scroll_x: bool = false, // ImGuiTableFlags_ScrollX = 1 << 24, + scroll_y: bool = false, // ImGuiTableFlags_ScrollY = 1 << 25, + sort_multi: bool = false, // ImGuiTableFlags_SortMulti = 1 << 26, + sort_tristate: bool = false, // ImGuiTableFlags_SortTristate = 1 << 27, + reserved: u4 = 0, + + pub const borders_h = .{ .borders_inner_h = true, .borders_outer_h = true }; + pub const borders_v = .{ .borders_inner_v = true, .borders_outer_v = true }; + pub const borders_inner = .{ .borders_inner_v = true, .borders_inner_h = true }; + pub const borders_outer = .{ .borders_outer_v = true, .borders_outer_h = true }; + pub const borders = .{ .borders_inner = true, .borders_outer = true }; + pub const sizing_mask = .{ .sizing_fixed_fit = true, .sizing_fixed_same = true, .sizing_stretch_prop = true, .sizing_stretch_same = true }; +}; + +pub const TableColumnFlags = packed struct(c_int) { + disabled: bool = false, // ImGuiTableColumnFlags_Disabled = 1 << 0, + default_hide: bool = false, // ImGuiTableColumnFlags_DefaultHide = 1 << 1, + default_sort: bool = false, // ImGuiTableColumnFlags_DefaultSort = 1 << 2, + width_stretch: bool = false, // ImGuiTableColumnFlags_WidthStretch = 1 << 3, + width_fixed: bool = false, // ImGuiTableColumnFlags_WidthFixed = 1 << 4, + no_resize: bool = false, // ImGuiTableColumnFlags_NoResize = 1 << 5, + no_reorder: bool = false, // ImGuiTableColumnFlags_NoReorder = 1 << 6, + no_hide: bool = false, // ImGuiTableColumnFlags_NoHide = 1 << 7, + no_clip: bool = false, // ImGuiTableColumnFlags_NoClip = 1 << 8, + no_sort: bool = false, // ImGuiTableColumnFlags_NoSort = 1 << 9, + no_sort_ascending: bool = false, // ImGuiTableColumnFlags_NoSortAscending = 1 << 10, + no_sort_descending: bool = false, // ImGuiTableColumnFlags_NoSortDescending = 1 << 11, + no_header_label: bool = false, // ImGuiTableColumnFlags_NoHeaderLabel = 1 << 12, + no_header_width: bool = false, // ImGuiTableColumnFlags_NoHeaderWidth = 1 << 13, + prefer_sort_ascending: bool = false, // ImGuiTableColumnFlags_PreferSortAscending = 1 << 14, + prefer_sort_descending: bool = false, // ImGuiTableColumnFlags_PreferSortDescending = 1 << 15, + indent_enable: bool = false, // ImGuiTableColumnFlags_IndentEnable = 1 << 16, + indent_disable: bool = false, // ImGuiTableColumnFlags_IndentDisable = 1 << 17, + is_enabled: bool = false, // ImGuiTableColumnFlags_IsEnabled = 1 << 24, + is_visible: bool = false, // ImGuiTableColumnFlags_IsVisible = 1 << 25, + is_sorted: bool = false, // ImGuiTableColumnFlags_IsSorted = 1 << 26, + is_hovered: bool = false, // ImGuiTableColumnFlags_IsHovered = 1 << 27, + no_direct_resize: bool = false, // ImGuiTableColumnFlags_NoDirectResize_ = 1 << 30 + reserved: u2 = 0, + + pub const width_mask = .{ .width_stretch = true, .width_fixed = true }; + pub const indent_mask = .{ .indent_enable = true, .indent_disable = true }; + pub const status_mask = .{ .is_enabled = true, .is_visible = true, .is_sorted = true, .is_hovered = true }; +}; + +pub const TableRowFlags = packed struct(c_int) { + headers: bool = false, // ImGuiTableRowFlags_Headers = 1 << 0 + reserved: u31 = 0, +}; + +pub const TableBgTarget = packed struct(c_int) { + row_bg0: bool = false, // ImGuiTableBgTarget_RowBg0 = 1, + row_bg1: bool = false, // ImGuiTableBgTarget_RowBg1 = 2, + cell_bg: bool = false, // ImGuiTableBgTarget_CellBg = 3 + reserved: u29 = 0, // reserved, don't use +}; +pub const FocusedFlags = packed struct(c_int) { + child_windows: bool = false, // ImGuiFocusedFlags_ChildWindows = 1 << 0, + root_window: bool = false, // ImGuiFocusedFlags_RootWindow = 1 << 1, + any_window: bool = false, // ImGuiFocusedFlags_AnyWindow = 1 << 2, + no_popup_hierarchy: bool = false, // ImGuiFocusedFlags_NoPopupHierarchy = 1 << 3, + dock_hierarchy: bool = false, // ImGuiFocusedFlags_DockHierarchy = 1 << 4, + reserved: u27 = 0, // reserved, don't use + + pub const root_and_child_windows = .{ .root_window = true, .child_windows = true }; +}; +pub const HoveredFlags = packed struct(c_int) { + child_windows: bool = false, // ImGuiHoveredFlags_ChildWindows = 1 << 0, + root_window: bool = false, // ImGuiHoveredFlags_RootWindow = 1 << 1, + any_window: bool = false, // ImGuiHoveredFlags_AnyWindow = 1 << 2, + no_popup_hierarchy: bool = false, // ImGuiHoveredFlags_NoPopupHierarchy = 1 << 3, + dock_hierarchy: bool = false, // ImGuiHoveredFlags_DockHierarchy = 1 << 4, + allow_when_blocked_by_popup: bool = false, // ImGuiHoveredFlags_AllowWhenBlockedByPopup = 1 << 5, + allow_when_blocked_by_active_item: bool = false, // ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = 1 << 7, + allow_when_overlapped: bool = false, // ImGuiHoveredFlags_AllowWhenOverlapped = 1 << 8, + allow_when_disabled: bool = false, // ImGuiHoveredFlags_AllowWhenDisabled = 1 << 9, + no_nav_override: bool = false, // ImGuiHoveredFlags_NoNavOverride = 1 << 10, + reserved: u22 = 0, // reserved, don't use + + pub const rect_only = .{ .allow_when_blocked_by_popup = true, .allow_when_blocked_by_active_item = true, .allow_when_overlapped = true }; + pub const root_and_child_windows = .{ .root_window = true, .child_windows = true }; +}; +pub const DockNodeFlags = packed struct(c_int) { + keep_alive_only: bool = false, // ImGuiDockNodeFlags_KeepAliveOnly = 1 << 0, + no_docking_in_central_node: bool = false, // ImGuiDockNodeFlags_NoDockingInCentralNode = 1 << 2, + passthru_central_node: bool = false, // ImGuiDockNodeFlags_PassthruCentralNode = 1 << 3, + no_split: bool = false, // ImGuiDockNodeFlags_NoSplit = 1 << 4, + no_resize: bool = false, // ImGuiDockNodeFlags_NoResize = 1 << 5, + auto_hide_tab_bar: bool = false, // ImGuiDockNodeFlags_AutoHideTabBar = 1 << 6 + reserved: u26 = 0, // reserved, don't use +}; +pub const DragDropFlags = packed struct(c_int) { + source_no_preview_tooltip: bool = false, // ImGuiDragDropFlags_SourceNoPreviewTooltip = 1 << 0, + source_no_disable_hover: bool = false, // ImGuiDragDropFlags_SourceNoDisableHover = 1 << 1, + source_no_hold_to_open_others: bool = false, // ImGuiDragDropFlags_SourceNoHoldToOpenOthers = 1 << 2, + source_allow_null_i_d: bool = false, // ImGuiDragDropFlags_SourceAllowNullID = 1 << 3, + source_extern: bool = false, // ImGuiDragDropFlags_SourceExtern = 1 << 4, + source_auto_expire_payload: bool = false, // ImGuiDragDropFlags_SourceAutoExpirePayload = 1 << 5, + accept_before_delivery: bool = false, // ImGuiDragDropFlags_AcceptBeforeDelivery = 1 << 10, + accept_no_draw_default_rect: bool = false, // ImGuiDragDropFlags_AcceptNoDrawDefaultRect = 1 << 11, + accept_no_preview_tooltip: bool = false, // ImGuiDragDropFlags_AcceptNoPreviewTooltip = 1 << 12, + reserved: u23 = 0, // reserved, don't use + + pub const accept_peek_only = .{ .accept_before_delivery = true, .accept_no_draw_default_rect = true }; +}; + +// this is the only one that breaks naming schemes to keep it consistent +pub const DataType = enum(c_int) { + S8, + U8, + S16, + U16, + S32, + U32, + S64, + U64, + Float, + Double, + COUNT, + _, +}; + +pub const DataTypePrivate = enum(c_int) { + String = DataType.COUNT, + Pointer, + ID, + _, +}; + +pub const Dir = enum(c_int) { + none = -1, + left = 0, + right = 1, + up = 2, + down = 3, + _, +}; +pub const SortDirection = enum(c_int) { + none = 0, + ascending = 1, + descending = 2, + _, +}; + +pub const Key = enum(c_int) { + None = 0, + Tab = 512, + LeftArrow, + RightArrow, + UpArrow, + DownArrow, + PageUp, + PageDown, + Home, + End, + Insert, + Delete, + Backspace, + Space, + Enter, + Escape, + LeftCtrl, + LeftShift, + LeftAlt, + LeftSuper, + RightCtrl, + RightShift, + RightAlt, + RightSuper, + Menu, + @"0", + @"1", + @"2", + @"3", + @"4", + @"5", + @"6", + @"7", + @"8", + @"9", + A, + B, + C, + D, + E, + F, + G, + H, + I, + J, + K, + L, + M, + N, + O, + P, + Q, + R, + S, + T, + U, + V, + W, + X, + Y, + Z, + F1, + F2, + F3, + F4, + F5, + F6, + F7, + F8, + F9, + F10, + F11, + F12, + Apostrophe, + Comma, + Minus, + Period, + Slash, + Semicolon, + Equal, + LeftBracket, + Backslash, + RightBracket, + GraveAccent, + CapsLock, + ScrollLock, + NumLock, + PrintScreen, + Pause, + Keypad0, + Keypad1, + Keypad2, + Keypad3, + Keypad4, + Keypad5, + Keypad6, + Keypad7, + Keypad8, + Keypad9, + KeypadDecimal, + KeypadDivide, + KeypadMultiply, + KeypadSubtract, + KeypadAdd, + KeypadEnter, + KeypadEqual, + GamepadStart, + GamepadBack, + GamepadFaceUp, + GamepadFaceDown, + GamepadFaceLeft, + GamepadFaceRight, + GamepadDpadUp, + GamepadDpadDown, + GamepadDpadLeft, + GamepadDpadRight, + GamepadL1, + GamepadR1, + GamepadL2, + GamepadR2, + GamepadL3, + GamepadR3, + GamepadLStickUp, + GamepadLStickDown, + GamepadLStickLeft, + GamepadLStickRight, + GamepadRStickUp, + GamepadRStickDown, + GamepadRStickLeft, + GamepadRStickRight, + ModCtrl, + ModShift, + ModAlt, + ModSuper, + COUNT, + _, + // todo: figure this out. + // NamedKey_BEGIN = 512, + // NamedKey_END = Key.COUNT, + // NamedKey_COUNT = Key.NamedKey_END - Key.NamedKey_BEGIN, + // KeysData_SIZE = Key.COUNT, + // KeysData_OFFSET = 0, +}; + +pub const NamedKeyCOUNT = Key.COUNT - 512; + +pub const KeyPrivate = enum(c_int) { + LegacyNative_BEGIN = 0, + LegacyNative_END = 512, + ImGuiKey_Gamepad_BEGIN = Key.GamepadStart, + ImGuiKey_Gamepad_END = Key.GamepadRStickRight + 1, +}; + +pub const InputEventType = enum(c_int) { + None = 0, + MousePos, + MouseWheel, + MouseButton, + MouseViewport, + Key, + Text, + Focus, + COUNT, + _, +}; + +pub const InputSource = enum(c_int) { + None = 0, + Mouse, + Keyboard, + Gamepad, + Clipboard, + Nav, + COUNT, + _, +}; + +pub const NavReadMode = enum(c_int) { + Down, + Pressed, + Released, + Repeat, + RepeatSlow, + RepeatFast, + _, +}; + +pub const ModFlags = packed struct(c_int) { + ctrl: bool = false, // ImGuiModFlags_Ctrl = 1 << 0, + shift: bool = false, // ImGuiModFlags_Shift = 1 << 1, + alt: bool = false, // ImGuiModFlags_Alt = 1 << 2, + super: bool = false, // ImGuiModFlags_Super = 1 << 3 + reserved: u28 = 0, // reserved, don't use +}; + +pub const NavInput = enum(c_int) { + Activate, + Cancel, + Input, + Menu, + DpadLeft, + DpadRight, + DpadUp, + DpadDown, + LStickLeft, + LStickRight, + LStickUp, + LStickDown, + FocusPrev, + FocusNext, + TweakSlow, + TweakFast, + KeyLeft, + KeyRight, + KeyUp, + KeyDown, + COUNT, + _, +}; + +pub const ConfigFlags = packed struct(c_int) { + nav_enable_keyboard: bool = false, // ImGuiConfigFlags_NavEnableKeyboard = 1 << 0, + nav_enable_gamepad: bool = false, // ImGuiConfigFlags_NavEnableGamepad = 1 << 1, + nav_enable_set_mouse_pos: bool = false, // ImGuiConfigFlags_NavEnableSetMousePos = 1 << 2, + nav_no_capture_keyboard: bool = false, // ImGuiConfigFlags_NavNoCaptureKeyboard = 1 << 3, + no_mouse: bool = false, // ImGuiConfigFlags_NoMouse = 1 << 4, + no_mouse_cursor_change: bool = false, // ImGuiConfigFlags_NoMouseCursorChange = 1 << 5, + docking_enable: bool = false, // ImGuiConfigFlags_DockingEnable = 1 << 6, + viewports_enable: bool = false, // ImGuiConfigFlags_ViewportsEnable = 1 << 10, + dpi_enable_scale_viewports: bool = false, // ImGuiConfigFlags_DpiEnableScaleViewports = 1 << 14, + dpi_enable_scale_fonts: bool = false, // ImGuiConfigFlags_DpiEnableScaleFonts = 1 << 15, + is_s_r_g_b: bool = false, // ImGuiConfigFlags_IsSRGB = 1 << 20, + is_touch_screen: bool = false, // ImGuiConfigFlags_IsTouchScreen = 1 << 21 + reserved: u20 = 0, // reserved, don't use +}; + +pub const BackendFlags = packed struct(c_int) { + has_gamepad: bool = false, // ImGuiBackendFlags_HasGamepad = 1 << 0, + has_mouse_cursors: bool = false, // ImGuiBackendFlags_HasMouseCursors = 1 << 1, + has_set_mouse_pos: bool = false, // ImGuiBackendFlags_HasSetMousePos = 1 << 2, + renderer_has_vtx_offset: bool = false, // ImGuiBackendFlags_RendererHasVtxOffset = 1 << 3, + platform_has_viewports: bool = false, // ImGuiBackendFlags_PlatformHasViewports = 1 << 10, + has_mouse_hovered_viewport: bool = false, // ImGuiBackendFlags_HasMouseHoveredViewport=1 << 11, + renderer_has_viewports: bool = false, // ImGuiBackendFlags_RendererHasViewports = 1 << 12 + reserved: u25 = 0, // reserved, don't use +}; + +pub const StyleColor = enum(c_int) { // ImGuiCol + Text, + TextDisabled, + WindowBg, + ChildBg, + PopupBg, + Border, + BorderShadow, + FrameBg, + FrameBgHovered, + FrameBgActive, + TitleBg, + TitleBgActive, + TitleBgCollapsed, + MenuBarBg, + ScrollbarBg, + ScrollbarGrab, + ScrollbarGrabHovered, + ScrollbarGrabActive, + CheckMark, + SliderGrab, + SliderGrabActive, + Button, + ButtonHovered, + ButtonActive, + Header, + HeaderHovered, + HeaderActive, + Separator, + SeparatorHovered, + SeparatorActive, + ResizeGrip, + ResizeGripHovered, + ResizeGripActive, + Tab, + TabHovered, + TabActive, + TabUnfocused, + TabUnfocusedActive, + DockingPreview, + DockingEmptyBg, + PlotLines, + PlotLinesHovered, + PlotHistogram, + PlotHistogramHovered, + TableHeaderBg, + TableBorderStrong, + TableBorderLight, + TableRowBg, + TableRowBgAlt, + TextSelectedBg, + DragDropTarget, + NavHighlight, + NavWindowingHighlight, + NavWindowingDimBg, + ModalWindowDimBg, + COUNT, + _, +}; + +pub const StyleVar = enum(c_int) { + Alpha, + DisabledAlpha, + WindowPadding, + WindowRounding, + WindowBorderSize, + WindowMinSize, + WindowTitleAlign, + ChildRounding, + ChildBorderSize, + PopupRounding, + PopupBorderSize, + FramePadding, + FrameRounding, + FrameBorderSize, + ItemSpacing, + ItemInnerSpacing, + IndentSpacing, + CellPadding, + ScrollbarSize, + ScrollbarRounding, + GrabMinSize, + GrabRounding, + TabRounding, + ButtonTextAlign, + SelectableTextAlign, + COUNT, + _, +}; + +pub const ColorEditFlags = packed struct(c_int) { + no_alpha: bool = false, // ImGuiColorEditFlags_NoAlpha = 1 << 1, + no_picker: bool = false, // ImGuiColorEditFlags_NoPicker = 1 << 2, + no_options: bool = false, // ImGuiColorEditFlags_NoOptions = 1 << 3, + no_small_preview: bool = false, // ImGuiColorEditFlags_NoSmallPreview = 1 << 4, + no_inputs: bool = false, // ImGuiColorEditFlags_NoInputs = 1 << 5, + no_tooltip: bool = false, // ImGuiColorEditFlags_NoTooltip = 1 << 6, + no_label: bool = false, // ImGuiColorEditFlags_NoLabel = 1 << 7, + no_side_preview: bool = false, // ImGuiColorEditFlags_NoSidePreview = 1 << 8, + no_drag_drop: bool = false, // ImGuiColorEditFlags_NoDragDrop = 1 << 9, + no_border: bool = false, // ImGuiColorEditFlags_NoBorder = 1 << 10, + alpha_bar: bool = false, // ImGuiColorEditFlags_AlphaBar = 1 << 16, + alpha_preview: bool = false, // ImGuiColorEditFlags_AlphaPreview = 1 << 17, + alpha_preview_half: bool = false, // ImGuiColorEditFlags_AlphaPreviewHalf= 1 << 18, + h_d_r: bool = false, // ImGuiColorEditFlags_HDR = 1 << 19, + display_r_g_b: bool = false, // ImGuiColorEditFlags_DisplayRGB = 1 << 20, + display_h_s_v: bool = false, // ImGuiColorEditFlags_DisplayHSV = 1 << 21, + display_hex: bool = false, // ImGuiColorEditFlags_DisplayHex = 1 << 22, + uint8: bool = false, // ImGuiColorEditFlags_Uint8 = 1 << 23, + float: bool = false, // ImGuiColorEditFlags_Float = 1 << 24, + picker_hue_bar: bool = false, // ImGuiColorEditFlags_PickerHueBar = 1 << 25, + picker_hue_wheel: bool = false, // ImGuiColorEditFlags_PickerHueWheel = 1 << 26, + input_r_g_b: bool = false, // ImGuiColorEditFlags_InputRGB = 1 << 27, + input_h_s_v: bool = false, // ImGuiColorEditFlags_InputHSV = 1 << 28, + reserved: u9 = 0, // reserved, don't use + + pub const default_options = .{ .uint8 = true, .display_r_g_b = true, .input_r_g_b = true, .picker_hue_bar = true }; + pub const display_mask = .{ .display_r_g_b = true, .display_h_s_v = true, .display_hex = true }; + pub const data_type_mask = .{ .uint8 = true, .float = true }; + pub const picker_mask = .{ .picker_hue_wheel = true, .picker_hue_bar = true }; + pub const input_mask = .{ .input_r_g_b = true, .input_h_s_v = true }; +}; + +pub const ButtonFlags = packed struct(c_int) { + mouse_button_left: bool = false, // ImGuiButtonFlags_MouseButtonLeft = 1 << 0, + mouse_button_right: bool = false, // ImGuiButtonFlags_MouseButtonRight = 1 << 1, + mouse_button_middle: bool = false, // ImGuiButtonFlags_MouseButtonMiddle = 1 << 2, + reserved: u29 = 0, // reserved, don't use + + pub const mouse_button_mask = .{ .mouse_button_left = true, .mouse_button_right = true, .mouse_button_middle = true }; + pub const mouse_button_default = .{ .mouse_button_left = true }; +}; + +pub const SliderFlags = packed struct(c_int) { + always_clamp: bool = false, // ImGuiSliderFlags_AlwaysClamp = 1 << 4, + logarithmic: bool = false, // ImGuiSliderFlags_Logarithmic = 1 << 5, + no_round_to_format: bool = false, // ImGuiSliderFlags_NoRoundToFormat = 1 << 6, + no_input: bool = false, // ImGuiSliderFlags_NoInput = 1 << 7, + reserved: u28 = 0, // reserved, don't use + + pub const InvalidMask: @This() = @bitCast(@as(c_int, 0x7000000F)); +}; + +pub const MouseButton = enum(c_int) { + Left = 0, + Right = 1, + Middle = 2, + COUNT = 5, + _, +}; + +pub const MouseCursor = enum(c_int) { + None = -1, + Arrow = 0, + TextInput, + ResizeAll, + ResizeNS, + ResizeEW, + ResizeNESW, + ResizeNWSE, + Hand, + NotAllowed, + COUNT, + _, +}; + +pub const Cond = packed struct(c_int) { + always: bool = false, // ImGuiCond_Always = 1 << 0, + once: bool = false, // ImGuiCond_Once = 1 << 1, + first_use_ever: bool = false, // ImGuiCond_FirstUseEver = 1 << 2, + appearing: bool = false, // ImGuiCond_Appearing = 1 << 3 + reserved: u28 = 0, // reserved, don't use +}; + +pub const Style = extern struct { + alpha: f32, + disabled_alpha: f32, + window_padding: Vec2, + window_rounding: f32, + window_border_size: f32, + window_min_size: Vec2, + window_title_align: Vec2, + window_menu_button_position: Dir, + child_rounding: f32, + child_border_size: f32, + popup_rounding: f32, + popup_border_size: f32, + frame_padding: Vec2, + frame_rounding: f32, + frame_border_size: f32, + item_spacing: Vec2, + item_inner_spacing: Vec2, + cell_padding: Vec2, + touch_extra_padding: Vec2, + indent_spacing: f32, + columns_min_spacing: f32, + scrollbar_size: f32, + scrollbar_rounding: f32, + grab_min_size: f32, + grab_rounding: f32, + log_slider_deadzone: f32, + tab_rounding: f32, + tab_border_size: f32, + tab_min_width_for_close_button: f32, + color_button_position: Dir, + button_text_align: Vec2, + selectable_text_align: Vec2, + display_window_padding: Vec2, + display_safe_area_padding: Vec2, + mouse_cursor_scale: f32, + anti_aliased_lines: bool, + anti_aliased_lines_use_tex: bool, + anti_aliased_fill: bool, + curve_tessellation_tol: f32, + circle_tessellation_max_error: f32, + colors: [@as(usize, @intFromEnum(StyleColor.COUNT))]Vec4, + + pub inline fn setColor(self: *@This(), colorId: StyleColor, newColor: Vec4) void { + self.colors[@as(usize, @intCast(@intFromEnum(colorId)))] = newColor; + } +}; + +pub const KeyData = extern struct { // struct ImGuiKeyData + down: bool, + down_duration: f32, + down_duration_prev: f32, + analog_value: f32, +}; + +pub const FontAtlas = extern struct { // struct ImFontAtlas + flags: FontAtlasFlags, + tex_i_d: TextureID, + tex_desired_width: c_int, + tex_glyph_padding: c_int, + locked: bool, + tex_ready: bool, + tex_pixels_use_colors: bool, + tex_pixels_alpha8: [*c]u8, + tex_pixels_rgba32: [*c]c_int, + tex_width: c_int, + tex_height: c_int, + tex_uv_scale: Vec2, + tex_uv_white_pixel: Vec2, + fonts: FontPtrVector, + custom_rects: FontAtlasCustomRect, + font_config: FontConfig, + tex_uv_lines: [64]Vec4, + font_builder_io: [*c]const FontBuilderIO, + font_builder_flags: c_uint, + pack_id_mouse_cursors: c_int, + pack_id_lines: c_int, +}; + +pub const FontAtlasCustomRect = extern struct { // struct ImFontAtlasCustomRect + width: c_short, + height: c_short, + x: c_short, + y: c_short, + glyph_id: c_uint, + glyph_advance_x: f32, + glyph_offset: i32, + font: [*c]Font, +}; + +pub const FontConfig = extern struct { // struct ImFontConfig + font_data: ?*anyopaque, + font_data_size: c_int, + font_data_owned_by_atlas: bool, + font_no: c_int, + size_pixels: f32, + oversample_h: c_int, + oversample_v: c_int, + pixel_snap_h: bool, + glyph_extra_spacing: Vec2, + glyph_offset: Vec2, + glyph_ranges: [*c]const Wchar, + glyph_min_advance_x: f32, + glyph_max_advance_y: f32, + merge_mode: bool, + font_builder_flags: c_uint, + rasterizer_multiply: f32, + ellipsis_char: Wchar, + name: [40]u8, + dst_font: [*c]Font, +}; + +pub const Io = extern struct { + config_flags: ConfigFlags, // ImGuiConfigFlags ConfigFlags; + backend_flags: BackendFlags, // ImGuiBackendFlags BackendFlags; + display_size: Vec2, // ImVec2 DisplaySize; + delta_time: f32, // float DeltaTime; + ini_saving_rate: f32, // float IniSavingRate; + ini_file_name: [*c]const u8, // const char* IniFilename; + log_filename: [*c]const u8, // const char* LogFilename; + mouse_double_click_time: f32, // float MouseDoubleClickTime; + mouse_double_click_max_dist: f32, // float MouseDoubleClickMaxDist; + mouse_drag_threshold: f32, // float MouseDragThreshold; + key_repeat_delay: f32, // float KeyRepeatDelay; + key_repeat_rate: f32, // float KeyRepeatRate; + user_data: ?*anyopaque, // void* UserData; + fonts: [*c]FontAtlas, // ImFontAtlas*Fonts; + font_global_scale: f32, // float FontGlobalScale; + font_allow_user_scaling: bool, // bool FontAllowUserScaling; + font_default: ?*anyopaque, // ImFont* FontDefault; + display_framebuffer_scale: Vec2, // ImVec2 DisplayFramebufferScale; + config_docking_no_split: bool, // bool ConfigDockingNoSplit; + config_docking_with_shift: bool, // bool ConfigDockingWithShift; + cofig_docking_always_tab_bar: bool, // bool ConfigDockingAlwaysTabBar; + config_docking_transparent_payload: bool, // bool ConfigDockingTransparentPayload; + config_viewports_no_auto_merge: bool, // bool ConfigViewportsNoAutoMerge; + config_viewports_no_task_bar_icon: bool, // bool ConfigViewportsNoTaskBarIcon; + config_viewports_no_decoration: bool, // bool ConfigViewportsNoDecoration; + config_viewports_no_default_parent: bool, // bool ConfigViewportsNoDefaultParent; + mouse_draw_cursor: bool, // bool MouseDrawCursor; + config_macosx_behaviours: bool, // bool ConfigMacOSXBehaviors; + config_input_trickle_event_queue: bool, // bool ConfigInputTrickleEventQueue; + config_input_text_cursor_blink: bool, // bool ConfigInputTextCursorBlink; + config_drag_click_to_input_text: bool, // bool ConfigDragClickToInputText; + config_windows_resize_from_edges: bool, // bool ConfigWindowsResizeFromEdges; + config_windows_move_from_title_bar_only: bool, // bool ConfigWindowsMoveFromTitleBarOnly; + config_memory_compact_timer: f32, // float ConfigMemoryCompactTimer; + backend_platform_name: [*c]const u8, // const char* BackendPlatformName; + backend_renderer_name: [*c]const u8, // const char* BackendRendererName; + backend_platform_user_data: ?*anyopaque, // void* BackendPlatformUserData; + backend_renderer_user_data: ?*anyopaque, // void* BackendRendererUserData; + backend_language_user_data: ?*anyopaque, // void* BackendLanguageUserData; + // + // const char* (*GetClipboardTextFn)(void* user_data); + get_clipboard_text_fn: *const fn (?*anyopaque) callconv(.C) [*c]const u8, + + // void (*SetClipboardTextFn)(void* user_data, const char* text); + set_clipboard_text_fn: *const fn (?*anyopaque, [*c]const u8) callconv(.C) void, + clipboard_user_data: ?*anyopaque, // void* ClipboardUserData; + + // void (*SetPlatformImeDataFn)(ImGuiViewport* viewport, ImGuiPlatformImeData* data); + set_platform_ime_data_fn: *const fn ([*c]Viewport, [*c]PlatformImeData) callconv(.C) void, + + _unused_padding: ?*anyopaque, // void* _UnusedPadding; + want_capture_mouse: bool, // bool WantCaptureMouse; + want_capture_keyboard: bool, // bool WantCaptureKeyboard; + want_text_input: bool, // bool WantTextInput; + want_set_mouse_pos: bool, // bool WantSetMousePos; + want_save_ini_settings: bool, // bool WantSaveIniSettings; + nav_active: bool, // bool NavActive; + nav_visible: bool, // bool NavVisible; + framerate: f32, // float Framerate; + metrics_render_vertices: c_int, // int MetricsRenderVertices; + metrics_render_indices: c_int, // int MetricsRenderIndices; + metrics_render_windows: c_int, // int MetricsRenderWindows; + metrics_active_windows: c_int, // int MetricsActiveWindows; + metrics_active_allocations: c_int, // int MetricsActiveAllocations; + mouse_delta: Vec2, // ImVec2 MouseDelta; + key_map: [@as(usize, @intFromEnum(Key.COUNT))]c_int, // int KeyMap[ImGuiKey_COUNT]; + keys_down: [@as(usize, @intFromEnum(Key.COUNT))]bool, // bool KeysDown[ImGuiKey_COUNT]; + mouse_pos: Vec2, // ImVec2 MousePos; + mouse_down: [5]bool, // bool MouseDown[5]; + mouse_wheel: f32, // float MouseWheel; + mouse_wheel_h: f32, // float MouseWheelH; + mouse_hovered_viewport: ID, // ImGuiID MouseHoveredViewport; + key_ctrl: bool, // bool KeyCtrl; + key_shift: bool, // bool KeyShift; + key_alt: bool, // bool KeyAlt; + key_super: bool, // bool KeySuper; + nav_inputs: [@intFromEnum(NavInput.COUNT)]f32, // float NavInputs[ImGuiNavInput_COUNT]; + key_mods: ModFlags, // ImGuiModFlags KeyMods; + keys_data: [@intFromEnum(Key.COUNT)]KeyData, // ImGuiKeyData KeysData[ImGuiKey_KeysData_SIZE]; -> KeysData_SIZE == COUNT + want_capture_mouse_unless_popup_close: bool, // bool WantCaptureMouseUnlessPopupClose; + mouse_pos_rev: Vec2, // ImVec2 MousePosPrev; + mouse_clicked_pos: [5]Vec2, // ImVec2 MouseClickedPos[5]; + mouse_cliked_time: [5]f64, // double MouseClickedTime[5]; + mouse_clicked: [5]bool, // bool MouseClicked[5]; + mouse_double_clicked: [5]bool, // bool MouseDoubleClicked[5]; + mouse_clicked_count: [5]U16, // ImU16 MouseClickedCount[5]; + mouse_clicked_last_count: [5]U16, // ImU16 MouseClickedLastCount[5]; + mouse_released: [5]bool, // bool MouseReleased[5]; + mouse_down_owned: [5]bool, // bool MouseDownOwned[5]; + mouse_down_owned_unless_popup_close: [5]bool, // bool MouseDownOwnedUnlessPopupClose[5]; + mouse_down_duration: [5]f32, // float MouseDownDuration[5]; + mouse_down_duration_prev: [5]f32, // float MouseDownDurationPrev[5]; + mouse_drag_max_distance_abs: [5]f32, // ImVec2 MouseDragMaxDistanceAbs[5]; + mouse_drag_max_distance_sqr: [5]f32, // float MouseDragMaxDistanceSqr[5]; + nav_inputs_down_duration: [@intFromEnum(NavInput.COUNT)]f32, // float NavInputsDownDuration[ImGuiNavInput_COUNT]; + nav_inputs_down_duration_prev: [@intFromEnum(NavInput.COUNT)]f32, // float NavInputsDownDurationPrev[ImGuiNavInput_COUNT]; + pen_pressure: f32, // float PenPressure; + app_focus_lost: bool, // bool AppFocusLost; + app_accepting_events: bool, // bool AppAcceptingEvents; + backend_using_legacy_key_arrays: S8, // ImS8 BackendUsingLegacyKeyArrays; + backend_using_legacy_nav_input_array: bool, // bool BackendUsingLegacyNavInputArray; + input_queue_surrogate: Wchar16, // ImWchar16 InputQueueSurrogate; + input_queue_characters: WcharVector, // ImVector_ImWchar InputQueueCharacters; +}; + +pub const Viewport = extern struct { // struct ImGuiViewport + id: ID, + flags: ViewportFlags, + pos: Vec2, + size: Vec2, + work_pos: Vec2, + work_size: Vec2, + dpi_scale: f32, + parent_viewport_id: ID, + draw_data: [*c]DrawData, + renderer_user_data: ?*anyopaque, + platform_user_data: ?*anyopaque, + platform_handle: ?*anyopaque, + platform_handle_raw: ?*anyopaque, + platform_request_move: bool, + platform_request_resize: bool, + platform_request_close: bool, +}; + +pub const PlatformMonitorVector = extern struct { // struct ImVector_ImGuiPlatformMonitor + size: c_int, + capacity: c_int, + data: [*c]PlatformMonitor, +}; + +pub const ViewportPtrVector = extern struct { // struct ImVector_ImGuiViewportPtr + size: c_int, + capacity: c_int, + data: [*c][*c]Viewport, +}; + +pub const PlatformIO = extern struct { // struct ImGuiPlatformIO + platform_create_window: *const fn ([*c]Viewport) callconv(.C) void, + platform_destroy_window: *const fn ([*c]Viewport) callconv(.C) void, + platform_show_window: *const fn ([*c]Viewport) callconv(.C) void, + platform_set_window_pos: *const fn ([*c]Viewport, Vec2) callconv(.C) void, + platform_get_window_pos: *const fn ([*c]Viewport) callconv(.C) Vec2, + platform_set_window_size: *const fn ([*c]Viewport, Vec2) callconv(.C) void, + platform_get_window_size: *const fn ([*c]Viewport) callconv(.C) Vec2, + platform_set_window_focus: *const fn ([*c]Viewport) callconv(.C) void, + platform_get_window_focus: *const fn ([*c]Viewport) callconv(.C) bool, + platform_get_window_minimized: *const fn ([*c]Viewport) callconv(.C) bool, + platform_set_window_title: *const fn ([*c]Viewport, [*c]const u8) callconv(.C) void, + platform_set_window_alpha: *const fn ([*c]Viewport, f32) callconv(.C) void, + platform_update_window: *const fn ([*c]Viewport) callconv(.C) void, + platform_render_window: *const fn ([*c]Viewport, ?*anyopaque) callconv(.C) void, + platform_swap_buffers: *const fn ([*c]Viewport, ?*anyopaque) callconv(.C) void, + platform_get_window_dpi_scale: *const fn ([*c]Viewport) callconv(.C) f32, + platform_on_changed_viewport: *const fn ([*c]Viewport) callconv(.C) void, + platform_create_vk_surface: *const fn ([*c]Viewport, U64, [*c]const void, [*c]U64) callconv(.C) c_int, + renderer_create_window: *const fn ([*c]Viewport) callconv(.C) void, + renderer_destroy_window: *const fn ([*c]Viewport) callconv(.C) void, + renderer_set_window_size: *const fn ([*c]Viewport, Vec2) callconv(.C) void, + renderer_render_window: *const fn ([*c]Viewport, ?*anyopaque) callconv(.C) void, + renderer_swap_buffers: *const fn ([*c]Viewport, ?*anyopaque) callconv(.C) void, + monitors: PlatformMonitor, + viewports: ViewportPtrVector, +}; + +pub const PlatformMonitor = extern struct { // struct ImGuiPlatformMonitor + main_pos: Vec2, + main_size: Vec2, + work_pos: Vec2, + work_size: Vec2, + dpi_scale: f32, +}; + +pub const ViewportFlags = packed struct(c_int) { + is_platform_window: bool = false, // cmGuiViewportFlags_IsPlatformWindow = 1 << 0, + is_platform_monitor: bool = false, // ImGuiViewportFlags_IsPlatformMonitor = 1 << 1, + owned_by_app: bool = false, // ImGuiViewportFlags_OwnedByApp = 1 << 2, + no_decoration: bool = false, // ImGuiViewportFlags_NoDecoration = 1 << 3, + no_task_bar_icon: bool = false, // ImGuiViewportFlags_NoTaskBarIcon = 1 << 4, + no_focus_on_appearing: bool = false, // ImGuiViewportFlags_NoFocusOnAppearing = 1 << 5, + no_focus_on_click: bool = false, // ImGuiViewportFlags_NoFocusOnClick = 1 << 6, + no_inputs: bool = false, // ImGuiViewportFlags_NoInputs = 1 << 7, + no_renderer_clear: bool = false, // ImGuiViewportFlags_NoRendererClear = 1 << 8, + top_most: bool = false, // ImGuiViewportFlags_TopMost = 1 << 9, + minimized: bool = false, // ImGuiViewportFlags_Minimized = 1 << 10, + no_auto_merge: bool = false, // ImGuiViewportFlags_NoAutoMerge = 1 << 11, + can_host_other_windows: bool = false, // ImGuiViewportFlags_CanHostOtherWindows = 1 << 12 + reserved: u19 = 0, // reserved, don't use +}; + +pub const DrawFlags = packed struct(c_int) { + closed: bool = false, // ImDrawFlags_Closed = 1 << 0, + round_corners_top_left: bool = false, // ImDrawFlags_RoundCornersTopLeft = 1 << 4, + round_corners_top_right: bool = false, // ImDrawFlags_RoundCornersTopRight = 1 << 5, + round_corners_bottom_left: bool = false, // ImDrawFlags_RoundCornersBottomLeft = 1 << 6, + round_corners_bottom_right: bool = false, // ImDrawFlags_RoundCornersBottomRight = 1 << 7, + round_corners_none: bool = false, // ImDrawFlags_RoundCornersNone = 1 << 8, + reserved: u26 = 0, // reserved, don't use + + pub const round_corners_top = .{ .round_corners_top_left = true, .round_corners_top_right = true }; + pub const round_corners_bottom = .{ .round_corners_bottom_left = true, .round_corners_bottom_right = true }; + pub const round_corners_left = .{ .round_corners_bottom_left = true, .round_corners_top_left = true }; + pub const round_corners_right = .{ .round_corners_bottom_right = true, .round_corners_top_right = true }; + pub const round_corners_all = .{ .round_corners_top_left = true, .round_corners_top_right = true, .round_corners_bottom_left = true, .round_corners_bottom_right = true }; + pub const round_corners_default = .{ .round_corners_all = true }; + pub const round_corners_mask = .{ .round_corners_all = true, .round_corners_none = true }; +}; + +pub const DrawListFlags = packed struct(c_int) { + anti_aliased_lines: bool = false, // ImDrawListFlags_AntiAliasedLines = 1 << 0, + anti_aliased_lines_use_tex: bool = false, // ImDrawListFlags_AntiAliasedLinesUseTex = 1 << 1, + anti_aliased_fill: bool = false, // ImDrawListFlags_AntiAliasedFill = 1 << 2, + allow_vtx_offset: bool = false, // ImDrawListFlags_AllowVtxOffset = 1 << 3 + reserved: u28 = 0, // reserved, don't use +}; + +pub const FontAtlasFlags = packed struct(c_int) { + no_power_of_two_height: bool = false, // ImFontAtlasFlags_NoPowerOfTwoHeight = 1 << 0, + no_mouse_cursors: bool = false, // ImFontAtlasFlags_NoMouseCursors = 1 << 1, + no_baked_lines: bool = false, // ImFontAtlasFlags_NoBakedLines = 1 << 2 + reserved: u29 = 0, // reserved, don't use +}; + +pub const PlatformImeData = extern struct { // struct ImGuiPlatformImeData + want_visible: bool, + input_pos: Vec2, + input_line_height: f32, +}; + +pub const StbUndoRecord = extern struct { // struct StbUndoRecord + where: c_int, + insert_length: c_int, + delete_length: c_int, + char_storage: c_int, +}; + +pub const StbUndoState = extern struct { // struct StbUndoState + undo_rec: [99]StbUndoRecord, + undo_char: [999]Wchar, + undo_point: c_short, + redo_point: c_short, + undo_char_point: c_int, + redo_char_point: c_int, +}; + +pub const StbTexteditState = extern struct { // struct STB_TexteditState + cursor: c_int, + select_start: c_int, + select_end: c_int, + insert_mode: u8, + row_count_per_page: c_int, + cursor_at_end_of_line: u8, + initialized: u8, + has_preferred_x: u8, + single_line: u8, + padding3: [3]u8, + preferred_x: f32, + undostate: StbUndoState, +}; + +pub const StbTexteditRow = extern struct { // struct StbTexteditRow + x0: f32, + x1: f32, + baseline_y_delta: f32, + ymin: f32, + ymax: f32, + num_chars: c_int, +}; + +pub const Vec1 = extern struct { // struct ImVec1 + x: f32, +}; + +pub const Rect = extern struct { // struct ImRect + min: Vec2, + max: Vec2, +}; + +pub const BitVector = extern struct { // struct ImBitVector + storage: U32, +}; + +pub const Vec2ih = extern struct { // struct ImVec2ih + x: c_short, + y: c_short, +}; + +pub const PoolIdx = c_int; + +pub const DrawListSharedData = extern struct { // struct ImDrawListSharedData + tex_uv_white_pixel: Vec2, + font: [*c]Font, + font_size: f32, + curve_tessellation_tol: f32, + circle_segment_max_error: f32, + clip_rect_fullscreen: Vec4, + initial_flags: DrawListFlags, + arc_fast_vtx: [48]Vec2, + arc_fast_radius_cutoff: f32, + circle_segment_counts: [64]U8, + tex_uv_lines: [*c]const Vec4, +}; + +pub const DrawListPtrVector = extern struct { // struct ImVector_ImDrawListPtr + size: c_int, + capacity: c_int, + data: [*c][*c]DrawList, +}; + +pub const DrawList = extern struct { // struct ImDrawList + cmd_buffer: DrawCmd, + idx_buffer: DrawIdx, + vtx_buffer: DrawVert, + flags: DrawListFlags, + _vtx_current_idx: c_uint, + _data: [*c]const DrawListSharedData, + _owner_name: [*c]const u8, + _vtx_write_ptr: [*c]DrawVert, + _idx_write_ptr: [*c]DrawIdx, + _clip_rect_stack: Vec4, + _texture_id_stack: TextureID, + _path: Vec2, + _cmd_header: DrawCmdHeader, + _splitter: DrawListSplitter, + _fringe_scale: f32, +}; + +pub const DrawDataBuilder = extern struct { // struct ImDrawDataBuilder + layers: [2]DrawListPtrVector, +}; + +pub const ItemFlags = packed struct(c_int) { + no_tab_stop: bool = false, // ImGuiItemFlags_NoTabStop = 1 << 0, + button_repeat: bool = false, // ImGuiItemFlags_ButtonRepeat = 1 << 1, + disabled: bool = false, // ImGuiItemFlags_Disabled = 1 << 2, + no_nav: bool = false, // ImGuiItemFlags_NoNav = 1 << 3, + no_nav_default_focus: bool = false, // ImGuiItemFlags_NoNavDefaultFocus = 1 << 4, + selectable_dont_close_popup: bool = false, // ImGuiItemFlags_SelectableDontClosePopup = 1 << 5, + mixed_value: bool = false, // ImGuiItemFlags_MixedValue = 1 << 6, + read_only: bool = false, // ImGuiItemFlags_ReadOnly = 1 << 7, + inputable: bool = false, // ImGuiItemFlags_Inputable = 1 << 8 + reserved: u23 = 0, // reserved, don't use +}; +pub const ItemStatusFlags = packed struct(c_int) { + hovered_rect: bool = false, // ImGuiItemStatusFlags_HoveredRect = 1 << 0, + has_display_rect: bool = false, // ImGuiItemStatusFlags_HasDisplayRect = 1 << 1, + edited: bool = false, // ImGuiItemStatusFlags_Edited = 1 << 2, + toggled_selection: bool = false, // ImGuiItemStatusFlags_ToggledSelection = 1 << 3, + toggled_open: bool = false, // ImGuiItemStatusFlags_ToggledOpen = 1 << 4, + has_deactivated: bool = false, // ImGuiItemStatusFlags_HasDeactivated = 1 << 5, + deactivated: bool = false, // ImGuiItemStatusFlags_Deactivated = 1 << 6, + hovered_window: bool = false, // ImGuiItemStatusFlags_HoveredWindow = 1 << 7, + focused_by_tabbing: bool = false, // ImGuiItemStatusFlags_FocusedByTabbing = 1 << 8 + reserved: u23 = 0, // reserved, don't use +}; + +pub const SeparatorFlags = packed struct(c_int) { + horizontal: bool = false, // ImGuiSeparatorFlags_Horizontal = 1 << 0, + vertical: bool = false, // ImGuiSeparatorFlags_Vertical = 1 << 1, + span_all_columns: bool = false, // ImGuiSeparatorFlags_SpanAllColumns = 1 << 2 + reserved: u29 = 0, // reserved, don't use +}; + +pub const TextFlags = packed struct(c_int) { + no_width_for_large_clipped_text: bool = false, // ImGuiTextFlags_NoWidthForLargeClippedText = 1 << 0 + reserved: u31 = 0, // reserved, don't use +}; + +pub const TooltipFlags = packed struct(c_int) { + override_previous_tooltip: bool = false, // ImGuiTooltipFlags_OverridePreviousTooltip = 1 << 0 + reserved: u31 = 0, // reserved, don't use +}; + +pub const LayoutType = enum(c_int) { + Horizontal = 0, + Vertical = 1, + _, +}; + +pub const LogType = enum(c_int) { + None = 0, + TTY, + File, + Buffer, + Clipboard, + _, +}; + +pub const Axis = enum(c_int) { + None = -1, + X = 0, + Y = 1, + _, +}; + +pub const PlotType = enum(c_int) { + Lines, + Histogram, + _, +}; + +pub const PopupPositionPolicy = enum(c_int) { + Default, + ComboBox, + Tooltip, + _, +}; + +pub const NextWindowDataFlags = packed struct(c_int) { + has_pos: bool = false, // ImGuiNextWindowDataFlags_HasPos = 1 << 0, + has_size: bool = false, // ImGuiNextWindowDataFlags_HasSize = 1 << 1, + has_content_size: bool = false, // ImGuiNextWindowDataFlags_HasContentSize = 1 << 2, + has_collapsed: bool = false, // ImGuiNextWindowDataFlags_HasCollapsed = 1 << 3, + has_size_constraint: bool = false, // ImGuiNextWindowDataFlags_HasSizeConstraint = 1 << 4, + has_focus: bool = false, // ImGuiNextWindowDataFlags_HasFocus = 1 << 5, + has_bg_alpha: bool = false, // ImGuiNextWindowDataFlags_HasBgAlpha = 1 << 6, + has_scroll: bool = false, // ImGuiNextWindowDataFlags_HasScroll = 1 << 7, + has_viewport: bool = false, // ImGuiNextWindowDataFlags_HasViewport = 1 << 8, + has_dock: bool = false, // ImGuiNextWindowDataFlags_HasDock = 1 << 9, + has_window_class: bool = false, // ImGuiNextWindowDataFlags_HasWindowClass = 1 << 10 + reserved: u21 = 0, // reserved, don't use +}; + +pub const NextItemDataFlags = packed struct(c_int) { + has_width: bool = false, // ImGuiNextItemDataFlags_HasWidth = 1 << 0, + has_open: bool = false, // ImGuiNextItemDataFlags_HasOpen = 1 << 1 + reserved: u30 = 0, // reserved, don't use +}; + +pub const ActivateFlags = packed struct(c_int) { + prefer_input: bool = false, // ImGuiActivateFlags_PreferInput = 1 << 0, + prefer_tweak: bool = false, // ImGuiActivateFlags_PreferTweak = 1 << 1, + try_to_preserve_state: bool = false, // ImGuiActivateFlags_TryToPreserveState = 1 << 2 + reserved: u29 = 0, // reserved, don't use +}; +pub const ScrollFlags = packed struct(c_int) { + keep_visible_edge_x: bool = false, // ImGuiScrollFlags_KeepVisibleEdgeX = 1 << 0, + keep_visible_edge_y: bool = false, // ImGuiScrollFlags_KeepVisibleEdgeY = 1 << 1, + keep_visible_center_x: bool = false, // ImGuiScrollFlags_KeepVisibleCenterX = 1 << 2, + keep_visible_center_y: bool = false, // ImGuiScrollFlags_KeepVisibleCenterY = 1 << 3, + always_center_x: bool = false, // ImGuiScrollFlags_AlwaysCenterX = 1 << 4, + always_center_y: bool = false, // ImGuiScrollFlags_AlwaysCenterY = 1 << 5, + no_scroll_parent: bool = false, // ImGuiScrollFlags_NoScrollParent = 1 << 6, + reserved: u25 = 0, // reserved, don't use + + pub const mask_x = .{ .keep_visible_edge_x = true, .keep_visible_center_x = true, .always_center_x = true }; + pub const mask_y = .{ .keep_visible_edge_y = true, .keep_visible_center_y = true, .always_center_y = true }; +}; +pub const NavHighlightFlags = packed struct(c_int) { + type_default: bool = false, // ImGuiNavHighlightFlags_TypeDefault = 1 << 0, + type_thin: bool = false, // ImGuiNavHighlightFlags_TypeThin = 1 << 1, + always_draw: bool = false, // ImGuiNavHighlightFlags_AlwaysDraw = 1 << 2, + no_rounding: bool = false, // ImGuiNavHighlightFlags_NoRounding = 1 << 3 + reserved: u28 = 0, // reserved, don't use +}; +pub const NavDirSourceFlags = packed struct(c_int) { + raw_keyboard: bool = false, // ImGuiNavDirSourceFlags_RawKeyboard = 1 << 0, + keyboard: bool = false, // ImGuiNavDirSourceFlags_Keyboard = 1 << 1, + pad_d_pad: bool = false, // ImGuiNavDirSourceFlags_PadDPad = 1 << 2, + pad_l_stick: bool = false, // ImGuiNavDirSourceFlags_PadLStick = 1 << 3 + reserved: u28 = 0, // reserved, don't use +}; +pub const NavMoveFlags = packed struct(c_int) { + loop_x: bool = false, // ImGuiNavMoveFlags_LoopX = 1 << 0, + loop_y: bool = false, // ImGuiNavMoveFlags_LoopY = 1 << 1, + wrap_x: bool = false, // ImGuiNavMoveFlags_WrapX = 1 << 2, + wrap_y: bool = false, // ImGuiNavMoveFlags_WrapY = 1 << 3, + allow_current_nav_id: bool = false, // ImGuiNavMoveFlags_AllowCurrentNavId = 1 << 4, + also_score_visible_set: bool = false, // ImGuiNavMoveFlags_AlsoScoreVisibleSet = 1 << 5, + scroll_to_edge_y: bool = false, // ImGuiNavMoveFlags_ScrollToEdgeY = 1 << 6, + forwarded: bool = false, // ImGuiNavMoveFlags_Forwarded = 1 << 7, + debug_no_result: bool = false, // ImGuiNavMoveFlags_DebugNoResult = 1 << 8, + focus_api: bool = false, // ImGuiNavMoveFlags_FocusApi = 1 << 9, + tabbing: bool = false, // ImGuiNavMoveFlags_Tabbing = 1 << 10, + activate: bool = false, // ImGuiNavMoveFlags_Activate = 1 << 11, + dont_set_nav_highlight: bool = false, // ImGuiNavMoveFlags_DontSetNavHighlight = 1 << 12 + reserved: u19 = 0, // reserved, don't use +}; + +pub const OldColumnFlags = packed struct(c_int) { + no_border: bool = false, // ImGuiOldColumnFlags_NoBorder = 1 << 0, + no_resize: bool = false, // ImGuiOldColumnFlags_NoResize = 1 << 1, + no_preserve_widths: bool = false, // ImGuiOldColumnFlags_NoPreserveWidths = 1 << 2, + no_force_within_window: bool = false, // ImGuiOldColumnFlags_NoForceWithinWindow = 1 << 3, + grow_parent_contents_size: bool = false, // ImGuiOldColumnFlags_GrowParentContentsSize = 1 << 4 + reserved: u27 = 0, // reserved, don't use +}; +pub const DebugLogFlags = packed struct(c_int) { + event_active_id: bool = false, // ImGuiDebugLogFlags_EventActiveId = 1 << 0, + event_focus: bool = false, // ImGuiDebugLogFlags_EventFocus = 1 << 1, + event_popup: bool = false, // ImGuiDebugLogFlags_EventPopup = 1 << 2, + event_nav: bool = false, // ImGuiDebugLogFlags_EventNav = 1 << 3, + event_i_o: bool = false, // ImGuiDebugLogFlags_EventIO = 1 << 4, + event_docking: bool = false, // ImGuiDebugLogFlags_EventDocking = 1 << 5, + event_viewport: bool = false, // ImGuiDebugLogFlags_EventViewport = 1 << 6, + output_to_t_t_y: bool = false, // ImGuiDebugLogFlags_OutputToTTY = 1 << 10 + reserved: u24 = 0, // reserved, don't use + + pub const event_mask = .{ .event_active_id = true, .event_focus = true, .event_popup = true, .event_nav = true, .event_i_o = true, .event_docking = true, .event_viewport = true }; +}; + +pub const NavLayer = enum(c_int) { + Main = 0, + Menu = 1, + COUNT, + _, +}; + +pub const DataAuthority = enum(c_int) { + Auto, + DockNode, + Window, + _, +}; + +pub const DockNodeState = enum(c_int) { + Unknown, + HostWindowHiddenBecauseSingleWindow, + HostWindowHiddenBecauseWindowsAreResizing, + HostWindowVisible, + _, +}; + +pub const WindowDockStyleCol = enum(c_int) { + Text, + Tab, + TabHovered, + TabActive, + TabUnfocused, + TabUnfocusedActive, + COUNT, + _, +}; + +pub const ContextHookType = enum(c_int) { + NewFramePre, + NewFramePost, + EndFramePre, + EndFramePost, + RenderPre, + RenderPost, + Shutdown, + PendingRemoval, + _, +}; + +pub const DataTypeTempStorage = extern struct { // struct ImGuiDataTypeTempStorage + data: [8]U8, +}; + +pub const DataTypeInfo = extern struct { // struct ImGuiDataTypeInfo + size: usize, + name: [*c]const u8, + print_fmt: [*c]const u8, + scan_fmt: [*c]const u8, +}; + +pub const ColorMod = extern struct { // struct ImGuiColorMod + col: StyleColor, + backup_value: Vec4, +}; + +// struct ImGuiStyleMod +// { +// ImGuiStyleVar VarIdx; +// union { int BackupInt[2]; float BackupFloat[2]; }; +// }; + +pub const StyleMod = struct { + VarIdx: StyleVar, + Backup: union { + int: [2]c_int, + float: [2]f32, + }, +}; + +pub const ComboPreviewData = extern struct { // struct ImGuiComboPreviewData + preview_rect: Rect, + backup_cursor_pos: Vec2, + backup_cursor_max_pos: Vec2, + backup_cursor_pos_prev_line: Vec2, + backup_prev_line_text_base_offset: f32, + backup_layout: LayoutType, +}; + +pub const GroupData = extern struct { // struct ImGuiGroupData + window_i_d: ID, + backup_cursor_pos: Vec2, + backup_cursor_max_pos: Vec2, + backup_indent: Vec1, + backup_group_offset: Vec1, + backup_curr_line_size: Vec2, + backup_curr_line_text_base_offset: f32, + backup_active_id_is_alive: ID, + backup_active_id_previous_frame_is_alive: bool, + backup_hovered_id_is_alive: bool, + emit_item: bool, +}; + +pub const MenuColumns = extern struct { // struct ImGuiMenuColumns + total_width: U32, + next_total_width: U32, + spacing: U16, + offset_icon: U16, + offset_label: U16, + offset_shortcut: U16, + offset_mark: U16, + widths: [4]U16, +}; + +pub const InputTextState = extern struct { // struct ImGuiInputTextState + id: ID, + cur_len_w: c_int, + cur_len_a: c_int, + text_w: WcharVector, + text_a: CharVector, + initial_text_a: CharVector, + text_a_is_valid: bool, + buf_capacity_a: c_int, + scroll_x: f32, + stb: StbTexteditState, + cursor_anim: f32, + cursor_follow: bool, + selected_all_mouse_lock: bool, + edited: bool, + flags: InputTextFlags, +}; + +pub const PopupData = extern struct { // struct ImGuiPopupData + popup_id: ID, + window: [*c]Window, + source_window: [*c]Window, + parent_nav_layer: c_int, + open_frame_count: c_int, + open_parent_id: ID, + open_popup_pos: Vec2, + open_mouse_pos: Vec2, +}; + +pub const NextWindowData = extern struct { // struct ImGuiNextWindowData + flags: NextWindowDataFlags, + pos_cond: Cond, + size_cond: Cond, + collapsed_cond: Cond, + dock_cond: Cond, + pos_val: Vec2, + pos_pivot_val: Vec2, + size_val: Vec2, + content_size_val: Vec2, + scroll_val: Vec2, + pos_undock: bool, + collapsed_val: bool, + size_constraint_rect: Rect, + size_callback: SizeCallback, + size_callback_user_data: ?*anyopaque, + bg_alpha_val: f32, + viewport_id: ID, + dock_id: ID, + window_class: WindowClass, + menu_bar_offset_min_val: Vec2, +}; + +pub const NextItemData = extern struct { // struct ImGuiNextItemData + flags: NextItemDataFlags, + width: f32, + focus_scope_id: ID, + open_cond: Cond, + open_val: bool, +}; + +pub const LastItemData = extern struct { // struct ImGuiLastItemData + id: ID, + in_flags: ItemFlags, + status_flags: ItemStatusFlags, + rect: Rect, + nav_rect: Rect, + display_rect: Rect, +}; + +pub const StackSizes = extern struct { // struct ImGuiStackSizes + size_of_id_stack: c_short, + size_of_color_stack: c_short, + size_of_style_var_stack: c_short, + size_of_font_stack: c_short, + size_of_focus_scope_stack: c_short, + size_of_group_stack: c_short, + size_of_item_flags_stack: c_short, + size_of_begin_popup_stack: c_short, + size_of_disabled_stack: c_short, +}; + +pub const WindowStackData = extern struct { // struct ImGuiWindowStackData + window: [*c]Window, + parent_last_item_data_backup: LastItemData, + stack_sizes_on_begin: StackSizes, +}; + +pub const PtrOrIndex = extern struct { // struct ImGuiPtrOrIndex + ptr: ?*anyopaque, + index: c_int, +}; + +pub const BitArrayForNamedKeys = extern struct { // struct ImBitArrayForNamedKeys + storage: [(NamedKeyCOUNT + 31) >> 5]U32, +}; + +pub const InputEventMousePos = extern struct { // struct ImGuiInputEventMousePos + pos_x: f32, + pos_y: f32, +}; + +pub const InputEventMouseWheel = extern struct { // struct ImGuiInputEventMouseWheel + wheel_x: f32, + wheel_y: f32, +}; + +pub const InputEventMouseButton = extern struct { // struct ImGuiInputEventMouseButton + button: c_int, + down: bool, +}; + +pub const InputEventMouseViewport = extern struct { // struct ImGuiInputEventMouseViewport + hovered_viewport_i_d: ID, +}; + +pub const InputEventKey = extern struct { // struct ImGuiInputEventKey + key: Key, + down: bool, + analog_value: f32, +}; + +pub const InputEventText = extern struct { // struct ImGuiInputEventText + char: c_uint, +}; + +pub const InputEventAppFocused = extern struct { // struct ImGuiInputEventAppFocused + focused: bool, +}; + +pub const InputEvent = extern struct { // struct ImGuiInputEvent + type: InputEventType, + source: InputSource, + events: extern union { + mouse_pos: InputEventMousePos, + mouse_wheel: InputEventMouseWheel, + mouse_button: InputEventMouseButton, + mouse_viewport: InputEventMouseViewport, + key: InputEventKey, + text: InputEventText, + app_focused: InputEventAppFocused, + }, + added_by_test_engine: bool, +}; + +pub const ListClipperRange = extern struct { // struct ImGuiListClipperRange + min: c_int, + max: c_int, + pos_to_index_convert: bool, + pos_to_index_offset_min: S8, + pos_to_index_offset_max: S8, +}; + +pub const ListClipperData = extern struct { // struct ImGuiListClipperData + list_clipper: [*c]ListClipper, + lossyness_offset: f32, + step_no: c_int, + items_frozen: c_int, + ranges: ListClipperRangeVector, +}; + +pub const ListClipperRangeVector = extern struct { // struct ImVector_ImGuiListClipperRange + size: c_int, + capacity: c_int, + data: [*c]ListClipperRange, +}; + +pub const NavItemData = extern struct { // struct ImGuiNavItemData + window: [*c]Window, + id: ID, + focus_scope_id: ID, + rect_rel: Rect, + in_flags: ItemFlags, + dist_box: f32, + dist_center: f32, + dist_axial: f32, +}; + +pub const OldColumnData = extern struct { // struct ImGuiOldColumnData + offset_norm: f32, + offset_norm_before_resize: f32, + flags: OldColumnFlags, + clip_rect: Rect, +}; + +pub const OldColumnDataVector = extern struct { // struct ImVector_ImGuiOldColumnData + size: c_int, + capacity: c_int, + data: [*c]OldColumnData, +}; + +pub const WindowPtrVector = extern struct { // struct ImVector_ImGuiWindowPtr + size: c_int, + capacity: c_int, + data: [*c]Window, +}; + +pub const WindowDockStyle = extern struct { // struct ImGuiWindowDockStyle + colors: [WindowDockStyleCol.COUNT]U32, +}; + +pub const DockRequestVector = extern struct { // struct ImVector_ImGuiDockRequest + size: c_int, + capacity: c_int, + data: [*c]DockRequest, +}; + +pub const DockNodeSettingsVector = extern struct { // struct ImVector_ImGuiDockNodeSettings + size: c_int, + capacity: c_int, + data: [*c]DockNodeSettings, +}; + +pub const DockContext = extern struct { // struct ImGuiDockContext + nodes: Storage, + requests: DockRequestVector, + nodes_settings: DockNodeSettingsVector, + want_full_rebuild: bool, +}; + +pub const ViewportP = extern struct { // struct ImGuiViewportP + _imgui_viewport: Viewport, + idx: c_int, + last_frame_active: c_int, + last_front_most_stamp_count: c_int, + last_name_hash: ID, + last_pos: Vec2, + alpha: f32, + last_alpha: f32, + platform_monitor: c_short, + platform_window_created: bool, + window: [*c]Window, + draw_lists_last_frame: [2]c_int, + draw_lists: [2][*c]DrawList, + draw_data_p: DrawData, + draw_data_builder: DrawDataBuilder, + last_platform_pos: Vec2, + last_platform_size: Vec2, + last_renderer_size: Vec2, + work_offset_min: Vec2, + work_offset_max: Vec2, + build_work_offset_min: Vec2, + build_work_offset_max: Vec2, +}; + +pub const WindowSettings = extern struct { // struct ImGuiWindowSettings + i_d: ID, + pos: Vec2ih, + size: Vec2ih, + viewport_pos: Vec2ih, + viewport_id: ID, + dock_id: ID, + class_id: ID, + dock_order: c_short, + collapsed: bool, + want_apply: bool, +}; + +pub const SettingsHandler = extern struct { // struct ImGuiSettingsHandler + type_name: [*c]const u8, + type_hash: ID, + clear_all_fn: *const fn ([*c]Context, [*c]SettingsHandler) void, + read_init_fn: *const fn ([*c]Context, [*c]SettingsHandler) void, + read_open_fn: *const fn ([*c]Context, [*c]SettingsHandler, [*c]const u8) ?*anyopaque, + read_line_fn: *const fn ([*c]Context, [*c]SettingsHandler, ?*anyopaque, [*c]const u8) void, + apply_all_fn: *const fn ([*c]Context, [*c]SettingsHandler) void, + write_all_fn: *const fn ([*c]Context, [*c]SettingsHandler, [*c]TextBuffer) void, + user_data: ?*anyopaque, +}; + +pub const MetricsConfig = extern struct { // struct ImGuiMetricsConfig + show_debug_log: bool, + show_stack_tool: bool, + show_windows_rects: bool, + show_windows_begin_order: bool, + show_tables_rects: bool, + show_draw_cmd_mesh: bool, + show_draw_cmd_bounding_boxes: bool, + show_docking_nodes: bool, + show_windows_rects_type: c_int, + show_tables_rects_type: c_int, +}; + +pub const StackLevelInfoVector = extern struct { // struct ImVector_ImGuiStackLevelInfo + size: c_int, + capacity: c_int, + data: [*c]StackLevelInfo, +}; + +pub const StackTool = extern struct { // struct ImGuiStackTool + last_active_frame: c_int, + stack_level: c_int, + query_id: ID, + results: StackLevelInfoVector, + copy_to_clipboard_on_ctrl_c: bool, + copy_to_clipboard_last_time: f32, +}; + +pub const ContextHook = extern struct { // struct ImGuiContextHook + hook_id: ID, + type: ContextHookType, + owner: ID, + callback: ContextHookCallback, + user_data: ?*anyopaque, +}; + +pub const InputEventVector = extern struct { // struct ImVector_ImGuiInputEvent + size: c_int, + capacity: c_int, + data: [*c]InputEvent, +}; + +pub const WindowStackDataVector = extern struct { // struct ImVector_ImGuiWindowStackData + size: c_int, + capacity: c_int, + data: [*c]WindowStackData, +}; + +pub const ColorModVector = extern struct { // struct ImVector_ImGuiColorMod + size: c_int, + capacity: c_int, + data: [*c]ColorMod, +}; + +pub const StyleModVector = extern struct { // struct ImGuiStyleMod + size: c_int, + capacity: c_int, + data: [*c]StyleMod, +}; + +pub const IDVector = extern struct { // struct ImGuiID + size: c_int, + capacity: c_int, + data: [*c]ID, +}; + +pub const ItemFlagsVector = extern struct { // struct ImGuiItemFlags + size: c_int, + capacity: c_int, + data: [*c]ItemFlags, +}; + +pub const GroupDataVector = extern struct { // struct ImGuiGroupData + size: c_int, + capacity: c_int, + data: [*c]GroupData, +}; + +pub const PopupDataVector = extern struct { // struct ImGuiPopupData + size: c_int, + capacity: c_int, + data: [*c]PopupData, +}; + +pub const ViewportPPtrVector = extern struct { // struct ImGuiViewportPPtr + size: c_int, + capacity: c_int, + data: [*c][*c]ViewportP, +}; + +pub const ListClipperDataVector = extern struct { // struct ImGuiListClipperData + size: c_int, + capacity: c_int, + data: [*c]ListClipperData, +}; + +pub const TableTempDataVector = extern struct { // struct ImVector_ImGuiTableTempData + size: c_int, + capacity: c_int, + data: [*c]TableTempData, +}; + +pub const TableVector = extern struct { // struct ImVector_ImGuiTable + size: c_int, + capacity: c_int, + data: [*c]Table, +}; + +pub const TabBarVector = extern struct { // struct ImVector_ImGuiTabBar + size: c_int, + capacity: c_int, + data: [*c]TabBar, +}; + +pub const PtrOrIndexVector = extern struct { // struct ImVector_ImGuiPtrOrIndex + size: c_int, + capacity: c_int, + data: [*c]PtrOrIndex, +}; + +pub const ShrinkWidthItemVector = extern struct { // struct ImVector_ImGuiShrinkWidthItem + size: c_int, + capacity: c_int, + data: [*c]ShrinkWidthItem, +}; + +pub const ShrinkWidthItem = extern struct { // struct ImVector_ImGuiShrinkWidthItem + index: c_int, + width: f32, + initial_width: f32, +}; + +pub const SettingsHandlerVector = extern struct { // struct ImVector_ImGuiSettingsHandler + size: c_int, + capacity: c_int, + data: [*c]SettingsHandler, +}; + +pub const ContextHookVector = extern struct { // struct ImVector_ImGuiContextHook + size: c_int, + capacity: c_int, + data: [*c]ContextHook, +}; + +pub const u8Vector = extern struct { // struct ImVector_unsigned_char + size: c_int, + capacity: c_int, + data: [*c]u8, +}; + +pub const TablePool = extern struct { // struct ImPool_ImGuiTable + buf: TableVector, + map: Storage, + free_idx: PoolIdx, + alive_count: PoolIdx, +}; + +pub const TabBarPool = extern struct { // struct ImPool_ImGuiTabBar + buf: TabBarVector, + map: Storage, + free_idx: PoolIdx, + alive_count: PoolIdx, +}; + +pub const TabItemVector = extern struct { // struct ImVector_ImGuiTabItem + size: c_int, + capacity: c_int, + data: [*c]TabItem, +}; + +pub const WindowSettingsChunkStream = extern struct { // struct ImChunkStream_ImGuiWindowSettings + buf: u8Vector, +}; + +pub const TableSettingsChunkStream = extern struct { // struct ImChunkStream_ImGuiTableSettings + buf: u8Vector, +}; + +pub const TabItem = extern struct { // struct ImGuiTabItem + i_d: ID, + flags: TabItemFlags, + window: [*c]Window, + last_frame_visible: c_int, + last_frame_selected: c_int, + offset: f32, + width: f32, + content_width: f32, + requested_width: f32, + name_offset: S32, + begin_order: S16, + index_during_layout: S16, + want_close: bool, +}; + +pub const TabBar = extern struct { // struct ImGuiTabBar + tabs: TabItemVector, + flags: TabBarFlags, + i_d: ID, + selected_tab_id: ID, + next_selected_tab_id: ID, + visible_tab_id: ID, + curr_frame_visible: c_int, + prev_frame_visible: c_int, + bar_rect: Rect, + curr_tabs_contents_height: f32, + prev_tabs_contents_height: f32, + width_all_tabs: f32, + width_all_tabs_ideal: f32, + scrolling_anim: f32, + scrolling_target: f32, + scrolling_target_dist_to_visibility: f32, + scrolling_speed: f32, + scrolling_rect_min_x: f32, + scrolling_rect_max_x: f32, + reorder_request_tab_id: ID, + reorder_request_offset: S16, + begin_count: S8, + want_layout: bool, + visible_tab_was_submitted: bool, + tabs_added_new: bool, + tabs_active_count: S16, + last_tab_item_idx: S16, + item_spacing_y: f32, + frame_padding: Vec2, + backup_cursor_pos: Vec2, + tabs_names: TextBuffer, +}; + +pub const TableTempData = extern struct { // struct ImGuiTableTempData + table_index: c_int, + last_time_active: f32, + user_outer_size: Vec2, + draw_splitter: DrawListSplitter, + host_backup_work_rect: Rect, + host_backup_parent_work_rect: Rect, + host_backup_prev_line_size: Vec2, + host_backup_curr_line_size: Vec2, + host_backup_cursor_max_pos: Vec2, + host_backup_columns_offset: Vec1, + host_backup_item_width: f32, + host_backup_item_width_stack_size: c_int, +}; +pub const ContextHookCallback = *const fn ([*c]Context, [*c]ContextHook) void; + +pub const TableSettings = extern struct { // struct ImGuiTableSettings + id: ID, + save_flags: TableFlags, + ref_scale: f32, + columns_count: TableColumnIdx, + columns_count_max: TableColumnIdx, + want_apply: bool, +}; + +pub const FontBuilderIO = extern struct { // struct ImFontBuilderIO + font_builder_build: *const fn ([*c]FontAtlas) callconv(.C) bool, +}; + +pub const TableCellData = extern struct { // struct ImGuiTableCellData + bg_color: U32, + column: TableColumnIdx, +}; + +pub const TableInstanceData = extern struct { // struct ImGuiTableInstanceData + last_outer_height: f32, + last_first_row_height: f32, +}; + +pub const TableColumnSpan = extern struct { // struct ImSpan_ImGuiTableColumn + data: [*c]TableColumn, + data_end: [*c]TableColumn, +}; + +pub const TableColumnIdxSpan = extern struct { // struct ImSpan_ImGuiTableColumnIdx + data: [*c]TableColumnIdx, + data_end: [*c]TableColumnIdx, +}; + +pub const TableCellDataSpan = extern struct { // struct ImSpan_ImGuiTableCellData + data: [*c]TableCellData, + data_end: [*c]TableCellData, +}; + +pub const TableInstanceDataVector = extern struct { // struct ImVector_ImGuiTableInstanceData + size: c_int, + capacity: c_int, + data: [*c]TableInstanceData, +}; + +pub const TableColumnSortSpecsVector = extern struct { // struct ImVector_ImGuiTableColumnSortSpecs + size: c_int, + capacity: c_int, + data: [*c]TableColumnSortSpecs, +}; + +pub const TextBuffer = extern struct { // struct ImGuiTextBuffer + buf: u8Vector, +}; + +pub const TableColumnIdx = S8; // ImGuiTableColumnIdx +pub const TableDrawChannelIdx = U8; // ImGuiTableDrawChannelIdx + +pub const Context = extern struct { // struct ImGuiContext + initialized: bool, + font_atlas_owned_by_context: bool, + io: Io, + platform_i_o: PlatformIO, + input_events_queue: InputEventVector, + input_events_trail: InputEventVector, + style: Style, + config_flags_curr_frame: ConfigFlags, + config_flags_last_frame: ConfigFlags, + font: [*c]Font, + font_size: f32, + font_base_size: f32, + draw_list_shared_data: DrawListSharedData, + time: f64, + frame_count: c_int, + frame_count_ended: c_int, + frame_count_platform_ended: c_int, + frame_count_rendered: c_int, + within_frame_scope: bool, + within_frame_scope_with_implicit_window: bool, + within_end_child: bool, + gc_compact_all: bool, + test_engine_hook_items: bool, + test_engine: ?*anyopaque, + windows: WindowPtrVector, + windows_focus_order: WindowPtrVector, + windows_temp_sort_buffer: WindowPtrVector, + current_window_stack: WindowStackDataVector, + windows_by_id: Storage, + windows_active_count: c_int, + windows_hover_padding: Vec2, + current_window: [*c]Window, + hovered_window: [*c]Window, + hovered_window_under_moving_window: [*c]Window, + hovered_dock_node: [*c]DockNode, + moving_window: [*c]Window, + wheeling_window: [*c]Window, + wheeling_window_ref_mouse_pos: Vec2, + wheeling_window_timer: f32, + debug_hook_id_info: ID, + hovered_id: ID, + hovered_id_previous_frame: ID, + hovered_id_allow_overlap: bool, + hovered_id_using_mouse_wheel: bool, + hovered_id_previous_frame_using_mouse_wheel: bool, + hovered_id_disabled: bool, + hovered_id_timer: f32, + hovered_id_not_active_timer: f32, + active_id: ID, + active_id_is_alive: ID, + active_id_timer: f32, + active_id_is_just_activated: bool, + active_id_allow_overlap: bool, + active_id_no_clear_on_focus_loss: bool, + active_id_has_been_pressed_before: bool, + active_id_has_been_edited_before: bool, + active_id_has_been_edited_this_frame: bool, + active_id_click_offset: Vec2, + active_id_window: [*c]Window, + active_id_source: InputSource, + active_id_mouse_button: c_int, + active_id_previous_frame: ID, + active_id_previous_frame_is_alive: bool, + active_id_previous_frame_has_been_edited_before: bool, + active_id_previous_frame_window: [*c]Window, + last_active_id: ID, + last_active_id_timer: f32, + active_id_using_mouse_wheel: bool, + active_id_using_nav_dir_mask: U32, + active_id_using_nav_input_mask: U32, + active_id_using_key_input_mask: BitArrayForNamedKeys, + current_item_flags: ItemFlags, + next_item_data: NextItemData, + last_item_data: LastItemData, + next_window_data: NextWindowData, + color_stack: ColorModVector, + style_var_stack: StyleModVector, + font_stack: FontPtrVector, + focus_scope_stack: IDVector, + item_flags_stack: ItemFlagsVector, + group_stack: GroupDataVector, + open_popup_stack: PopupDataVector, + begin_popup_stack: PopupDataVector, + begin_menu_count: c_int, + viewports: ViewportPPtrVector, + current_dpi_scale: f32, + current_viewport: [*c]ViewportP, + mouse_viewport: [*c]ViewportP, + mouse_last_hovered_viewport: [*c]ViewportP, + platform_last_focused_viewport_id: ID, + fallback_monitor: PlatformMonitor, + viewport_front_most_stamp_count: c_int, + nav_window: [*c]Window, + nav_id: ID, + nav_focus_scope_id: ID, + nav_activate_id: ID, + nav_activate_down_id: ID, + nav_activate_pressed_id: ID, + nav_activate_input_id: ID, + nav_activate_flags: ActivateFlags, + nav_just_moved_to_id: ID, + nav_just_moved_to_focus_scope_id: ID, + nav_just_moved_to_key_mods: ModFlags, + nav_next_activate_id: ID, + nav_next_activate_flags: ActivateFlags, + nav_input_source: InputSource, + nav_layer: NavLayer, + nav_id_is_alive: bool, + nav_mouse_pos_dirty: bool, + nav_disable_highlight: bool, + nav_disable_mouse_hover: bool, + nav_any_request: bool, + nav_init_request: bool, + nav_init_request_from_move: bool, + nav_init_result_id: ID, + nav_init_result_rect_rel: Rect, + nav_move_submitted: bool, + nav_move_scoring_items: bool, + nav_move_forward_to_next_frame: bool, + nav_move_flags: NavMoveFlags, + nav_move_scroll_flags: ScrollFlags, + nav_move_key_mods: ModFlags, + nav_move_dir: Dir, + nav_move_dir_for_debug: Dir, + nav_move_clip_dir: Dir, + nav_scoring_rect: Rect, + nav_scoring_no_clip_rect: Rect, + nav_scoring_debug_count: c_int, + nav_tabbing_dir: c_int, + nav_tabbing_counter: c_int, + nav_move_result_local: NavItemData, + nav_move_result_local_visible: NavItemData, + nav_move_result_other: NavItemData, + nav_tabbing_result_first: NavItemData, + nav_windowing_target: [*c]Window, + nav_windowing_target_anim: [*c]Window, + nav_windowing_list_window: [*c]Window, + nav_windowing_timer: f32, + nav_windowing_highlight_alpha: f32, + nav_windowing_toggle_layer: bool, + dim_bg_ratio: f32, + mouse_cursor: MouseCursor, + drag_drop_active: bool, + drag_drop_within_source: bool, + drag_drop_within_target: bool, + drag_drop_source_flags: DragDropFlags, + drag_drop_source_frame_count: c_int, + drag_drop_mouse_button: c_int, + drag_drop_payload: Payload, + drag_drop_target_rect: Rect, + drag_drop_target_id: ID, + drag_drop_accept_flags: DragDropFlags, + drag_drop_accept_id_curr_rect_surface: f32, + drag_drop_accept_id_curr: ID, + drag_drop_accept_id_prev: ID, + drag_drop_accept_frame_count: c_int, + drag_drop_hold_just_pressed_id: ID, + drag_drop_payload_buf_heap: u8Vector, + drag_drop_payload_buf_local: [16]u8, + clipper_temp_data_stacked: c_int, + clipper_temp_data: ListClipperDataVector, + current_table: [*c]Table, + tables_temp_data_stacked: c_int, + tables_temp_data: TableTempDataVector, + tables: Table, + tables_last_time_active: f32Vector, + draw_channels_temp_merge_buffer: DrawChannelVector, + current_tab_bar: [*c]TabBar, + tab_bars: TabBar, + current_tab_bar_stack: PtrOrIndexVector, + shrink_width_buffer: ShrinkWidthItemVector, + mouse_last_valid_pos: Vec2, + input_text_state: InputTextState, + input_text_password_font: Font, + temp_input_id: ID, + color_edit_options: ColorEditFlags, + color_edit_last_hue: f32, + color_edit_last_sat: f32, + color_edit_last_color: U32, + color_picker_ref: Vec4, + combo_preview_data: ComboPreviewData, + slider_grab_click_offset: f32, + slider_current_accum: f32, + slider_current_accum_dirty: bool, + drag_current_accum_dirty: bool, + drag_current_accum: f32, + drag_speed_default_ratio: f32, + scrollbar_click_delta_to_grab_center: f32, + disabled_alpha_backup: f32, + disabled_stack_size: c_short, + tooltip_override_count: c_short, + tooltip_slow_delay: f32, + clipboard_handler_data: u8Vector, + menus_id_submitted_this_frame: IDVector, + platform_ime_data: PlatformImeData, + platform_ime_data_prev: PlatformImeData, + platform_ime_viewport: ID, + platform_locale_decimal_point: u8, + dock_context: DockContext, + settings_loaded: bool, + settings_dirty_timer: f32, + settings_ini_data: TextBuffer, + settings_handlers: SettingsHandlerVector, + settings_windows: WindowSettings, + settings_tables: TableSettings, + hooks: ContextHookVector, + hook_id_next: ID, + log_enabled: bool, + log_type: LogType, + log_file: FileHandle, + log_buffer: TextBuffer, + log_next_prefix: [*c]const u8, + log_next_suffix: [*c]const u8, + log_line_pos_y: f32, + log_line_first_item: bool, + log_depth_ref: c_int, + log_depth_to_expand: c_int, + log_depth_to_expand_default: c_int, + debug_log_flags: DebugLogFlags, + debug_log_buf: TextBuffer, + debug_item_picker_active: bool, + debug_item_picker_break_id: ID, + debug_metrics_config: MetricsConfig, + debug_stack_tool: StackTool, + framerate_sec_per_frame: [120]f32, + framerate_sec_per_frame_idx: c_int, + framerate_sec_per_frame_count: c_int, + framerate_sec_per_frame_accum: f32, + want_capture_mouse_next_frame: c_int, + want_capture_keyboard_next_frame: c_int, + want_text_input_next_frame: c_int, + temp_buffer: u8Vector, +}; + +pub const DrawChannelVector = extern struct { // struct ImVector_ImDrawChannel + size: c_int, + capacity: c_int, + data: [*c]DrawChannel, +}; + +pub const DrawChannel = extern struct { // struct ImDrawChannel + _cmd_buffer: DrawCmdVector, + _idx_buffer: DrawIdxVector, +}; + +pub const DrawCmdVector = extern struct { // struct ImVector_ImDrawCmd + size: c_int, + capacity: c_int, + data: [*c]DrawCmd, +}; + +pub const DrawIdxVector = extern struct { // struct ImVector_ImDrawIdx + size: c_int, + capacity: c_int, + data: [*c]DrawIdx, +}; + +pub const f32Vector = extern struct { // struct ImVector_float + size: c_int, + capacity: c_int, + data: [*c]f32, +}; + +pub const FontPtrVector = extern struct { // struct ImVector_ImFontPtr + size: c_int, + capacity: c_int, + data: [*c]Font, +}; + +pub const Payload = extern struct { // struct ImGuiPayload + data: ?*anyopaque, + data_size: c_int, + source_id: ID, + source_parent_id: ID, + data_frame_count: c_int, + data_type: [32 + 1]u8, + preview: bool, + delivery: bool, +}; + +pub const ListClipper = extern struct { // struct ImGuiListClipper + display_start: c_int, + display_end: c_int, + items_count: c_int, + items_height: f32, + start_pos_y: f32, + temp_data: ?*anyopaque, +}; + +pub const Storage = struct { // struct ImGuiStorage + data: StoragePairVector, +}; + +pub const StoragePairVector = struct { + size: c_int, + capacity: c_int, + data: ?*StoragePair, +}; + +pub const WindowClass = extern struct { // struct ImGuiWindowClass + class_id: ID, + parent_viewport_id: ID, + viewport_flags_override_set: ViewportFlags, + viewport_flags_override_clear: ViewportFlags, + tab_item_flags_override_set: TabItemFlags, + dock_node_flags_override_set: DockNodeFlags, + docking_always_tab_bar: bool, + docking_allow_unclassed: bool, +}; + +pub const InputTextCallbackData = extern struct { // struct ImGuiInputTextCallbackData + event_flag: InputTextFlags, + flags: InputTextFlags, + user_data: ?*anyopaque, + event_char: Wchar, + event_key: Key, + buf: [*c]u8, + buf_text_len: c_int, + buf_size: c_int, + buf_dirty: bool, + cursor_pos: c_int, + selection_start: c_int, + selection_end: c_int, +}; + +pub const SizeCallbackData = extern struct { // struct ImGuiSizeCallbackData + user_data: ?*anyopaque, + pos: Vec2, + current_size: Vec2, + desired_size: Vec2, +}; + +pub const DrawData = extern struct { // struct ImDrawData + valid: bool, + cmd_lists_count: c_int, + total_idx_count: c_int, + total_vtx_count: c_int, + cmd_lists: [*c]DrawList, + display_pos: Vec2, + display_size: Vec2, + framebuffer_scale: Vec2, + owner_viewport: [*c]Viewport, +}; + +pub const FontGlyphVector = extern struct { // struct ImVector_ImFontGlyph + size: c_int, + capacity: c_int, + data: ?*FontGlyph, +}; + +pub const Font = extern struct { // struct ImFont + index_advance_x: f32Vector, + fallback_advance_x: f32, + font_size: f32, + index_lookup: WcharVector, + glyphs: FontGlyphVector, + fallback_glyph: ?*FontGlyph, + container_atlas: [*c]FontAtlas, + config_data: [*c]const FontConfig, + config_data_count: c_short, + fallback_char: Wchar, + ellipsis_char: Wchar, + dot_char: Wchar, + dirty_lookup_tables: bool, + scale: f32, + ascent: f32, + descent: f32, + metrics_total_surface: c_int, + used4k_pages_map: [(0xFFFF + 1) / 4096 / 8]U8, +}; + +pub const DrawCmd = extern struct { // struct ImDrawCmd + clip_rect: Vec4, + texture_id: TextureID, + vtx_offset: c_uint, + idx_offset: c_uint, + elem_count: c_uint, + user_callback: DrawCallback, + user_callback_data: ?*anyopaque, +}; + +pub const DrawVert = extern struct { // struct ImDrawVert + pos: Vec2, + uv: Vec2, + col: U32, +}; + +pub const DrawCmdHeader = extern struct { // struct ImDrawCmdHeader + clip_rect: Vec4, + texture_id: TextureID, + vtx_offset: c_uint, +}; + +pub const DrawListSplitter = extern struct { // struct ImDrawListSplitter + _current: c_int, + _count: c_int, + _channels: DrawChannelVector, +}; + +pub inline fn createContext(shared_font_atlas: [*c]FontAtlas) [*c]Context { //igCreateContext + return c.igCreateContext(shared_font_atlas); +} +pub inline fn destroyContext(ctx: [*c]Context) void { //igDestroyContext + c.igDestroyContext(ctx); +} +pub inline fn getCurrentContext() ?*Context { //igGetCurrentContext + return @ptrCast(c.igGetCurrentContext()); +} +pub inline fn setCurrentContext(ctx: [*c]Context) void { //igSetCurrentContext + c.igSetCurrentContext(ctx); +} +pub inline fn getIO() ?*Io { //igGetIO + return @ptrCast(c.igGetIO()); +} +pub inline fn getStyle() ?*Style { //igGetStyle + return @ptrCast(c.igGetStyle()); +} +pub inline fn newFrame() void { //igNewFrame + c.igNewFrame(); +} +pub inline fn endFrame() void { //igEndFrame + c.igEndFrame(); +} +pub inline fn render() void { //igRender + c.igRender(); +} +pub inline fn getDrawData() [*c]DrawData { //igGetDrawData + return c.igGetDrawData(); +} +pub inline fn showDemoWindow(p_open: [*c]bool) void { //igShowDemoWindow + c.igShowDemoWindow(p_open); +} +pub inline fn showMetricsWindow(p_open: [*c]bool) void { //igShowMetricsWindow + c.igShowMetricsWindow(p_open); +} +pub inline fn showDebugLogWindow(p_open: [*c]bool) void { //igShowDebugLogWindow + c.igShowDebugLogWindow(p_open); +} +pub inline fn showStackToolWindow(p_open: [*c]bool) void { //igShowStackToolWindow + c.igShowStackToolWindow(p_open); +} +pub inline fn showAboutWindow(p_open: [*c]bool) void { //igShowAboutWindow + c.igShowAboutWindow(p_open); +} +pub inline fn showStyleEditor(ref: [*c]Style) void { //igShowStyleEditor + c.igShowStyleEditor(ref); +} +pub inline fn showStyleSelector(label: [*c]const u8) bool { //igShowStyleSelector + return c.igShowStyleSelector(label); +} +pub inline fn showFontSelector(label: [*c]const u8) void { //igShowFontSelector + c.igShowFontSelector(label); +} +pub inline fn showUserGuide() void { //igShowUserGuide + c.igShowUserGuide(); +} +pub inline fn getVersion() [*c]const u8 { //igGetVersion + return c.igGetVersion(); +} +pub inline fn styleColorsDark(dst: [*c]Style) void { //igStyleColorsDark + c.igStyleColorsDark(dst); +} +pub inline fn styleColorsLight(dst: [*c]Style) void { //igStyleColorsLight + c.igStyleColorsLight(dst); +} +pub inline fn styleColorsClassic(dst: [*c]Style) void { //igStyleColorsClassic + c.igStyleColorsClassic(dst); +} +pub inline fn begin(name: [*c]const u8, p_open: [*c]bool, flags: WindowFlags) bool { //igBegin + return c.igBegin(name, p_open, @bitCast(flags)); +} +pub inline fn end() void { //igEnd + c.igEnd(); +} +pub inline fn beginChild_Str(str_id: [*c]const u8, size: Vec2, border: bool, flags: WindowFlags) bool { //igBeginChild_Str + return c.igBeginChild_Str(str_id, @bitCast(size), border, @bitCast(flags)); +} +pub inline fn beginChild_ID(id: ID, size: Vec2, border: bool, flags: WindowFlags) bool { //igBeginChild_ID + return c.igBeginChild_ID(id, @bitCast(size), border, @bitCast(flags)); +} +pub inline fn endChild() void { //igEndChild + c.igEndChild(); +} +pub inline fn isWindowAppearing() bool { //igIsWindowAppearing + return c.igIsWindowAppearing(); +} +pub inline fn isWindowCollapsed() bool { //igIsWindowCollapsed + return c.igIsWindowCollapsed(); +} +pub inline fn isWindowFocused(flags: FocusedFlags) bool { //igIsWindowFocused + return c.igIsWindowFocused(@bitCast(flags)); +} +pub inline fn isWindowHovered(flags: HoveredFlags) bool { //igIsWindowHovered + return c.igIsWindowHovered(@bitCast(flags)); +} +pub inline fn getWindowDrawList() [*c]DrawList { //igGetWindowDrawList + return c.igGetWindowDrawList(); +} +pub inline fn getWindowDpiScale() f32 { //igGetWindowDpiScale + return c.igGetWindowDpiScale(); +} +pub inline fn getWindowPos(pout: [*c]Vec2) void { //igGetWindowPos + c.igGetWindowPos(pout); +} +pub inline fn getWindowSize(pout: [*c]Vec2) void { //igGetWindowSize + c.igGetWindowSize(pout); +} +pub inline fn getWindowWidth() f32 { //igGetWindowWidth + return c.igGetWindowWidth(); +} +pub inline fn getWindowHeight() f32 { //igGetWindowHeight + return c.igGetWindowHeight(); +} +pub inline fn getWindowViewport() [*c]Viewport { //igGetWindowViewport + return c.igGetWindowViewport(); +} +pub inline fn setNextWindowPos(pos: Vec2, cond: Cond, pivot: Vec2) void { //igSetNextWindowPos + c.igSetNextWindowPos(@bitCast(pos), @bitCast(cond), @bitCast(pivot)); +} +pub inline fn setNextWindowSize(size: Vec2, cond: Cond) void { //igSetNextWindowSize + c.igSetNextWindowSize(@bitCast(size), @bitCast(cond)); +} +pub inline fn setNextWindowSizeConstraints(size_min: Vec2, size_max: Vec2, custom_callback: SizeCallback, custom_callback_data: ?*anyopaque) void { //igSetNextWindowSizeConstraints + c.igSetNextWindowSizeConstraints(@bitCast(size_min), @bitCast(size_max), custom_callback, custom_callback_data); +} +pub inline fn setNextWindowContentSize(size: Vec2) void { //igSetNextWindowContentSize + c.igSetNextWindowContentSize(@bitCast(size)); +} +pub inline fn setNextWindowCollapsed(collapsed: bool, cond: Cond) void { //igSetNextWindowCollapsed + c.igSetNextWindowCollapsed(collapsed, @bitCast(cond)); +} +pub inline fn setNextWindowFocus() void { //igSetNextWindowFocus + c.igSetNextWindowFocus(); +} +pub inline fn setNextWindowBgAlpha(alpha: f32) void { //igSetNextWindowBgAlpha + c.igSetNextWindowBgAlpha(alpha); +} +pub inline fn setNextWindowViewport(viewport_id: ID) void { //igSetNextWindowViewport + c.igSetNextWindowViewport(viewport_id); +} +pub inline fn setWindowPos_Vec2(pos: Vec2, cond: Cond) void { //igSetWindowPos_Vec2 + c.igSetWindowPos_Vec2(@bitCast(pos), @bitCast(cond)); +} +pub inline fn setWindowSize_Vec2(size: Vec2, cond: Cond) void { //igSetWindowSize_Vec2 + c.igSetWindowSize_Vec2(@bitCast(size), @bitCast(cond)); +} +pub inline fn setWindowCollapsed_Bool(collapsed: bool, cond: Cond) void { //igSetWindowCollapsed_Bool + c.igSetWindowCollapsed_Bool(collapsed, @bitCast(cond)); +} +pub inline fn setWindowFocus_Nil() void { //igSetWindowFocus_Nil + c.igSetWindowFocus_Nil(); +} +pub inline fn setWindowFontScale(scale: f32) void { //igSetWindowFontScale + c.igSetWindowFontScale(scale); +} +pub inline fn setWindowPos_Str(name: [*c]const u8, pos: Vec2, cond: Cond) void { //igSetWindowPos_Str + c.igSetWindowPos_Str(name, @bitCast(pos), @bitCast(cond)); +} +pub inline fn setWindowSize_Str(name: [*c]const u8, size: Vec2, cond: Cond) void { //igSetWindowSize_Str + c.igSetWindowSize_Str(name, @bitCast(size), @bitCast(cond)); +} +pub inline fn setWindowCollapsed_Str(name: [*c]const u8, collapsed: bool, cond: Cond) void { //igSetWindowCollapsed_Str + c.igSetWindowCollapsed_Str(name, collapsed, @bitCast(cond)); +} +pub inline fn setWindowFocus_Str(name: [*c]const u8) void { //igSetWindowFocus_Str + c.igSetWindowFocus_Str(name); +} +pub inline fn getContentRegionAvail(pout: [*c]Vec2) void { //igGetContentRegionAvail + c.igGetContentRegionAvail(pout); +} +pub inline fn getContentRegionMax(pout: [*c]Vec2) void { //igGetContentRegionMax + c.igGetContentRegionMax(pout); +} +pub inline fn getWindowContentRegionMin(pout: [*c]Vec2) void { //igGetWindowContentRegionMin + c.igGetWindowContentRegionMin(pout); +} +pub inline fn getWindowContentRegionMax(pout: [*c]Vec2) void { //igGetWindowContentRegionMax + c.igGetWindowContentRegionMax(pout); +} +pub inline fn getScrollX() f32 { //igGetScrollX + return c.igGetScrollX(); +} +pub inline fn getScrollY() f32 { //igGetScrollY + return c.igGetScrollY(); +} +pub inline fn setScrollX_Float(scroll_x: f32) void { //igSetScrollX_Float + c.igSetScrollX_Float(scroll_x); +} +pub inline fn setScrollY_Float(scroll_y: f32) void { //igSetScrollY_Float + c.igSetScrollY_Float(scroll_y); +} +pub inline fn getScrollMaxX() f32 { //igGetScrollMaxX + return c.igGetScrollMaxX(); +} +pub inline fn getScrollMaxY() f32 { //igGetScrollMaxY + return c.igGetScrollMaxY(); +} +pub inline fn setScrollHereX(center_x_ratio: f32) void { //igSetScrollHereX + c.igSetScrollHereX(center_x_ratio); +} +pub inline fn setScrollHereY(center_y_ratio: f32) void { //igSetScrollHereY + c.igSetScrollHereY(center_y_ratio); +} +pub inline fn setScrollFromPosX_Float(local_x: f32, center_x_ratio: f32) void { //igSetScrollFromPosX_Float + c.igSetScrollFromPosX_Float(local_x, center_x_ratio); +} +pub inline fn setScrollFromPosY_Float(local_y: f32, center_y_ratio: f32) void { //igSetScrollFromPosY_Float + c.igSetScrollFromPosY_Float(local_y, center_y_ratio); +} +pub inline fn pushFont(font: [*c]Font) void { //igPushFont + c.igPushFont(font); +} +pub inline fn popFont() void { //igPopFont + c.igPopFont(); +} +pub inline fn pushStyleColor_U32(idx: StyleColor, col: U32) void { //igPushStyleColor_U32 + c.igPushStyleColor_U32(idx, col); +} +pub inline fn pushStyleColor_Vec4(idx: StyleColor, col: Vec4) void { //igPushStyleColor_Vec4 + c.igPushStyleColor_Vec4(idx, @bitCast(col)); +} +pub inline fn popStyleColor(count: c_int) void { //igPopStyleColor + c.igPopStyleColor(count); +} +pub inline fn pushStyleVar_Float(idx: StyleVar, val: f32) void { //igPushStyleVar_Float + c.igPushStyleVar_Float(@intFromEnum(idx), val); +} +pub inline fn pushStyleVar_Vec2(idx: StyleVar, val: Vec2) void { //igPushStyleVar_Vec2 + c.igPushStyleVar_Vec2(@intFromEnum(idx), @bitCast(val)); +} +pub inline fn popStyleVar(count: c_int) void { //igPopStyleVar + c.igPopStyleVar(count); +} +pub inline fn pushAllowKeyboardFocus(allow_keyboard_focus: bool) void { //igPushAllowKeyboardFocus + c.igPushAllowKeyboardFocus(allow_keyboard_focus); +} +pub inline fn popAllowKeyboardFocus() void { //igPopAllowKeyboardFocus + c.igPopAllowKeyboardFocus(); +} +pub inline fn pushButtonRepeat(repeat: bool) void { //igPushButtonRepeat + c.igPushButtonRepeat(repeat); +} +pub inline fn popButtonRepeat() void { //igPopButtonRepeat + c.igPopButtonRepeat(); +} +pub inline fn pushItemWidth(item_width: f32) void { //igPushItemWidth + c.igPushItemWidth(item_width); +} +pub inline fn popItemWidth() void { //igPopItemWidth + c.igPopItemWidth(); +} +pub inline fn setNextItemWidth(item_width: f32) void { //igSetNextItemWidth + c.igSetNextItemWidth(item_width); +} +pub inline fn calcItemWidth() f32 { //igCalcItemWidth + return c.igCalcItemWidth(); +} +pub inline fn pushTextWrapPos(wrap_local_pos_x: f32) void { //igPushTextWrapPos + c.igPushTextWrapPos(wrap_local_pos_x); +} +pub inline fn popTextWrapPos() void { //igPopTextWrapPos + c.igPopTextWrapPos(); +} +pub inline fn getFont() [*c]Font { //igGetFont + return c.igGetFont(); +} +pub inline fn getFontSize() f32 { //igGetFontSize + return c.igGetFontSize(); +} +pub inline fn getFontTexUvWhitePixel(pout: [*c]Vec2) void { //igGetFontTexUvWhitePixel + c.igGetFontTexUvWhitePixel(pout); +} +pub inline fn getColorU32_Col(idx: StyleColor, alpha_mul: f32) U32 { //igGetColorU32_Col + return c.igGetColorU32_Col(idx, alpha_mul); +} +pub inline fn getColorU32_Vec4(col: Vec4) U32 { //igGetColorU32_Vec4 + return c.igGetColorU32_Vec4(@bitCast(col)); +} +pub inline fn getColorU32_U32(col: U32) U32 { //igGetColorU32_U32 + return c.igGetColorU32_U32(col); +} +pub inline fn getStyleColorVec4(idx: StyleColor) [*c]const Vec4 { //igGetStyleColorVec4 + return c.igGetStyleColorVec4(idx); +} +pub inline fn separator() void { //igSeparator + c.igSeparator(); +} +pub inline fn sameLine(offset_from_start_x: f32, space: f32) void { //igSameLine + c.igSameLine(offset_from_start_x, space); +} +pub inline fn newLine() void { //igNewLine + c.igNewLine(); +} +pub inline fn spacing() void { //igSpacing + c.igSpacing(); +} +pub inline fn dummy(size: Vec2) void { //igDummy + c.igDummy(@bitCast(size)); +} +pub inline fn indent(indent_w: f32) void { //igIndent + c.igIndent(indent_w); +} +pub inline fn unindent(indent_w: f32) void { //igUnindent + c.igUnindent(indent_w); +} +pub inline fn beginGroup() void { //igBeginGroup + c.igBeginGroup(); +} +pub inline fn endGroup() void { //igEndGroup + c.igEndGroup(); +} +pub inline fn getCursorPos(pout: [*c]Vec2) void { //igGetCursorPos + c.igGetCursorPos(pout); +} +pub inline fn getCursorPosX() f32 { //igGetCursorPosX + return c.igGetCursorPosX(); +} +pub inline fn getCursorPosY() f32 { //igGetCursorPosY + return c.igGetCursorPosY(); +} +pub inline fn setCursorPos(local_pos: Vec2) void { //igSetCursorPos + c.igSetCursorPos(@bitCast(local_pos)); +} +pub inline fn setCursorPosX(local_x: f32) void { //igSetCursorPosX + c.igSetCursorPosX(local_x); +} +pub inline fn setCursorPosY(local_y: f32) void { //igSetCursorPosY + c.igSetCursorPosY(local_y); +} +pub inline fn getCursorStartPos(pout: [*c]Vec2) void { //igGetCursorStartPos + c.igGetCursorStartPos(pout); +} +pub inline fn getCursorScreenPos(pout: [*c]Vec2) void { //igGetCursorScreenPos + c.igGetCursorScreenPos(pout); +} +pub inline fn setCursorScreenPos(pos: Vec2) void { //igSetCursorScreenPos + c.igSetCursorScreenPos(@bitCast(pos)); +} +pub inline fn alignTextToFramePadding() void { //igAlignTextToFramePadding + c.igAlignTextToFramePadding(); +} +pub inline fn getTextLineHeight() f32 { //igGetTextLineHeight + return c.igGetTextLineHeight(); +} +pub inline fn getTextLineHeightWithSpacing() f32 { //igGetTextLineHeightWithSpacing + return c.igGetTextLineHeightWithSpacing(); +} +pub inline fn getFrameHeight() f32 { //igGetFrameHeight + return c.igGetFrameHeight(); +} +pub inline fn getFrameHeightWithSpacing() f32 { //igGetFrameHeightWithSpacing + return c.igGetFrameHeightWithSpacing(); +} +pub inline fn pushID_Str(str_id: [*c]const u8) void { //igPushID_Str + c.igPushID_Str(str_id); +} +pub inline fn pushID_StrStr(str_id_begin: [*c]const u8, str_id_end: [*c]const u8) void { //igPushID_StrStr + c.igPushID_StrStr(str_id_begin, str_id_end); +} +pub inline fn pushID_Ptr(ptr_id: [*c]const void) void { //igPushID_Ptr + c.igPushID_Ptr(ptr_id); +} +pub inline fn pushID_Int(int_id: c_int) void { //igPushID_Int + c.igPushID_Int(int_id); +} +pub inline fn popID() void { //igPopID + c.igPopID(); +} +pub inline fn getID_Str(str_id: [*c]const u8) ID { //igGetID_Str + return c.igGetID_Str(str_id); +} +pub inline fn getID_StrStr(str_id_begin: [*c]const u8, str_id_end: [*c]const u8) ID { //igGetID_StrStr + return c.igGetID_StrStr(str_id_begin, str_id_end); +} +pub inline fn getID_Ptr(ptr_id: [*c]const void) ID { //igGetID_Ptr + return c.igGetID_Ptr(ptr_id); +} +pub inline fn textUnformatted(text: [*c]const u8, text_end: [*c]const u8) void { //igTextUnformatted + c.igTextUnformatted(text, text_end); +} +pub inline fn button(label: [*c]const u8, size: Vec2) bool { //igButton + return c.igButton(label, @bitCast(size)); +} +pub inline fn smallButton(label: [*c]const u8) bool { //igSmallButton + return c.igSmallButton(label); +} +pub inline fn invisibleButton(str_id: [*c]const u8, size: Vec2, flags: ButtonFlags) bool { //igInvisibleButton + return c.igInvisibleButton(str_id, @bitCast(size), flags); +} +pub inline fn arrowButton(str_id: [*c]const u8, dir: Dir) bool { //igArrowButton + return c.igArrowButton(str_id, @intFromEnum(dir)); +} +pub inline fn image(user_texture_id: TextureID, size: Vec2, uv0: Vec2, uv1: Vec2, tint_col: Vec4, border_col: Vec4) void { //igImage + c.igImage(user_texture_id, @bitCast(size), @bitCast(uv0), @bitCast(uv1), @bitCast(tint_col), @bitCast(border_col)); +} +pub inline fn imageButton(user_texture_id: TextureID, size: Vec2, uv0: Vec2, uv1: Vec2, frame_padding: c_int, bg_col: Vec4, tint_col: Vec4) bool { //igImageButton + return c.igImageButton(user_texture_id, @bitCast(size), @bitCast(uv0), @bitCast(uv1), frame_padding, @bitCast(bg_col), @bitCast(tint_col)); +} +pub inline fn checkbox(label: [*c]const u8, v: [*c]bool) bool { //igCheckbox + return c.igCheckbox(label, v); +} +pub inline fn checkboxFlags_IntPtr(label: [*c]const u8, flags: [*c]c_int, flags_value: c_int) bool { //igCheckboxFlags_IntPtr + return c.igCheckboxFlags_IntPtr(label, flags, flags_value); +} +pub inline fn checkboxFlags_UintPtr(label: [*c]const u8, flags: [*c]c_uint, flags_value: c_uint) bool { //igCheckboxFlags_UintPtr + return c.igCheckboxFlags_UintPtr(label, flags, flags_value); +} +pub inline fn radioButton_Bool(label: [*c]const u8, active: bool) bool { //igRadioButton_Bool + return c.igRadioButton_Bool(label, active); +} +pub inline fn radioButton_IntPtr(label: [*c]const u8, v: [*c]c_int, v_button: c_int) bool { //igRadioButton_IntPtr + return c.igRadioButton_IntPtr(label, v, v_button); +} +pub inline fn progressBar(fraction: f32, size_arg: Vec2, overlay: [*c]const u8) void { //igProgressBar + c.igProgressBar(fraction, @bitCast(size_arg), overlay); +} +pub inline fn bullet() void { //igBullet + c.igBullet(); +} +pub inline fn beginCombo(label: [*c]const u8, preview_value: [*c]const u8, flags: ComboFlags) bool { //igBeginCombo + return c.igBeginCombo(label, preview_value, @bitCast(flags)); +} +pub inline fn endCombo() void { //igEndCombo + c.igEndCombo(); +} +pub inline fn combo_Str(label: [*c]const u8, current_item: [*c]c_int, items_separated_by_zeros: [*c]const u8, popup_max_height_in_items: c_int) bool { //igCombo_Str + return c.igCombo_Str(label, current_item, items_separated_by_zeros, popup_max_height_in_items); +} +pub inline fn dragFloat(label: [*c]const u8, v: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: SliderFlags) bool { //igDragFloat + return c.igDragFloat(label, v, v_speed, v_min, v_max, format, @bitCast(flags)); +} +pub inline fn dragFloatRange2(label: [*c]const u8, v_current_min: [*c]f32, v_current_max: [*c]f32, v_speed: f32, v_min: f32, v_max: f32, format: [*c]const u8, format_max: [*c]const u8, flags: SliderFlags) bool { //igDragFloatRange2 + return c.igDragFloatRange2(label, v_current_min, v_current_max, v_speed, v_min, v_max, format, format_max, @bitCast(flags)); +} +pub inline fn dragInt(label: [*c]const u8, v: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: SliderFlags) bool { //igDragInt + return c.igDragInt(label, v, v_speed, v_min, v_max, format, @bitCast(flags)); +} +pub inline fn dragIntRange2(label: [*c]const u8, v_current_min: [*c]c_int, v_current_max: [*c]c_int, v_speed: f32, v_min: c_int, v_max: c_int, format: [*c]const u8, format_max: [*c]const u8, flags: SliderFlags) bool { //igDragIntRange2 + return c.igDragIntRange2(label, v_current_min, v_current_max, v_speed, v_min, v_max, format, format_max, @bitCast(flags)); +} +pub inline fn dragScalar(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, v_speed: f32, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igDragScalar + return c.igDragScalar(label, @intFromEnum(data_type), p_data, v_speed, p_min, p_max, format, @bitCast(flags)); +} +pub inline fn dragScalarN(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, components: c_int, v_speed: f32, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igDragScalarN + return c.igDragScalarN(label, @intFromEnum(data_type), p_data, components, v_speed, p_min, p_max, format, @bitCast(flags)); +} +pub inline fn sliderFloat(label: [*c]const u8, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: SliderFlags) bool { //igSliderFloat + return c.igSliderFloat(label, v, v_min, v_max, format, @bitCast(flags)); +} +pub inline fn sliderAngle(label: [*c]const u8, v_rad: [*c]f32, v_degrees_min: f32, v_degrees_max: f32, format: [*c]const u8, flags: SliderFlags) bool { //igSliderAngle + return c.igSliderAngle(label, v_rad, v_degrees_min, v_degrees_max, format, @bitCast(flags)); +} +pub inline fn sliderInt(label: [*c]const u8, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: SliderFlags) bool { //igSliderInt + return c.igSliderInt(label, v, v_min, v_max, format, @bitCast(flags)); +} +pub inline fn sliderScalar(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igSliderScalar + return c.igSliderScalar(label, @intFromEnum(data_type), p_data, p_min, p_max, format, @bitCast(flags)); +} +pub inline fn sliderScalarN(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, components: c_int, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igSliderScalarN + return c.igSliderScalarN(label, @intFromEnum(data_type), p_data, components, p_min, p_max, format, @bitCast(flags)); +} +pub inline fn vSliderFloat(label: [*c]const u8, size: Vec2, v: [*c]f32, v_min: f32, v_max: f32, format: [*c]const u8, flags: SliderFlags) bool { //igVSliderFloat + return c.igVSliderFloat(label, @bitCast(size), v, v_min, v_max, format, @bitCast(flags)); +} +pub inline fn vSliderInt(label: [*c]const u8, size: Vec2, v: [*c]c_int, v_min: c_int, v_max: c_int, format: [*c]const u8, flags: SliderFlags) bool { //igVSliderInt + return c.igVSliderInt(label, @bitCast(size), v, v_min, v_max, format, @bitCast(flags)); +} +pub inline fn vSliderScalar(label: [*c]const u8, size: Vec2, data_type: DataType, p_data: ?*anyopaque, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igVSliderScalar + return c.igVSliderScalar(label, @bitCast(size), @intFromEnum(data_type), p_data, p_min, p_max, format, @bitCast(flags)); +} +pub inline fn inputText(label: [*c]const u8, buf: [*c]u8, buf_size: usize, flags: InputTextFlags, callback: InputTextCallback, user_data: ?*anyopaque) bool { //igInputText + return c.igInputText(label, buf, buf_size, @bitCast(flags), callback, user_data); +} +pub inline fn inputTextMultiline(label: [*c]const u8, buf: [*c]u8, buf_size: usize, size: Vec2, flags: InputTextFlags, callback: InputTextCallback, user_data: ?*anyopaque) bool { //igInputTextMultiline + return c.igInputTextMultiline(label, buf, buf_size, @bitCast(size), @bitCast(flags), callback, user_data); +} +pub inline fn inputTextWithHint(label: [*c]const u8, hint: [*c]const u8, buf: [*c]u8, buf_size: usize, flags: InputTextFlags, callback: InputTextCallback, user_data: ?*anyopaque) bool { //igInputTextWithHint + return c.igInputTextWithHint(label, hint, buf, buf_size, @bitCast(flags), callback, user_data); +} +pub inline fn inputFloat(label: [*c]const u8, v: [*c]f32, step: f32, step_fast: f32, format: [*c]const u8, flags: InputTextFlags) bool { //igInputFloat + return c.igInputFloat(label, v, step, step_fast, format, @bitCast(flags)); +} +pub inline fn inputInt(label: [*c]const u8, v: [*c]c_int, step: c_int, step_fast: c_int, flags: InputTextFlags) bool { //igInputInt + return c.igInputInt(label, v, step, step_fast, @bitCast(flags)); +} + +pub inline fn inputDouble(label: [*c]const u8, v: [*c]f64, step: f64, step_fast: f64, format: [*c]const u8, flags: InputTextFlags) bool { //igInputDouble + return c.igInputDouble(label, v, step, step_fast, format, @bitCast(flags)); +} +pub inline fn inputScalar(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, p_step: [*c]const void, p_step_fast: [*c]const void, format: [*c]const u8, flags: InputTextFlags) bool { //igInputScalar + return c.igInputScalar(label, @intFromEnum(data_type), p_data, p_step, p_step_fast, format, @bitCast(flags)); +} +pub inline fn inputScalarN(label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, components: c_int, p_step: [*c]const void, p_step_fast: [*c]const void, format: [*c]const u8, flags: InputTextFlags) bool { //igInputScalarN + return c.igInputScalarN(label, @intFromEnum(data_type), p_data, components, p_step, p_step_fast, format, @bitCast(flags)); +} +pub inline fn colorButton(desc_id: [*c]const u8, col: Vec4, flags: ColorEditFlags, size: Vec2) bool { //igColorButton + return c.igColorButton(desc_id, @bitCast(col), @bitCast(flags), @bitCast(size)); +} +pub inline fn setColorEditOptions(flags: ColorEditFlags) void { //igSetColorEditOptions + c.igSetColorEditOptions(@bitCast(flags)); +} +pub inline fn treeNode_Str(label: [*c]const u8) bool { //igTreeNode_Str + return c.igTreeNode_Str(label); +} +pub inline fn treeNodeEx_Str(label: [*c]const u8, flags: TreeNodeFlags) bool { //igTreeNodeEx_Str + return c.igTreeNodeEx_Str(label, @bitCast(flags)); +} +pub inline fn treePush_Str(str_id: [*c]const u8) void { //igTreePush_Str + c.igTreePush_Str(str_id); +} +pub inline fn treePush_Ptr(ptr_id: [*c]const void) void { //igTreePush_Ptr + c.igTreePush_Ptr(ptr_id); +} +pub inline fn treePop() void { //igTreePop + c.igTreePop(); +} +pub inline fn getTreeNodeToLabelSpacing() f32 { //igGetTreeNodeToLabelSpacing + return c.igGetTreeNodeToLabelSpacing(); +} +pub inline fn collapsingHeader_TreeNodeFlags(label: [*c]const u8, flags: TreeNodeFlags) bool { //igCollapsingHeader_TreeNodeFlags + return c.igCollapsingHeader_TreeNodeFlags(label, @bitCast(flags)); +} +pub inline fn collapsingHeader_BoolPtr(label: [*c]const u8, p_visible: [*c]bool, flags: TreeNodeFlags) bool { //igCollapsingHeader_BoolPtr + return c.igCollapsingHeader_BoolPtr(label, p_visible, @bitCast(flags)); +} +pub inline fn setNextItemOpen(is_open: bool, cond: Cond) void { //igSetNextItemOpen + c.igSetNextItemOpen(is_open, @bitCast(cond)); +} +pub inline fn selectable_Bool(label: [*c]const u8, selected: bool, flags: SelectableFlags, size: Vec2) bool { //igSelectable_Bool + return c.igSelectable_Bool(label, selected, @bitCast(flags), @bitCast(size)); +} +pub inline fn selectable_BoolPtr(label: [*c]const u8, p_selected: [*c]bool, flags: SelectableFlags, size: Vec2) bool { //igSelectable_BoolPtr + return c.igSelectable_BoolPtr(label, p_selected, @bitCast(flags), @bitCast(size)); +} +pub inline fn beginListBox(label: [*c]const u8, size: Vec2) bool { //igBeginListBox + return c.igBeginListBox(label, @bitCast(size)); +} +pub inline fn endListBox() void { //igEndListBox + c.igEndListBox(); +} +pub inline fn plotLines_FloatPtr(label: [*c]const u8, values: [*c]const f32, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: Vec2, stride: c_int) void { //igPlotLines_FloatPtr + c.igPlotLines_FloatPtr(label, values, values_count, values_offset, overlay_text, scale_min, scale_max, @bitCast(graph_size), stride); +} +pub inline fn plotHistogram_FloatPtr(label: [*c]const u8, values: [*c]const f32, values_count: c_int, values_offset: c_int, overlay_text: [*c]const u8, scale_min: f32, scale_max: f32, graph_size: Vec2, stride: c_int) void { //igPlotHistogram_FloatPtr + c.igPlotHistogram_FloatPtr(label, values, values_count, values_offset, overlay_text, scale_min, scale_max, @bitCast(graph_size), stride); +} +pub inline fn value_Bool(prefix: [*c]const u8, b: bool) void { //igValue_Bool + c.igValue_Bool(prefix, b); +} +pub inline fn value_Int(prefix: [*c]const u8, v: c_int) void { //igValue_Int + c.igValue_Int(prefix, v); +} +pub inline fn value_Uint(prefix: [*c]const u8, v: c_uint) void { //igValue_Uint + c.igValue_Uint(prefix, v); +} +pub inline fn value_Float(prefix: [*c]const u8, v: f32, float_format: [*c]const u8) void { //igValue_Float + c.igValue_Float(prefix, v, float_format); +} +pub inline fn beginMenuBar() bool { //igBeginMenuBar + return c.igBeginMenuBar(); +} +pub inline fn endMenuBar() void { //igEndMenuBar + c.igEndMenuBar(); +} +pub inline fn beginMainMenuBar() bool { //igBeginMainMenuBar + return c.igBeginMainMenuBar(); +} +pub inline fn endMainMenuBar() void { //igEndMainMenuBar + c.igEndMainMenuBar(); +} +pub inline fn beginMenu(label: [*c]const u8, enabled: bool) bool { //igBeginMenu + return c.igBeginMenu(label, enabled); +} +pub inline fn endMenu() void { //igEndMenu + c.igEndMenu(); +} +pub inline fn menuItem_Bool(label: [*c]const u8, shortcut: [*c]const u8, selected: bool, enabled: bool) bool { //igMenuItem_Bool + return c.igMenuItem_Bool(label, shortcut, selected, enabled); +} +pub inline fn menuItem_BoolPtr(label: [*c]const u8, shortcut: [*c]const u8, p_selected: [*c]bool, enabled: bool) bool { //igMenuItem_BoolPtr + return c.igMenuItem_BoolPtr(label, shortcut, p_selected, enabled); +} +pub inline fn beginTooltip() void { //igBeginTooltip + c.igBeginTooltip(); +} +pub inline fn endTooltip() void { //igEndTooltip + c.igEndTooltip(); +} +pub inline fn beginPopup(str_id: [*c]const u8, flags: WindowFlags) bool { //igBeginPopup + return c.igBeginPopup(str_id, @bitCast(flags)); +} +pub inline fn beginPopupModal(name: [*c]const u8, p_open: [*c]bool, flags: WindowFlags) bool { //igBeginPopupModal + return c.igBeginPopupModal(name, p_open, @bitCast(flags)); +} +pub inline fn endPopup() void { //igEndPopup + c.igEndPopup(); +} +pub inline fn openPopup_Str(str_id: [*c]const u8, popup_flags: PopupFlags) void { //igOpenPopup_Str + c.igOpenPopup_Str(str_id, @bitCast(popup_flags)); +} +pub inline fn openPopup_ID(id: ID, popup_flags: PopupFlags) void { //igOpenPopup_ID + c.igOpenPopup_ID(id, @bitCast(popup_flags)); +} +pub inline fn openPopupOnItemClick(str_id: [*c]const u8, popup_flags: PopupFlags) void { //igOpenPopupOnItemClick + c.igOpenPopupOnItemClick(str_id, @bitCast(popup_flags)); +} +pub inline fn closeCurrentPopup() void { //igCloseCurrentPopup + c.igCloseCurrentPopup(); +} +pub inline fn beginPopupContextItem(str_id: [*c]const u8, popup_flags: PopupFlags) bool { //igBeginPopupContextItem + return c.igBeginPopupContextItem(str_id, @bitCast(popup_flags)); +} +pub inline fn beginPopupContextWindow(str_id: [*c]const u8, popup_flags: PopupFlags) bool { //igBeginPopupContextWindow + return c.igBeginPopupContextWindow(str_id, @bitCast(popup_flags)); +} +pub inline fn beginPopupContextVoid(str_id: [*c]const u8, popup_flags: PopupFlags) bool { //igBeginPopupContextVoid + return c.igBeginPopupContextVoid(str_id, @bitCast(popup_flags)); +} +pub inline fn isPopupOpen_Str(str_id: [*c]const u8, flags: PopupFlags) bool { //igIsPopupOpen_Str + return c.igIsPopupOpen_Str(str_id, @bitCast(flags)); +} +pub inline fn beginTable(str_id: [*c]const u8, column: c_int, flags: TableFlags, outer_size: Vec2, inner_width: f32) bool { //igBeginTable + return c.igBeginTable(str_id, column, @bitCast(flags), @bitCast(outer_size), inner_width); +} +pub inline fn endTable() void { //igEndTable + c.igEndTable(); +} +pub inline fn tableNextRow(row_flags: TableRowFlags, min_row_height: f32) void { //igTableNextRow + c.igTableNextRow(@bitCast(row_flags), min_row_height); +} +pub inline fn tableNextColumn() bool { //igTableNextColumn + return c.igTableNextColumn(); +} +pub inline fn tableSetColumnIndex(column_n: c_int) bool { //igTableSetColumnIndex + return c.igTableSetColumnIndex(column_n); +} +pub inline fn tableSetupColumn(label: [*c]const u8, flags: TableColumnFlags, init_width_or_weight: f32, user_id: ID) void { //igTableSetupColumn + c.igTableSetupColumn(label, @bitCast(flags), init_width_or_weight, user_id); +} +pub inline fn tableSetupScrollFreeze(cols: c_int, rows: c_int) void { //igTableSetupScrollFreeze + c.igTableSetupScrollFreeze(cols, rows); +} +pub inline fn tableHeadersRow() void { //igTableHeadersRow + c.igTableHeadersRow(); +} +pub inline fn tableHeader(label: [*c]const u8) void { //igTableHeader + c.igTableHeader(label); +} +pub inline fn tableGetColumnCount() c_int { //igTableGetColumnCount + return c.igTableGetColumnCount(); +} +pub inline fn tableGetColumnIndex() c_int { //igTableGetColumnIndex + return c.igTableGetColumnIndex(); +} +pub inline fn tableGetRowIndex() c_int { //igTableGetRowIndex + return c.igTableGetRowIndex(); +} +pub inline fn tableGetColumnName_Int(column_n: c_int) [*c]const u8 { //igTableGetColumnName_Int + return c.igTableGetColumnName_Int(column_n); +} +pub inline fn tableGetColumnFlags(column_n: c_int) TableColumnFlags { //igTableGetColumnFlags + return c.igTableGetColumnFlags(column_n); +} +pub inline fn tableSetColumnEnabled(column_n: c_int, v: bool) void { //igTableSetColumnEnabled + c.igTableSetColumnEnabled(column_n, v); +} +pub inline fn tableSetBgColor(target: TableBgTarget, color: U32, column_n: c_int) void { //igTableSetBgColor + c.igTableSetBgColor(@bitCast(target), color, column_n); +} +pub inline fn columns(count: c_int, id: [*c]const u8, border: bool) void { //igColumns + c.igColumns(count, id, border); +} +pub inline fn nextColumn() void { //igNextColumn + c.igNextColumn(); +} +pub inline fn getColumnIndex() c_int { //igGetColumnIndex + return c.igGetColumnIndex(); +} +pub inline fn getColumnWidth(column_index: c_int) f32 { //igGetColumnWidth + return c.igGetColumnWidth(column_index); +} +pub inline fn setColumnWidth(column_index: c_int, width: f32) void { //igSetColumnWidth + c.igSetColumnWidth(column_index, width); +} +pub inline fn getColumnOffset(column_index: c_int) f32 { //igGetColumnOffset + return c.igGetColumnOffset(column_index); +} +pub inline fn setColumnOffset(column_index: c_int, offset_x: f32) void { //igSetColumnOffset + c.igSetColumnOffset(column_index, offset_x); +} +pub inline fn getColumnsCount() c_int { //igGetColumnsCount + return c.igGetColumnsCount(); +} +pub inline fn beginTabBar(str_id: [*c]const u8, flags: TabBarFlags) bool { //igBeginTabBar + return c.igBeginTabBar(str_id, @bitCast(flags)); +} +pub inline fn endTabBar() void { //igEndTabBar + c.igEndTabBar(); +} +pub inline fn beginTabItem(label: [*c]const u8, p_open: [*c]bool, flags: TabItemFlags) bool { //igBeginTabItem + return c.igBeginTabItem(label, p_open, @bitCast(flags)); +} +pub inline fn endTabItem() void { //igEndTabItem + c.igEndTabItem(); +} +pub inline fn tabItemButton(label: [*c]const u8, flags: TabItemFlags) bool { //igTabItemButton + return c.igTabItemButton(label, @bitCast(flags)); +} +pub inline fn setTabItemClosed(tab_or_docked_window_label: [*c]const u8) void { //igSetTabItemClosed + c.igSetTabItemClosed(tab_or_docked_window_label); +} +pub inline fn dockSpace(id: ID, size: Vec2, flags: DockNodeFlags, window_class: [*c]const WindowClass) ID { //igDockSpace + return c.igDockSpace(id, @bitCast(size), @bitCast(flags), @ptrCast(window_class)); +} +pub inline fn dockSpaceOverViewport(viewport: [*c]const Viewport, flags: DockNodeFlags, window_class: [*c]const WindowClass) ID { //igDockSpaceOverViewport + return c.igDockSpaceOverViewport(viewport, @bitCast(flags), @ptrCast(window_class)); +} +pub inline fn setNextWindowDockID(dock_id: ID, cond: Cond) void { //igSetNextWindowDockID + c.igSetNextWindowDockID(dock_id, @bitCast(cond)); +} +pub inline fn setNextWindowClass(window_class: [*c]const WindowClass) void { //igSetNextWindowClass + c.igSetNextWindowClass(@ptrCast(window_class)); +} +pub inline fn getWindowDockID() ID { //igGetWindowDockID + return c.igGetWindowDockID(); +} +pub inline fn isWindowDocked() bool { //igIsWindowDocked + return c.igIsWindowDocked(); +} +pub inline fn logToTTY(auto_open_depth: c_int) void { //igLogToTTY + c.igLogToTTY(auto_open_depth); +} +pub inline fn logToFile(auto_open_depth: c_int, filename: [*c]const u8) void { //igLogToFile + c.igLogToFile(auto_open_depth, filename); +} +pub inline fn logToClipboard(auto_open_depth: c_int) void { //igLogToClipboard + c.igLogToClipboard(auto_open_depth); +} +pub inline fn logFinish() void { //igLogFinish + c.igLogFinish(); +} +pub inline fn logButtons() void { //igLogButtons + c.igLogButtons(); +} +pub inline fn beginDragDropSource(flags: DragDropFlags) bool { //igBeginDragDropSource + return c.igBeginDragDropSource(@bitCast(flags)); +} +pub inline fn setDragDropPayload(t: [*c]const u8, data: [*c]const void, sz: usize, cond: Cond) bool { //igSetDragDropPayload + return c.igSetDragDropPayload(t, data, sz, @bitCast(cond)); +} +pub inline fn endDragDropSource() void { //igEndDragDropSource + c.igEndDragDropSource(); +} +pub inline fn beginDragDropTarget() bool { //igBeginDragDropTarget + return c.igBeginDragDropTarget(); +} +pub inline fn acceptDragDropPayload(t: [*c]const u8, flags: DragDropFlags) [*c]const Payload { //igAcceptDragDropPayload + return c.igAcceptDragDropPayload(t, @bitCast(flags)); +} +pub inline fn endDragDropTarget() void { //igEndDragDropTarget + c.igEndDragDropTarget(); +} +pub inline fn getDragDropPayload() [*c]const Payload { //igGetDragDropPayload + return c.igGetDragDropPayload(); +} +pub inline fn beginDisabled(disabled: bool) void { //igBeginDisabled + c.igBeginDisabled(disabled); +} +pub inline fn endDisabled() void { //igEndDisabled + c.igEndDisabled(); +} +pub inline fn pushClipRect(clip_rect_min: Vec2, clip_rect_max: Vec2, intersect_with_current_clip_rect: bool) void { //igPushClipRect + c.igPushClipRect(@bitCast(clip_rect_min), @bitCast(clip_rect_max), intersect_with_current_clip_rect); +} +pub inline fn popClipRect() void { //igPopClipRect + c.igPopClipRect(); +} +pub inline fn setItemDefaultFocus() void { //igSetItemDefaultFocus + c.igSetItemDefaultFocus(); +} +pub inline fn setKeyboardFocusHere(offset: c_int) void { //igSetKeyboardFocusHere + c.igSetKeyboardFocusHere(offset); +} +pub inline fn isItemHovered(flags: HoveredFlags) bool { //igIsItemHovered + return c.igIsItemHovered(@bitCast(flags)); +} +pub inline fn isItemActive() bool { //igIsItemActive + return c.igIsItemActive(); +} +pub inline fn isItemFocused() bool { //igIsItemFocused + return c.igIsItemFocused(); +} +pub inline fn isItemClicked(mouse_button: MouseButton) bool { //igIsItemClicked + return c.igIsItemClicked(@intFromEnum(mouse_button)); +} +pub inline fn isItemVisible() bool { //igIsItemVisible + return c.igIsItemVisible(); +} +pub inline fn isItemEdited() bool { //igIsItemEdited + return c.igIsItemEdited(); +} +pub inline fn isItemActivated() bool { //igIsItemActivated + return c.igIsItemActivated(); +} +pub inline fn isItemDeactivated() bool { //igIsItemDeactivated + return c.igIsItemDeactivated(); +} +pub inline fn isItemDeactivatedAfterEdit() bool { //igIsItemDeactivatedAfterEdit + return c.igIsItemDeactivatedAfterEdit(); +} +pub inline fn isItemToggledOpen() bool { //igIsItemToggledOpen + return c.igIsItemToggledOpen(); +} +pub inline fn isAnyItemHovered() bool { //igIsAnyItemHovered + return c.igIsAnyItemHovered(); +} +pub inline fn isAnyItemActive() bool { //igIsAnyItemActive + return c.igIsAnyItemActive(); +} +pub inline fn isAnyItemFocused() bool { //igIsAnyItemFocused + return c.igIsAnyItemFocused(); +} +pub inline fn getItemRectMin(pout: [*c]Vec2) void { //igGetItemRectMin + c.igGetItemRectMin(pout); +} +pub inline fn getItemRectMax(pout: [*c]Vec2) void { //igGetItemRectMax + c.igGetItemRectMax(pout); +} +pub inline fn getItemRectSize(pout: [*c]Vec2) void { //igGetItemRectSize + c.igGetItemRectSize(pout); +} +pub inline fn setItemAllowOverlap() void { //igSetItemAllowOverlap + c.igSetItemAllowOverlap(); +} +pub inline fn getMainViewport() ?*Viewport { //igGetMainViewport + return @ptrCast(c.igGetMainViewport()); +} +pub inline fn getBackgroundDrawList_Nil() [*c]DrawList { //igGetBackgroundDrawList_Nil + return c.igGetBackgroundDrawList_Nil(); +} +pub inline fn getForegroundDrawList_Nil() [*c]DrawList { //igGetForegroundDrawList_Nil + return c.igGetForegroundDrawList_Nil(); +} +pub inline fn getBackgroundDrawList_ViewportPtr(viewport: [*c]Viewport) [*c]DrawList { //igGetBackgroundDrawList_ViewportPtr + return c.igGetBackgroundDrawList_ViewportPtr(viewport); +} +pub inline fn getForegroundDrawList_ViewportPtr(viewport: [*c]Viewport) [*c]DrawList { //igGetForegroundDrawList_ViewportPtr + return c.igGetForegroundDrawList_ViewportPtr(viewport); +} +pub inline fn isRectVisible_Nil(size: Vec2) bool { //igIsRectVisible_Nil + return c.igIsRectVisible_Nil(@bitCast(size)); +} +pub inline fn isRectVisible_Vec2(rect_min: Vec2, rect_max: Vec2) bool { //igIsRectVisible_Vec2 + return c.igIsRectVisible_Vec2(@bitCast(rect_min), @bitCast(rect_max)); +} +pub inline fn getTime() f64 { //igGetTime + return c.igGetTime(); +} +pub inline fn getFrameCount() c_int { //igGetFrameCount + return c.igGetFrameCount(); +} +pub inline fn getDrawListSharedData() [*c]DrawListSharedData { //igGetDrawListSharedData + return c.igGetDrawListSharedData(); +} +pub inline fn getStyleColorName(idx: StyleColor) [*c]const u8 { //igGetStyleColorName + return c.igGetStyleColorName(idx); +} +pub inline fn setStateStorage(storage: [*c]Storage) void { //igSetStateStorage + c.igSetStateStorage(storage); +} +pub inline fn getStateStorage() [*c]Storage { //igGetStateStorage + return c.igGetStateStorage(); +} +pub inline fn beginChildFrame(id: ID, size: Vec2, flags: WindowFlags) bool { //igBeginChildFrame + return c.igBeginChildFrame(id, @bitCast(size), @bitCast(flags)); +} +pub inline fn endChildFrame() void { //igEndChildFrame + c.igEndChildFrame(); +} +pub inline fn calcTextSize(pout: [*c]Vec2, text: [*c]const u8, text_end: [*c]const u8, hide_text_after_double_hash: bool, wrap_width: f32) void { //igCalcTextSize + c.igCalcTextSize(pout, text, text_end, hide_text_after_double_hash, wrap_width); +} +pub inline fn colorConvertU32ToFloat4(pout: [*c]Vec4, in: U32) void { //igColorConvertU32ToFloat4 + c.igColorConvertU32ToFloat4(pout, in); +} +pub inline fn colorConvertFloat4ToU32(in: Vec4) U32 { //igColorConvertFloat4ToU32 + return c.igColorConvertFloat4ToU32(@bitCast(in)); +} +pub inline fn colorConvertRGBtoHSV(r: f32, g: f32, b: f32, out_h: [*c]f32, out_s: [*c]f32, out_v: [*c]f32) void { //igColorConvertRGBtoHSV + c.igColorConvertRGBtoHSV(r, g, b, out_h, out_s, out_v); +} +pub inline fn colorConvertHSVtoRGB(h: f32, s: f32, v: f32, out_r: [*c]f32, out_g: [*c]f32, out_b: [*c]f32) void { //igColorConvertHSVtoRGB + c.igColorConvertHSVtoRGB(h, s, v, out_r, out_g, out_b); +} +pub inline fn isKeyDown(key: Key) bool { //igIsKeyDown + return c.igIsKeyDown(@intFromEnum(key)); +} +pub inline fn isKeyPressed(key: Key, repeat: bool) bool { //igIsKeyPressed + return c.igIsKeyPressed(@intFromEnum(key), repeat); +} +pub inline fn isKeyReleased(key: Key) bool { //igIsKeyReleased + return c.igIsKeyReleased(@intFromEnum(key)); +} +pub inline fn getKeyPressedAmount(key: Key, repeat_delay: f32, rate: f32) c_int { //igGetKeyPressedAmount + return c.igGetKeyPressedAmount(@intFromEnum(key), repeat_delay, rate); +} +pub inline fn getKeyName(key: Key) [*c]const u8 { //igGetKeyName + return c.igGetKeyName(@intFromEnum(key)); +} +pub inline fn setNextFrameWantCaptureKeyboard(want_capture_keyboard: bool) void { //igSetNextFrameWantCaptureKeyboard + c.igSetNextFrameWantCaptureKeyboard(want_capture_keyboard); +} +pub inline fn isMouseDown(btn: MouseButton) bool { //igIsMouseDown + return c.igIsMouseDown(@intFromEnum(btn)); +} +pub inline fn isMouseClicked(btn: MouseButton, repeat: bool) bool { //igIsMouseClicked + return c.igIsMouseClicked(@intFromEnum(btn), repeat); +} +pub inline fn isMouseReleased(btn: MouseButton) bool { //igIsMouseReleased + return c.igIsMouseReleased(@intFromEnum(btn)); +} +pub inline fn isMouseDoubleClicked(btn: MouseButton) bool { //igIsMouseDoubleClicked + return c.igIsMouseDoubleClicked(@intFromEnum(btn)); +} +pub inline fn getMouseClickedCount(btn: MouseButton) c_int { //igGetMouseClickedCount + return c.igGetMouseClickedCount(@intFromEnum(btn)); +} +pub inline fn isMouseHoveringRect(r_min: Vec2, r_max: Vec2, clip: bool) bool { //igIsMouseHoveringRect + return c.igIsMouseHoveringRect(@bitCast(r_min), @bitCast(r_max), clip); +} +pub inline fn isMousePosValid(mouse_pos: [*c]const Vec2) bool { //igIsMousePosValid + return c.igIsMousePosValid(mouse_pos); +} +pub inline fn isAnyMouseDown() bool { //igIsAnyMouseDown + return c.igIsAnyMouseDown(); +} +pub inline fn getMousePos(pout: [*c]Vec2) void { //igGetMousePos + c.igGetMousePos(pout); +} +pub inline fn getMousePosOnOpeningCurrentPopup(pout: [*c]Vec2) void { //igGetMousePosOnOpeningCurrentPopup + c.igGetMousePosOnOpeningCurrentPopup(pout); +} +pub inline fn isMouseDragging(btn: MouseButton, lock_threshold: f32) bool { //igIsMouseDragging + return c.igIsMouseDragging(@intFromEnum(btn), lock_threshold); +} +pub inline fn getMouseDragDelta(pout: [*c]Vec2, btn: MouseButton, lock_threshold: f32) void { //igGetMouseDragDelta + c.igGetMouseDragDelta(pout, @intFromEnum(btn), lock_threshold); +} +pub inline fn resetMouseDragDelta(btn: MouseButton) void { //igResetMouseDragDelta + c.igResetMouseDragDelta(@intFromEnum(btn)); +} +pub inline fn getMouseCursor() MouseCursor { //igGetMouseCursor + return c.igGetMouseCursor(); +} +pub inline fn setMouseCursor(cursor_type: MouseCursor) void { //igSetMouseCursor + c.igSetMouseCursor(@intFromEnum(cursor_type)); +} +pub inline fn setNextFrameWantCaptureMouse(want_capture_mouse: bool) void { //igSetNextFrameWantCaptureMouse + c.igSetNextFrameWantCaptureMouse(want_capture_mouse); +} +pub inline fn getClipboardText() [*c]const u8 { //igGetClipboardText + return c.igGetClipboardText(); +} +pub inline fn setClipboardText(text: [*c]const u8) void { //igSetClipboardText + c.igSetClipboardText(text); +} +pub inline fn loadIniSettingsFromDisk(ini_filename: [*c]const u8) void { //igLoadIniSettingsFromDisk + c.igLoadIniSettingsFromDisk(ini_filename); +} +pub inline fn loadIniSettingsFromMemory(ini_data: [*c]const u8, ini_size: usize) void { //igLoadIniSettingsFromMemory + c.igLoadIniSettingsFromMemory(ini_data, ini_size); +} +pub inline fn saveIniSettingsToDisk(ini_filename: [*c]const u8) void { //igSaveIniSettingsToDisk + c.igSaveIniSettingsToDisk(ini_filename); +} +pub inline fn saveIniSettingsToMemory(out_ini_size: [*c]usize) [*c]const u8 { //igSaveIniSettingsToMemory + return c.igSaveIniSettingsToMemory(out_ini_size); +} +pub inline fn debugTextEncoding(text: [*c]const u8) void { //igDebugTextEncoding + c.igDebugTextEncoding(text); +} +pub inline fn debugCheckVersionAndDataLayout(version_str: [*c]const u8, sz_io: usize, sz_style: usize, sz_vec2: usize, sz_vec4: usize, sz_drawvert: usize, sz_drawidx: usize) bool { //igDebugCheckVersionAndDataLayout + return c.igDebugCheckVersionAndDataLayout(version_str, sz_io, sz_style, sz_vec2, sz_vec4, sz_drawvert, sz_drawidx); +} +pub inline fn setAllocatorFunctions(alloc_func: MemAllocFunc, free_func: MemFreeFunc, user_data: ?*anyopaque) void { //igSetAllocatorFunctions + c.igSetAllocatorFunctions(alloc_func, free_func, user_data); +} +pub inline fn getAllocatorFunctions(p_alloc_func: [*c]MemAllocFunc, p_free_func: [*c]MemFreeFunc, p_user_data: [*c]void) void { //igGetAllocatorFunctions + c.igGetAllocatorFunctions(p_alloc_func, p_free_func, p_user_data); +} +pub inline fn memAlloc(size: usize) ?*anyopaque { //igMemAlloc + return c.igMemAlloc(size); +} +pub inline fn memFree(ptr: ?*anyopaque) void { //igMemFree + c.igMemFree(ptr); +} +pub inline fn getPlatformIO() [*c]PlatformIO { //igGetPlatformIO + return c.igGetPlatformIO(); +} +pub inline fn updatePlatformWindows() void { //igUpdatePlatformWindows + c.igUpdatePlatformWindows(); +} +pub inline fn renderPlatformWindowsDefault(platform_render_arg: ?*anyopaque, renderer_render_arg: ?*anyopaque) void { //igRenderPlatformWindowsDefault + c.igRenderPlatformWindowsDefault(platform_render_arg, renderer_render_arg); +} +pub inline fn destroyPlatformWindows() void { //igDestroyPlatformWindows + c.igDestroyPlatformWindows(); +} +pub inline fn findViewportByID(id: ID) [*c]Viewport { //igFindViewportByID + return c.igFindViewportByID(id); +} +pub inline fn findViewportByPlatformHandle(platform_handle: ?*anyopaque) [*c]Viewport { //igFindViewportByPlatformHandle + return c.igFindViewportByPlatformHandle(platform_handle); +} +pub inline fn getKeyIndex(key: Key) c_int { //igGetKeyIndex + return c.igGetKeyIndex(@intFromEnum(key)); +} +pub inline fn imHashData(data: [*c]const void, data_size: usize, seed: U32) ID { //igImHashData + return c.igImHashData(data, data_size, seed); +} +pub inline fn imHashStr(data: [*c]const u8, data_size: usize, seed: U32) ID { //igImHashStr + return c.igImHashStr(data, data_size, seed); +} +pub inline fn imQsort(base: ?*anyopaque, count: usize, size_of_element: usize) void { //igImQsort + c.igImQsort(base, count, size_of_element); +} +pub inline fn imAlphaBlendColors(col_a: U32, col_b: U32) U32 { //igImAlphaBlendColors + return c.igImAlphaBlendColors(col_a, col_b); +} +pub inline fn imIsPowerOfTwo_Int(v: c_int) bool { //igImIsPowerOfTwo_Int + return c.igImIsPowerOfTwo_Int(v); +} +pub inline fn imIsPowerOfTwo_U64(v: U64) bool { //igImIsPowerOfTwo_U64 + return c.igImIsPowerOfTwo_U64(v); +} +pub inline fn imUpperPowerOfTwo(v: c_int) c_int { //igImUpperPowerOfTwo + return c.igImUpperPowerOfTwo(v); +} +pub inline fn imStricmp(str1: [*c]const u8, str2: [*c]const u8) c_int { //igImStricmp + return c.igImStricmp(str1, str2); +} +pub inline fn imStrnicmp(str1: [*c]const u8, str2: [*c]const u8, count: usize) c_int { //igImStrnicmp + return c.igImStrnicmp(str1, str2, count); +} +pub inline fn imStrncpy(dst: [*c]u8, src: [*c]const u8, count: usize) void { //igImStrncpy + c.igImStrncpy(dst, src, count); +} +pub inline fn imStrdup(str: [*c]const u8) [*c]u8 { //igImStrdup + return c.igImStrdup(str); +} +pub inline fn imStrdupcpy(dst: [*c]u8, p_dst_size: [*c]usize, str: [*c]const u8) [*c]u8 { //igImStrdupcpy + return c.igImStrdupcpy(dst, p_dst_size, str); +} +pub inline fn imStrchrRange(str_begin: [*c]const u8, str_end: [*c]const u8, ch: u8) [*c]const u8 { //igImStrchrRange + return c.igImStrchrRange(str_begin, str_end, ch); +} +pub inline fn imStrlenW(str: [*c]const Wchar) c_int { //igImStrlenW + return c.igImStrlenW(str); +} +pub inline fn imStreolRange(str: [*c]const u8, str_end: [*c]const u8) [*c]const u8 { //igImStreolRange + return c.igImStreolRange(str, str_end); +} +pub inline fn imStrbolW(buf_mid_line: [*c]const Wchar, buf_begin: [*c]const Wchar) [*c]const Wchar { //igImStrbolW + return c.igImStrbolW(buf_mid_line, buf_begin); +} +pub inline fn imStristr(haystack: [*c]const u8, haystack_end: [*c]const u8, needle: [*c]const u8, needle_end: [*c]const u8) [*c]const u8 { //igImStristr + return c.igImStristr(haystack, haystack_end, needle, needle_end); +} +pub inline fn imStrTrimBlanks(str: [*c]u8) void { //igImStrTrimBlanks + c.igImStrTrimBlanks(str); +} +pub inline fn imStrSkipBlank(str: [*c]const u8) [*c]const u8 { //igImStrSkipBlank + return c.igImStrSkipBlank(str); +} +pub inline fn imCharIsBlankA(ch: u8) bool { //igImCharIsBlankA + return c.igImCharIsBlankA(ch); +} +pub inline fn imCharIsBlankW(ch: c_uint) bool { //igImCharIsBlankW + return c.igImCharIsBlankW(ch); +} +pub inline fn imParseFormatFindStart(format: [*c]const u8) [*c]const u8 { //igImParseFormatFindStart + return c.igImParseFormatFindStart(format); +} +pub inline fn imParseFormatFindEnd(format: [*c]const u8) [*c]const u8 { //igImParseFormatFindEnd + return c.igImParseFormatFindEnd(format); +} +pub inline fn imParseFormatTrimDecorations(format: [*c]const u8, buf: [*c]u8, buf_size: usize) [*c]const u8 { //igImParseFormatTrimDecorations + return c.igImParseFormatTrimDecorations(format, buf, buf_size); +} +pub inline fn imParseFormatSanitizeForPrinting(fmt_in: [*c]const u8, fmt_out: [*c]u8, fmt_out_size: usize) void { //igImParseFormatSanitizeForPrinting + c.igImParseFormatSanitizeForPrinting(fmt_in, fmt_out, fmt_out_size); +} +pub inline fn imParseFormatSanitizeForScanning(fmt_in: [*c]const u8, fmt_out: [*c]u8, fmt_out_size: usize) [*c]const u8 { //igImParseFormatSanitizeForScanning + return c.igImParseFormatSanitizeForScanning(fmt_in, fmt_out, fmt_out_size); +} +pub inline fn imParseFormatPrecision(format: [*c]const u8, default_value: c_int) c_int { //igImParseFormatPrecision + return c.igImParseFormatPrecision(format, default_value); +} +pub inline fn imTextStrToUtf8(out_buf: [*c]u8, out_buf_size: c_int, in_text: [*c]const Wchar, in_text_end: [*c]const Wchar) c_int { //igImTextStrToUtf8 + return c.igImTextStrToUtf8(out_buf, out_buf_size, in_text, in_text_end); +} +pub inline fn imTextCharFromUtf8(out_char: [*c]c_uint, in_text: [*c]const u8, in_text_end: [*c]const u8) c_int { //igImTextCharFromUtf8 + return c.igImTextCharFromUtf8(out_char, in_text, in_text_end); +} +pub inline fn imTextStrFromUtf8(out_buf: [*c]Wchar, out_buf_size: c_int, in_text: [*c]const u8, in_text_end: [*c]const u8, in_remaining: [*c]const u8) c_int { //igImTextStrFromUtf8 + return c.igImTextStrFromUtf8(out_buf, out_buf_size, in_text, in_text_end, in_remaining); +} +pub inline fn imTextCountCharsFromUtf8(in_text: [*c]const u8, in_text_end: [*c]const u8) c_int { //igImTextCountCharsFromUtf8 + return c.igImTextCountCharsFromUtf8(in_text, in_text_end); +} +pub inline fn imTextCountUtf8BytesFromChar(in_text: [*c]const u8, in_text_end: [*c]const u8) c_int { //igImTextCountUtf8BytesFromChar + return c.igImTextCountUtf8BytesFromChar(in_text, in_text_end); +} +pub inline fn imTextCountUtf8BytesFromStr(in_text: [*c]const Wchar, in_text_end: [*c]const Wchar) c_int { //igImTextCountUtf8BytesFromStr + return c.igImTextCountUtf8BytesFromStr(in_text, in_text_end); +} +pub inline fn imFileOpen(filename: [*c]const u8, mode: [*c]const u8) FileHandle { //igImFileOpen + return c.igImFileOpen(filename, mode); +} +pub inline fn imFileClose(file: FileHandle) bool { //igImFileClose + return c.igImFileClose(file); +} +pub inline fn imFileGetSize(file: FileHandle) U64 { //igImFileGetSize + return c.igImFileGetSize(file); +} +pub inline fn imFileRead(data: ?*anyopaque, size: U64, count: U64, file: FileHandle) U64 { //igImFileRead + return c.igImFileRead(data, size, count, file); +} +pub inline fn imFileWrite(data: [*c]const void, size: U64, count: U64, file: FileHandle) U64 { //igImFileWrite + return c.igImFileWrite(data, size, count, file); +} +pub inline fn imFileLoadToMemory(filename: [*c]const u8, mode: [*c]const u8, out_file_size: [*c]usize, padding_bytes: c_int) ?*anyopaque { //igImFileLoadToMemory + return c.igImFileLoadToMemory(filename, mode, out_file_size, padding_bytes); +} +pub inline fn imPow_Float(x: f32, y: f32) f32 { //igImPow_Float + return c.igImPow_Float(x, y); +} +pub inline fn imPow_double(x: f64, y: f64) f64 { //igImPow_double + return c.igImPow_double(x, y); +} +pub inline fn imLog_Float(x: f32) f32 { //igImLog_Float + return c.igImLog_Float(x); +} +pub inline fn imLog_double(x: f64) f64 { //igImLog_double + return c.igImLog_double(x); +} +pub inline fn imAbs_Int(x: c_int) c_int { //igImAbs_Int + return c.igImAbs_Int(x); +} +pub inline fn imAbs_Float(x: f32) f32 { //igImAbs_Float + return c.igImAbs_Float(x); +} +pub inline fn imAbs_double(x: f64) f64 { //igImAbs_double + return c.igImAbs_double(x); +} +pub inline fn imSign_Float(x: f32) f32 { //igImSign_Float + return c.igImSign_Float(x); +} +pub inline fn imSign_double(x: f64) f64 { //igImSign_double + return c.igImSign_double(x); +} +pub inline fn imRsqrt_Float(x: f32) f32 { //igImRsqrt_Float + return c.igImRsqrt_Float(x); +} +pub inline fn imRsqrt_double(x: f64) f64 { //igImRsqrt_double + return c.igImRsqrt_double(x); +} +pub inline fn imMin(pout: [*c]Vec2, lhs: Vec2, rhs: Vec2) void { //igImMin + c.igImMin(pout, @bitCast(lhs), @bitCast(rhs)); +} +pub inline fn imMax(pout: [*c]Vec2, lhs: Vec2, rhs: Vec2) void { //igImMax + c.igImMax(pout, @bitCast(lhs), @bitCast(rhs)); +} +pub inline fn imClamp(pout: [*c]Vec2, v: Vec2, mn: Vec2, mx: Vec2) void { //igImClamp + c.igImClamp(pout, @bitCast(v), @bitCast(mn), @bitCast(mx)); +} +pub inline fn imLerp_Vec2Float(pout: [*c]Vec2, a: Vec2, b: Vec2, t: f32) void { //igImLerp_Vec2Float + c.igImLerp_Vec2Float(pout, @bitCast(a), @bitCast(b), t); +} +pub inline fn imLerp_Vec2Vec2(pout: [*c]Vec2, a: Vec2, b: Vec2, t: Vec2) void { //igImLerp_Vec2Vec2 + c.igImLerp_Vec2Vec2(pout, @bitCast(a), @bitCast(b), @bitCast(t)); +} +pub inline fn imLerp_Vec4(pout: [*c]Vec4, a: Vec4, b: Vec4, t: f32) void { //igImLerp_Vec4 + c.igImLerp_Vec4(pout, @bitCast(a), @bitCast(b), t); +} +pub inline fn imSaturate(f: f32) f32 { //igImSaturate + return c.igImSaturate(f); +} +pub inline fn imLengthSqr_Vec2(lhs: Vec2) f32 { //igImLengthSqr_Vec2 + return c.igImLengthSqr_Vec2(@bitCast(lhs)); +} +pub inline fn imLengthSqr_Vec4(lhs: Vec4) f32 { //igImLengthSqr_Vec4 + return c.igImLengthSqr_Vec4(@bitCast(lhs)); +} +pub inline fn imInvLength(lhs: Vec2, fail_value: f32) f32 { //igImInvLength + return c.igImInvLength(@bitCast(lhs), fail_value); +} +pub inline fn imFloor_Float(f: f32) f32 { //igImFloor_Float + return c.igImFloor_Float(f); +} +pub inline fn imFloorSigned_Float(f: f32) f32 { //igImFloorSigned_Float + return c.igImFloorSigned_Float(f); +} +pub inline fn imFloor_Vec2(pout: [*c]Vec2, v: Vec2) void { //igImFloor_Vec2 + c.igImFloor_Vec2(pout, @bitCast(v)); +} +pub inline fn imFloorSigned_Vec2(pout: [*c]Vec2, v: Vec2) void { //igImFloorSigned_Vec2 + c.igImFloorSigned_Vec2(pout, @bitCast(v)); +} +pub inline fn imModPositive(a: c_int, b: c_int) c_int { //igImModPositive + return c.igImModPositive(a, b); +} +pub inline fn imDot(a: Vec2, b: Vec2) f32 { //igImDot + return c.igImDot(@bitCast(a), @bitCast(b)); +} +pub inline fn imRotate(pout: [*c]Vec2, v: Vec2, cos_a: f32, sin_a: f32) void { //igImRotate + c.igImRotate(pout, @bitCast(v), cos_a, sin_a); +} +pub inline fn imLinearSweep(current: f32, target: f32, speed: f32) f32 { //igImLinearSweep + return c.igImLinearSweep(current, target, speed); +} +pub inline fn imMul(pout: [*c]Vec2, lhs: Vec2, rhs: Vec2) void { //igImMul + c.igImMul(pout, @bitCast(lhs), @bitCast(rhs)); +} +pub inline fn imIsFloatAboveGuaranteedIntegerPrecision(f: f32) bool { //igImIsFloatAboveGuaranteedIntegerPrecision + return c.igImIsFloatAboveGuaranteedIntegerPrecision(f); +} +pub inline fn imBezierCubicCalc(pout: [*c]Vec2, p1: Vec2, p2: Vec2, p3: Vec2, p4: Vec2, t: f32) void { //igImBezierCubicCalc + c.igImBezierCubicCalc(pout, @bitCast(p1), @bitCast(p2), @bitCast(p3), @bitCast(p4), t); +} +pub inline fn imBezierCubicClosestPoint(pout: [*c]Vec2, p1: Vec2, p2: Vec2, p3: Vec2, p4: Vec2, p: Vec2, num_segments: c_int) void { //igImBezierCubicClosestPoint + c.igImBezierCubicClosestPoint(pout, @bitCast(p1), @bitCast(p2), @bitCast(p3), @bitCast(p4), @bitCast(p), num_segments); +} +pub inline fn imBezierCubicClosestPointCasteljau(pout: [*c]Vec2, p1: Vec2, p2: Vec2, p3: Vec2, p4: Vec2, p: Vec2, tess_tol: f32) void { //igImBezierCubicClosestPointCasteljau + c.igImBezierCubicClosestPointCasteljau(pout, @bitCast(p1), @bitCast(p2), @bitCast(p3), @bitCast(p4), @bitCast(p), tess_tol); +} +pub inline fn imBezierQuadraticCalc(pout: [*c]Vec2, p1: Vec2, p2: Vec2, p3: Vec2, t: f32) void { //igImBezierQuadraticCalc + c.igImBezierQuadraticCalc(pout, @bitCast(p1), @bitCast(p2), @bitCast(p3), t); +} +pub inline fn imLineClosestPoint(pout: [*c]Vec2, a: Vec2, b: Vec2, p: Vec2) void { //igImLineClosestPoint + c.igImLineClosestPoint(pout, @bitCast(a), @bitCast(b), @bitCast(p)); +} +pub inline fn imTriangleContainsPoint(a: Vec2, b: Vec2, _c: Vec2, p: Vec2) bool { //igImTriangleContainsPoint + return c.igImTriangleContainsPoint(@bitCast(a), @bitCast(b), @bitCast(_c), @bitCast(p)); +} +pub inline fn imTriangleClosestPoint(pout: [*c]Vec2, a: Vec2, b: Vec2, _c: Vec2, p: Vec2) void { //igImTriangleClosestPoint + c.igImTriangleClosestPoint(pout, @bitCast(a), @bitCast(b), @bitCast(_c), @bitCast(p)); +} +pub inline fn imTriangleBarycentricCoords(a: Vec2, b: Vec2, _c: Vec2, p: Vec2, out_u: [*c]f32, out_v: [*c]f32, out_w: [*c]f32) void { //igImTriangleBarycentricCoords + c.igImTriangleBarycentricCoords(@bitCast(a), @bitCast(b), @bitCast(_c), @bitCast(p), out_u, out_v, out_w); +} +pub inline fn imTriangleArea(a: Vec2, b: Vec2, _c: Vec2) f32 { //igImTriangleArea + return c.igImTriangleArea(@bitCast(a), @bitCast(b), @bitCast(_c)); +} +pub inline fn imGetDirQuadrantFromDelta(dx: f32, dy: f32) Dir { //igImGetDirQuadrantFromDelta + return c.igImGetDirQuadrantFromDelta(dx, dy); +} +pub inline fn imBitArrayTestBit(arr: [*c]const U32, n: c_int) bool { //igImBitArrayTestBit + return c.igImBitArrayTestBit(arr, n); +} +pub inline fn imBitArrayClearBit(arr: [*c]U32, n: c_int) void { //igImBitArrayClearBit + c.igImBitArrayClearBit(arr, n); +} +pub inline fn imBitArraySetBit(arr: [*c]U32, n: c_int) void { //igImBitArraySetBit + c.igImBitArraySetBit(arr, n); +} +pub inline fn imBitArraySetBitRange(arr: [*c]U32, n: c_int, n2: c_int) void { //igImBitArraySetBitRange + c.igImBitArraySetBitRange(arr, n, n2); +} +pub inline fn getCurrentWindowRead() [*c]Window { //igGetCurrentWindowRead + return c.igGetCurrentWindowRead(); +} +pub inline fn getCurrentWindow() [*c]Window { //igGetCurrentWindow + return c.igGetCurrentWindow(); +} +pub inline fn findWindowByID(id: ID) [*c]Window { //igFindWindowByID + return c.igFindWindowByID(id); +} +pub inline fn findWindowByName(name: [*c]const u8) [*c]Window { //igFindWindowByName + return c.igFindWindowByName(name); +} +pub inline fn updateWindowParentAndRootLinks(window: [*c]Window, flags: WindowFlags, parent_window: [*c]Window) void { //igUpdateWindowParentAndRootLinks + c.igUpdateWindowParentAndRootLinks(window, @bitCast(flags), parent_window); +} +pub inline fn calcWindowNextAutoFitSize(pout: [*c]Vec2, window: [*c]Window) void { //igCalcWindowNextAutoFitSize + c.igCalcWindowNextAutoFitSize(pout, window); +} +pub inline fn isWindowChildOf(window: [*c]Window, potential_parent: [*c]Window, popup_hierarchy: bool, dock_hierarchy: bool) bool { //igIsWindowChildOf + return c.igIsWindowChildOf(window, potential_parent, popup_hierarchy, dock_hierarchy); +} +pub inline fn isWindowWithinBeginStackOf(window: [*c]Window, potential_parent: [*c]Window) bool { //igIsWindowWithinBeginStackOf + return c.igIsWindowWithinBeginStackOf(window, potential_parent); +} +pub inline fn isWindowAbove(potential_above: [*c]Window, potential_below: [*c]Window) bool { //igIsWindowAbove + return c.igIsWindowAbove(potential_above, potential_below); +} +pub inline fn isWindowNavFocusable(window: [*c]Window) bool { //igIsWindowNavFocusable + return c.igIsWindowNavFocusable(window); +} +pub inline fn setWindowPos_WindowPtr(window: [*c]Window, pos: Vec2, cond: Cond) void { //igSetWindowPos_WindowPtr + c.igSetWindowPos_WindowPtr(window, @bitCast(pos), @bitCast(cond)); +} +pub inline fn setWindowSize_WindowPtr(window: [*c]Window, size: Vec2, cond: Cond) void { //igSetWindowSize_WindowPtr + c.igSetWindowSize_WindowPtr(window, @bitCast(size), @bitCast(cond)); +} +pub inline fn setWindowCollapsed_WindowPtr(window: [*c]Window, collapsed: bool, cond: Cond) void { //igSetWindowCollapsed_WindowPtr + c.igSetWindowCollapsed_WindowPtr(window, collapsed, @bitCast(cond)); +} +pub inline fn setWindowHitTestHole(window: [*c]Window, pos: Vec2, size: Vec2) void { //igSetWindowHitTestHole + c.igSetWindowHitTestHole(window, @bitCast(pos), @bitCast(size)); +} +pub inline fn windowRectAbsToRel(pout: [*c]Rect, window: [*c]Window, r: Rect) void { //igWindowRectAbsToRel + c.igWindowRectAbsToRel(pout, window, @bitCast(r)); +} +pub inline fn windowRectRelToAbs(pout: [*c]Rect, window: [*c]Window, r: Rect) void { //igWindowRectRelToAbs + c.igWindowRectRelToAbs(pout, window, @bitCast(r)); +} +pub inline fn focusWindow(window: [*c]Window) void { //igFocusWindow + c.igFocusWindow(window); +} +pub inline fn focusTopMostWindowUnderOne(under_this_window: [*c]Window, ignore_window: [*c]Window) void { //igFocusTopMostWindowUnderOne + c.igFocusTopMostWindowUnderOne(under_this_window, ignore_window); +} +pub inline fn bringWindowToFocusFront(window: [*c]Window) void { //igBringWindowToFocusFront + c.igBringWindowToFocusFront(window); +} +pub inline fn bringWindowToDisplayFront(window: [*c]Window) void { //igBringWindowToDisplayFront + c.igBringWindowToDisplayFront(window); +} +pub inline fn bringWindowToDisplayBack(window: [*c]Window) void { //igBringWindowToDisplayBack + c.igBringWindowToDisplayBack(window); +} +pub inline fn bringWindowToDisplayBehind(window: [*c]Window, above_window: [*c]Window) void { //igBringWindowToDisplayBehind + c.igBringWindowToDisplayBehind(window, above_window); +} +pub inline fn findWindowDisplayIndex(window: [*c]Window) c_int { //igFindWindowDisplayIndex + return c.igFindWindowDisplayIndex(window); +} +pub inline fn findBottomMostVisibleWindowWithinBeginStack(window: [*c]Window) [*c]Window { //igFindBottomMostVisibleWindowWithinBeginStack + return c.igFindBottomMostVisibleWindowWithinBeginStack(window); +} +pub inline fn setCurrentFont(font: [*c]Font) void { //igSetCurrentFont + c.igSetCurrentFont(font); +} +pub inline fn getDefaultFont() [*c]Font { //igGetDefaultFont + return c.igGetDefaultFont(); +} +pub inline fn getForegroundDrawList_WindowPtr(window: [*c]Window) [*c]DrawList { //igGetForegroundDrawList_WindowPtr + return c.igGetForegroundDrawList_WindowPtr(window); +} +pub inline fn initialize() void { //igInitialize + c.igInitialize(); +} +pub inline fn shutdown() void { //igShutdown + c.igShutdown(); +} +pub inline fn updateInputEvents(trickle_fast_inputs: bool) void { //igUpdateInputEvents + c.igUpdateInputEvents(trickle_fast_inputs); +} +pub inline fn updateHoveredWindowAndCaptureFlags() void { //igUpdateHoveredWindowAndCaptureFlags + c.igUpdateHoveredWindowAndCaptureFlags(); +} +pub inline fn startMouseMovingWindow(window: [*c]Window) void { //igStartMouseMovingWindow + c.igStartMouseMovingWindow(window); +} +pub inline fn startMouseMovingWindowOrNode(window: [*c]Window, node: [*c]DockNode, undock_floating_node: bool) void { //igStartMouseMovingWindowOrNode + c.igStartMouseMovingWindowOrNode(window, node, undock_floating_node); +} +pub inline fn updateMouseMovingWindowNewFrame() void { //igUpdateMouseMovingWindowNewFrame + c.igUpdateMouseMovingWindowNewFrame(); +} +pub inline fn updateMouseMovingWindowEndFrame() void { //igUpdateMouseMovingWindowEndFrame + c.igUpdateMouseMovingWindowEndFrame(); +} +pub inline fn addContextHook(context: [*c]Context, hook: [*c]const ContextHook) ID { //igAddContextHook + return c.igAddContextHook(context, hook); +} +pub inline fn removeContextHook(context: [*c]Context, hook_to_remove: ID) void { //igRemoveContextHook + c.igRemoveContextHook(context, hook_to_remove); +} +pub inline fn callContextHooks(context: [*c]Context, t: ContextHookType) void { //igCallContextHooks + c.igCallContextHooks(context, @intFromEnum(t)); +} +pub inline fn translateWindowsInViewport(viewport: [*c]ViewportP, old_pos: Vec2, new_pos: Vec2) void { //igTranslateWindowsInViewport + c.igTranslateWindowsInViewport(viewport, @bitCast(old_pos), @bitCast(new_pos)); +} +pub inline fn scaleWindowsInViewport(viewport: [*c]ViewportP, scale: f32) void { //igScaleWindowsInViewport + c.igScaleWindowsInViewport(viewport, scale); +} +pub inline fn destroyPlatformWindow(viewport: [*c]ViewportP) void { //igDestroyPlatformWindow + c.igDestroyPlatformWindow(viewport); +} +pub inline fn setWindowViewport(window: [*c]Window, viewport: [*c]ViewportP) void { //igSetWindowViewport + c.igSetWindowViewport(window, viewport); +} +pub inline fn setCurrentViewport(window: [*c]Window, viewport: [*c]ViewportP) void { //igSetCurrentViewport + c.igSetCurrentViewport(window, viewport); +} +pub inline fn getViewportPlatformMonitor(viewport: [*c]Viewport) [*c]const PlatformMonitor { //igGetViewportPlatformMonitor + return c.igGetViewportPlatformMonitor(viewport); +} +pub inline fn findHoveredViewportFromPlatformWindowStack(mouse_platform_pos: Vec2) [*c]ViewportP { //igFindHoveredViewportFromPlatformWindowStack + return c.igFindHoveredViewportFromPlatformWindowStack(@bitCast(mouse_platform_pos)); +} +pub inline fn markIniSettingsDirty_Nil() void { //igMarkIniSettingsDirty_Nil + c.igMarkIniSettingsDirty_Nil(); +} +pub inline fn markIniSettingsDirty_WindowPtr(window: [*c]Window) void { //igMarkIniSettingsDirty_WindowPtr + c.igMarkIniSettingsDirty_WindowPtr(window); +} +pub inline fn clearIniSettings() void { //igClearIniSettings + c.igClearIniSettings(); +} +pub inline fn createNewWindowSettings(name: [*c]const u8) [*c]WindowSettings { //igCreateNewWindowSettings + return c.igCreateNewWindowSettings(name); +} +pub inline fn findWindowSettings(id: ID) [*c]WindowSettings { //igFindWindowSettings + return c.igFindWindowSettings(id); +} +pub inline fn findOrCreateWindowSettings(name: [*c]const u8) [*c]WindowSettings { //igFindOrCreateWindowSettings + return c.igFindOrCreateWindowSettings(name); +} +pub inline fn addSettingsHandler(handler: [*c]const SettingsHandler) void { //igAddSettingsHandler + c.igAddSettingsHandler(handler); +} +pub inline fn removeSettingsHandler(type_name: [*c]const u8) void { //igRemoveSettingsHandler + c.igRemoveSettingsHandler(type_name); +} +pub inline fn findSettingsHandler(type_name: [*c]const u8) [*c]SettingsHandler { //igFindSettingsHandler + return c.igFindSettingsHandler(type_name); +} +pub inline fn setNextWindowScroll(scroll: Vec2) void { //igSetNextWindowScroll + c.igSetNextWindowScroll(@bitCast(scroll)); +} +pub inline fn setScrollX_WindowPtr(window: [*c]Window, scroll_x: f32) void { //igSetScrollX_WindowPtr + c.igSetScrollX_WindowPtr(window, scroll_x); +} +pub inline fn setScrollY_WindowPtr(window: [*c]Window, scroll_y: f32) void { //igSetScrollY_WindowPtr + c.igSetScrollY_WindowPtr(window, scroll_y); +} +pub inline fn setScrollFromPosX_WindowPtr(window: [*c]Window, local_x: f32, center_x_ratio: f32) void { //igSetScrollFromPosX_WindowPtr + c.igSetScrollFromPosX_WindowPtr(window, local_x, center_x_ratio); +} +pub inline fn setScrollFromPosY_WindowPtr(window: [*c]Window, local_y: f32, center_y_ratio: f32) void { //igSetScrollFromPosY_WindowPtr + c.igSetScrollFromPosY_WindowPtr(window, local_y, center_y_ratio); +} +pub inline fn scrollToItem(flags: ScrollFlags) void { //igScrollToItem + c.igScrollToItem(@bitCast(flags)); +} +pub inline fn scrollToRect(window: [*c]Window, rect: Rect, flags: ScrollFlags) void { //igScrollToRect + c.igScrollToRect(window, @bitCast(rect), @bitCast(flags)); +} +pub inline fn scrollToRectEx(pout: [*c]Vec2, window: [*c]Window, rect: Rect, flags: ScrollFlags) void { //igScrollToRectEx + c.igScrollToRectEx(pout, window, @bitCast(rect), @bitCast(flags)); +} +pub inline fn scrollToBringRectIntoView(window: [*c]Window, rect: Rect) void { //igScrollToBringRectIntoView + c.igScrollToBringRectIntoView(window, @bitCast(rect)); +} +pub inline fn getItemID() ID { //igGetItemID + return c.igGetItemID(); +} +pub inline fn getItemStatusFlags() ItemStatusFlags { //igGetItemStatusFlags + return c.igGetItemStatusFlags(); +} +pub inline fn getItemFlags() ItemFlags { //igGetItemFlags + return c.igGetItemFlags(); +} +pub inline fn getActiveID() ID { //igGetActiveID + return c.igGetActiveID(); +} +pub inline fn getFocusID() ID { //igGetFocusID + return c.igGetFocusID(); +} +pub inline fn setActiveID(id: ID, window: [*c]Window) void { //igSetActiveID + c.igSetActiveID(id, window); +} +pub inline fn setFocusID(id: ID, window: [*c]Window) void { //igSetFocusID + c.igSetFocusID(id, window); +} +pub inline fn clearActiveID() void { //igClearActiveID + c.igClearActiveID(); +} +pub inline fn getHoveredID() ID { //igGetHoveredID + return c.igGetHoveredID(); +} +pub inline fn setHoveredID(id: ID) void { //igSetHoveredID + c.igSetHoveredID(id); +} +pub inline fn keepAliveID(id: ID) void { //igKeepAliveID + c.igKeepAliveID(id); +} +pub inline fn markItemEdited(id: ID) void { //igMarkItemEdited + c.igMarkItemEdited(id); +} +pub inline fn pushOverrideID(id: ID) void { //igPushOverrideID + c.igPushOverrideID(id); +} +pub inline fn getIDWithSeed(str_id_begin: [*c]const u8, str_id_end: [*c]const u8, seed: ID) ID { //igGetIDWithSeed + return c.igGetIDWithSeed(str_id_begin, str_id_end, seed); +} +pub inline fn itemSize_Vec2(size: Vec2, text_baseline_y: f32) void { //igItemSize_Vec2 + c.igItemSize_Vec2(@bitCast(size), text_baseline_y); +} +pub inline fn itemSize_Rect(bb: Rect, text_baseline_y: f32) void { //igItemSize_Rect + c.igItemSize_Rect(@bitCast(bb), text_baseline_y); +} +pub inline fn itemAdd(bb: Rect, id: ID, nav_bb: [*c]const Rect, extra_flags: ItemFlags) bool { //igItemAdd + return c.igItemAdd(@bitCast(bb), id, nav_bb, @bitCast(extra_flags)); +} +pub inline fn itemHoverable(bb: Rect, id: ID) bool { //igItemHoverable + return c.igItemHoverable(@bitCast(bb), id); +} +pub inline fn isClippedEx(bb: Rect, id: ID) bool { //igIsClippedEx + return c.igIsClippedEx(@bitCast(bb), id); +} +pub inline fn setLastItemData(item_id: ID, in_flags: ItemFlags, status_flags: ItemStatusFlags, item_rect: Rect) void { //igSetLastItemData + c.igSetLastItemData(item_id, @bitCast(in_flags), @bitCast(status_flags), @bitCast(item_rect)); +} +pub inline fn calcItemSize(pout: [*c]Vec2, size: Vec2, default_w: f32, default_h: f32) void { //igCalcItemSize + c.igCalcItemSize(pout, @bitCast(size), default_w, default_h); +} +pub inline fn calcWrapWidthForPos(pos: Vec2, wrap_pos_x: f32) f32 { //igCalcWrapWidthForPos + return c.igCalcWrapWidthForPos(@bitCast(pos), wrap_pos_x); +} +pub inline fn pushMultiItemsWidths(components: c_int, width_full: f32) void { //igPushMultiItemsWidths + c.igPushMultiItemsWidths(components, width_full); +} +pub inline fn isItemToggledSelection() bool { //igIsItemToggledSelection + return c.igIsItemToggledSelection(); +} +pub inline fn getContentRegionMaxAbs(pout: [*c]Vec2) void { //igGetContentRegionMaxAbs + c.igGetContentRegionMaxAbs(pout); +} +pub inline fn shrinkWidths(items: [*c]ShrinkWidthItem, count: c_int, width_excess: f32) void { //igShrinkWidths + c.igShrinkWidths(items, count, width_excess); +} +pub inline fn pushItemFlag(option: ItemFlags, enabled: bool) void { //igPushItemFlag + c.igPushItemFlag(@bitCast(option), enabled); +} +pub inline fn popItemFlag() void { //igPopItemFlag + c.igPopItemFlag(); +} +pub inline fn logBegin(t: LogType, auto_open_depth: c_int) void { //igLogBegin + c.igLogBegin(@intFromEnum(t), auto_open_depth); +} +pub inline fn logToBuffer(auto_open_depth: c_int) void { //igLogToBuffer + c.igLogToBuffer(auto_open_depth); +} +pub inline fn logRenderedText(ref_pos: [*c]const Vec2, text: [*c]const u8, text_end: [*c]const u8) void { //igLogRenderedText + c.igLogRenderedText(ref_pos, text, text_end); +} +pub inline fn logSetNextTextDecoration(prefix: [*c]const u8, suffix: [*c]const u8) void { //igLogSetNextTextDecoration + c.igLogSetNextTextDecoration(prefix, suffix); +} +pub inline fn beginChildEx(name: [*c]const u8, id: ID, size_arg: Vec2, border: bool, flags: WindowFlags) bool { //igBeginChildEx + return c.igBeginChildEx(name, id, @bitCast(size_arg), border, @bitCast(flags)); +} +pub inline fn openPopupEx(id: ID, popup_flags: PopupFlags) void { //igOpenPopupEx + c.igOpenPopupEx(id, @bitCast(popup_flags)); +} +pub inline fn closePopupToLevel(remaining: c_int, restore_focus_to_window_under_popup: bool) void { //igClosePopupToLevel + c.igClosePopupToLevel(remaining, restore_focus_to_window_under_popup); +} +pub inline fn closePopupsOverWindow(ref_window: [*c]Window, restore_focus_to_window_under_popup: bool) void { //igClosePopupsOverWindow + c.igClosePopupsOverWindow(ref_window, restore_focus_to_window_under_popup); +} +pub inline fn closePopupsExceptModals() void { //igClosePopupsExceptModals + c.igClosePopupsExceptModals(); +} +pub inline fn isPopupOpen_ID(id: ID, popup_flags: PopupFlags) bool { //igIsPopupOpen_ID + return c.igIsPopupOpen_ID(id, @bitCast(popup_flags)); +} +pub inline fn beginPopupEx(id: ID, extra_flags: WindowFlags) bool { //igBeginPopupEx + return c.igBeginPopupEx(id, @bitCast(extra_flags)); +} +pub inline fn beginTooltipEx(tooltip_flags: TooltipFlags, extra_window_flags: WindowFlags) void { //igBeginTooltipEx + c.igBeginTooltipEx(@bitCast(tooltip_flags), @bitCast(extra_window_flags)); +} +pub inline fn getPopupAllowedExtentRect(pout: [*c]Rect, window: [*c]Window) void { //igGetPopupAllowedExtentRect + c.igGetPopupAllowedExtentRect(pout, window); +} +pub inline fn getTopMostPopupModal() [*c]Window { //igGetTopMostPopupModal + return c.igGetTopMostPopupModal(); +} +pub inline fn getTopMostAndVisiblePopupModal() [*c]Window { //igGetTopMostAndVisiblePopupModal + return c.igGetTopMostAndVisiblePopupModal(); +} +pub inline fn findBestWindowPosForPopup(pout: [*c]Vec2, window: [*c]Window) void { //igFindBestWindowPosForPopup + c.igFindBestWindowPosForPopup(pout, window); +} +pub inline fn findBestWindowPosForPopupEx(pout: [*c]Vec2, ref_pos: Vec2, size: Vec2, last_dir: [*c]Dir, r_outer: Rect, r_avoid: Rect, policy: PopupPositionPolicy) void { //igFindBestWindowPosForPopupEx + c.igFindBestWindowPosForPopupEx(pout, @bitCast(ref_pos), @bitCast(size), last_dir, @bitCast(r_outer), @bitCast(r_avoid), @intFromEnum(policy)); +} +pub inline fn beginViewportSideBar(name: [*c]const u8, viewport: [*c]Viewport, dir: Dir, size: f32, window_flags: WindowFlags) bool { //igBeginViewportSideBar + return c.igBeginViewportSideBar(name, viewport, @intFromEnum(dir), size, @bitCast(window_flags)); +} +pub inline fn beginMenuEx(label: [*c]const u8, icon: [*c]const u8, enabled: bool) bool { //igBeginMenuEx + return c.igBeginMenuEx(label, icon, enabled); +} +pub inline fn menuItemEx(label: [*c]const u8, icon: [*c]const u8, shortcut: [*c]const u8, selected: bool, enabled: bool) bool { //igMenuItemEx + return c.igMenuItemEx(label, icon, shortcut, selected, enabled); +} +pub inline fn beginComboPopup(popup_id: ID, bb: Rect, flags: ComboFlags) bool { //igBeginComboPopup + return c.igBeginComboPopup(popup_id, @bitCast(bb), @bitCast(flags)); +} +pub inline fn beginComboPreview() bool { //igBeginComboPreview + return c.igBeginComboPreview(); +} +pub inline fn endComboPreview() void { //igEndComboPreview + c.igEndComboPreview(); +} +pub inline fn navInitWindow(window: [*c]Window, force_reinit: bool) void { //igNavInitWindow + c.igNavInitWindow(window, force_reinit); +} +pub inline fn navInitRequestApplyResult() void { //igNavInitRequestApplyResult + c.igNavInitRequestApplyResult(); +} +pub inline fn navMoveRequestButNoResultYet() bool { //igNavMoveRequestButNoResultYet + return c.igNavMoveRequestButNoResultYet(); +} +pub inline fn navMoveRequestSubmit(move_dir: Dir, clip_dir: Dir, move_flags: NavMoveFlags, scroll_flags: ScrollFlags) void { //igNavMoveRequestSubmit + c.igNavMoveRequestSubmit(@intFromEnum(move_dir), @intFromEnum(clip_dir), @bitCast(move_flags), @bitCast(scroll_flags)); +} +pub inline fn navMoveRequestForward(move_dir: Dir, clip_dir: Dir, move_flags: NavMoveFlags, scroll_flags: ScrollFlags) void { //igNavMoveRequestForward + c.igNavMoveRequestForward(@intFromEnum(move_dir), @intFromEnum(clip_dir), @bitCast(move_flags), @bitCast(scroll_flags)); +} +pub inline fn navMoveRequestResolveWithLastItem(result: [*c]NavItemData) void { //igNavMoveRequestResolveWithLastItem + c.igNavMoveRequestResolveWithLastItem(result); +} +pub inline fn navMoveRequestCancel() void { //igNavMoveRequestCancel + c.igNavMoveRequestCancel(); +} +pub inline fn navMoveRequestApplyResult() void { //igNavMoveRequestApplyResult + c.igNavMoveRequestApplyResult(); +} +pub inline fn navMoveRequestTryWrapping(window: [*c]Window, move_flags: NavMoveFlags) void { //igNavMoveRequestTryWrapping + c.igNavMoveRequestTryWrapping(window, @bitCast(move_flags)); +} +pub inline fn getNavInputName(n: NavInput) [*c]const u8 { //igGetNavInputName + return c.igGetNavInputName(@intFromEnum(n)); +} +pub inline fn getNavInputAmount(n: NavInput, mode: NavReadMode) f32 { //igGetNavInputAmount + return c.igGetNavInputAmount(@intFromEnum(n), @intFromEnum(mode)); +} +pub inline fn getNavInputAmount2d(pout: [*c]Vec2, dir_sources: NavDirSourceFlags, mode: NavReadMode, slow_factor: f32, fast_factor: f32) void { //igGetNavInputAmount2d + c.igGetNavInputAmount2d(pout, @bitCast(dir_sources), @intFromEnum(mode), slow_factor, fast_factor); +} +pub inline fn calcTypematicRepeatAmount(t0: f32, t1: f32, repeat_delay: f32, repeat_rate: f32) c_int { //igCalcTypematicRepeatAmount + return c.igCalcTypematicRepeatAmount(t0, t1, repeat_delay, repeat_rate); +} +pub inline fn activateItem(id: ID) void { //igActivateItem + c.igActivateItem(id); +} +pub inline fn setNavWindow(window: [*c]Window) void { //igSetNavWindow + c.igSetNavWindow(window); +} +pub inline fn setNavID(id: ID, nav_layer: NavLayer, focus_scope_id: ID, rect_rel: Rect) void { //igSetNavID + c.igSetNavID(id, @intFromEnum(nav_layer), focus_scope_id, @bitCast(rect_rel)); +} +pub inline fn pushFocusScope(id: ID) void { //igPushFocusScope + c.igPushFocusScope(id); +} +pub inline fn popFocusScope() void { //igPopFocusScope + c.igPopFocusScope(); +} +pub inline fn getFocusedFocusScope() ID { //igGetFocusedFocusScope + return c.igGetFocusedFocusScope(); +} +pub inline fn getFocusScope() ID { //igGetFocusScope + return c.igGetFocusScope(); +} +pub inline fn isNamedKey(key: Key) bool { //igIsNamedKey + return c.igIsNamedKey(@intFromEnum(key)); +} +pub inline fn isLegacyKey(key: Key) bool { //igIsLegacyKey + return c.igIsLegacyKey(@intFromEnum(key)); +} +pub inline fn isGamepadKey(key: Key) bool { //igIsGamepadKey + return c.igIsGamepadKey(@intFromEnum(key)); +} +pub inline fn getKeyData(key: Key) [*c]KeyData { //igGetKeyData + return c.igGetKeyData(@intFromEnum(key)); +} +pub inline fn setItemUsingMouseWheel() void { //igSetItemUsingMouseWheel + c.igSetItemUsingMouseWheel(); +} +pub inline fn setActiveIdUsingNavAndKeys() void { //igSetActiveIdUsingNavAndKeys + c.igSetActiveIdUsingNavAndKeys(); +} +pub inline fn isActiveIdUsingNavDir(dir: Dir) bool { //igIsActiveIdUsingNavDir + return c.igIsActiveIdUsingNavDir(@intFromEnum(dir)); +} +pub inline fn isActiveIdUsingNavInput(input: NavInput) bool { //igIsActiveIdUsingNavInput + return c.igIsActiveIdUsingNavInput(@intFromEnum(input)); +} +pub inline fn isActiveIdUsingKey(key: Key) bool { //igIsActiveIdUsingKey + return c.igIsActiveIdUsingKey(@intFromEnum(key)); +} +pub inline fn setActiveIdUsingKey(key: Key) void { //igSetActiveIdUsingKey + c.igSetActiveIdUsingKey(@intFromEnum(key)); +} +pub inline fn isMouseDragPastThreshold(btn: MouseButton, lock_threshold: f32) bool { //igIsMouseDragPastThreshold + return c.igIsMouseDragPastThreshold(@intFromEnum(btn), lock_threshold); +} +pub inline fn isNavInputDown(n: NavInput) bool { //igIsNavInputDown + return c.igIsNavInputDown(@intFromEnum(n)); +} +pub inline fn isNavInputTest(n: NavInput, rm: NavReadMode) bool { //igIsNavInputTest + return c.igIsNavInputTest(@intFromEnum(n), @intFromEnum(rm)); +} +pub inline fn getMergedModFlags() ModFlags { //igGetMergedModFlags + return c.igGetMergedModFlags(); +} +pub inline fn isKeyPressedMap(key: Key, repeat: bool) bool { //igIsKeyPressedMap + return c.igIsKeyPressedMap(@intFromEnum(key), repeat); +} +pub inline fn dockContextInitialize(ctx: [*c]Context) void { //igDockContextInitialize + c.igDockContextInitialize(ctx); +} +pub inline fn dockContextShutdown(ctx: [*c]Context) void { //igDockContextShutdown + c.igDockContextShutdown(ctx); +} +pub inline fn dockContextClearNodes(ctx: [*c]Context, root_id: ID, clear_settings_refs: bool) void { //igDockContextClearNodes + c.igDockContextClearNodes(ctx, root_id, clear_settings_refs); +} +pub inline fn dockContextRebuildNodes(ctx: [*c]Context) void { //igDockContextRebuildNodes + c.igDockContextRebuildNodes(ctx); +} +pub inline fn dockContextNewFrameUpdateUndocking(ctx: [*c]Context) void { //igDockContextNewFrameUpdateUndocking + c.igDockContextNewFrameUpdateUndocking(ctx); +} +pub inline fn dockContextNewFrameUpdateDocking(ctx: [*c]Context) void { //igDockContextNewFrameUpdateDocking + c.igDockContextNewFrameUpdateDocking(ctx); +} +pub inline fn dockContextEndFrame(ctx: [*c]Context) void { //igDockContextEndFrame + c.igDockContextEndFrame(ctx); +} +pub inline fn dockContextGenNodeID(ctx: [*c]Context) ID { //igDockContextGenNodeID + return c.igDockContextGenNodeID(ctx); +} +pub inline fn dockContextQueueDock(ctx: [*c]Context, target: [*c]Window, target_node: [*c]DockNode, payload: [*c]Window, split_dir: Dir, split_ratio: f32, split_outer: bool) void { //igDockContextQueueDock + c.igDockContextQueueDock(ctx, target, target_node, payload, @intFromEnum(split_dir), split_ratio, split_outer); +} +pub inline fn dockContextQueueUndockWindow(ctx: [*c]Context, window: [*c]Window) void { //igDockContextQueueUndockWindow + c.igDockContextQueueUndockWindow(ctx, window); +} +pub inline fn dockContextQueueUndockNode(ctx: [*c]Context, node: [*c]DockNode) void { //igDockContextQueueUndockNode + c.igDockContextQueueUndockNode(ctx, node); +} +pub inline fn dockContextCalcDropPosForDocking(target: [*c]Window, target_node: [*c]DockNode, payload: [*c]Window, split_dir: Dir, split_outer: bool, out_pos: [*c]Vec2) bool { //igDockContextCalcDropPosForDocking + return c.igDockContextCalcDropPosForDocking(target, target_node, payload, @intFromEnum(split_dir), split_outer, out_pos); +} +pub inline fn dockNodeBeginAmendTabBar(node: [*c]DockNode) bool { //igDockNodeBeginAmendTabBar + return c.igDockNodeBeginAmendTabBar(node); +} +pub inline fn dockNodeEndAmendTabBar() void { //igDockNodeEndAmendTabBar + c.igDockNodeEndAmendTabBar(); +} +pub inline fn dockNodeGetRootNode(node: [*c]DockNode) [*c]DockNode { //igDockNodeGetRootNode + return c.igDockNodeGetRootNode(node); +} +pub inline fn dockNodeIsInHierarchyOf(node: [*c]DockNode, parent: [*c]DockNode) bool { //igDockNodeIsInHierarchyOf + return c.igDockNodeIsInHierarchyOf(node, parent); +} +pub inline fn dockNodeGetDepth(node: [*c]const DockNode) c_int { //igDockNodeGetDepth + return c.igDockNodeGetDepth(node); +} +pub inline fn dockNodeGetWindowMenuButtonId(node: [*c]const DockNode) ID { //igDockNodeGetWindowMenuButtonId + return c.igDockNodeGetWindowMenuButtonId(node); +} +pub inline fn getWindowDockNode() [*c]DockNode { //igGetWindowDockNode + return c.igGetWindowDockNode(); +} +pub inline fn getWindowAlwaysWantOwnTabBar(window: [*c]Window) bool { //igGetWindowAlwaysWantOwnTabBar + return c.igGetWindowAlwaysWantOwnTabBar(window); +} +pub inline fn beginDocked(window: [*c]Window, p_open: [*c]bool) void { //igBeginDocked + c.igBeginDocked(window, p_open); +} +pub inline fn beginDockableDragDropSource(window: [*c]Window) void { //igBeginDockableDragDropSource + c.igBeginDockableDragDropSource(window); +} +pub inline fn beginDockableDragDropTarget(window: [*c]Window) void { //igBeginDockableDragDropTarget + c.igBeginDockableDragDropTarget(window); +} +pub inline fn setWindowDock(window: [*c]Window, dock_id: ID, cond: Cond) void { //igSetWindowDock + c.igSetWindowDock(window, dock_id, @bitCast(cond)); +} +pub inline fn dockBuilderDockWindow(window_name: [*c]const u8, node_id: ID) void { //igDockBuilderDockWindow + c.igDockBuilderDockWindow(window_name, node_id); +} +pub inline fn dockBuilderGetNode(node_id: ID) [*c]DockNode { //igDockBuilderGetNode + return c.igDockBuilderGetNode(node_id); +} +pub inline fn dockBuilderGetCentralNode(node_id: ID) [*c]DockNode { //igDockBuilderGetCentralNode + return c.igDockBuilderGetCentralNode(node_id); +} +pub inline fn dockBuilderAddNode(node_id: ID, flags: DockNodeFlags) ID { //igDockBuilderAddNode + return c.igDockBuilderAddNode(node_id, @bitCast(flags)); +} +pub inline fn dockBuilderRemoveNode(node_id: ID) void { //igDockBuilderRemoveNode + c.igDockBuilderRemoveNode(node_id); +} +pub inline fn dockBuilderRemoveNodeDockedWindows(node_id: ID, clear_settings_refs: bool) void { //igDockBuilderRemoveNodeDockedWindows + c.igDockBuilderRemoveNodeDockedWindows(node_id, clear_settings_refs); +} +pub inline fn dockBuilderRemoveNodeChildNodes(node_id: ID) void { //igDockBuilderRemoveNodeChildNodes + c.igDockBuilderRemoveNodeChildNodes(node_id); +} +pub inline fn dockBuilderSetNodePos(node_id: ID, pos: Vec2) void { //igDockBuilderSetNodePos + c.igDockBuilderSetNodePos(node_id, @bitCast(pos)); +} +pub inline fn dockBuilderSetNodeSize(node_id: ID, size: Vec2) void { //igDockBuilderSetNodeSize + c.igDockBuilderSetNodeSize(node_id, @bitCast(size)); +} +pub inline fn dockBuilderSplitNode(node_id: ID, split_dir: Dir, size_ratio_for_node_at_dir: f32, out_id_at_dir: [*c]ID, out_id_at_opposite_dir: [*c]ID) ID { //igDockBuilderSplitNode + return c.igDockBuilderSplitNode(node_id, @intFromEnum(split_dir), size_ratio_for_node_at_dir, out_id_at_dir, out_id_at_opposite_dir); +} +pub inline fn dockBuilderCopyDockSpace(src_dockspace_id: ID, dst_dockspace_id: ID, in_window_remap_pairs: [*c]CharVector) void { //igDockBuilderCopyDockSpace + c.igDockBuilderCopyDockSpace(src_dockspace_id, dst_dockspace_id, in_window_remap_pairs); +} +pub inline fn dockBuilderCopyNode(src_node_id: ID, dst_node_id: ID, out_node_remap_pairs: [*c]IDVector) void { //igDockBuilderCopyNode + c.igDockBuilderCopyNode(src_node_id, dst_node_id, out_node_remap_pairs); +} +pub inline fn dockBuilderCopyWindowSettings(src_name: [*c]const u8, dst_name: [*c]const u8) void { //igDockBuilderCopyWindowSettings + c.igDockBuilderCopyWindowSettings(src_name, dst_name); +} +pub inline fn dockBuilderFinish(node_id: ID) void { //igDockBuilderFinish + c.igDockBuilderFinish(node_id); +} +pub inline fn isDragDropActive() bool { //igIsDragDropActive + return c.igIsDragDropActive(); +} +pub inline fn beginDragDropTargetCustom(bb: Rect, id: ID) bool { //igBeginDragDropTargetCustom + return c.igBeginDragDropTargetCustom(@bitCast(bb), id); +} +pub inline fn clearDragDrop() void { //igClearDragDrop + c.igClearDragDrop(); +} +pub inline fn isDragDropPayloadBeingAccepted() bool { //igIsDragDropPayloadBeingAccepted + return c.igIsDragDropPayloadBeingAccepted(); +} +pub inline fn setWindowClipRectBeforeSetChannel(window: [*c]Window, clip_rect: Rect) void { //igSetWindowClipRectBeforeSetChannel + c.igSetWindowClipRectBeforeSetChannel(window, @bitCast(clip_rect)); +} +pub inline fn beginColumns(str_id: [*c]const u8, count: c_int, flags: OldColumnFlags) void { //igBeginColumns + c.igBeginColumns(str_id, count, @bitCast(flags)); +} +pub inline fn endColumns() void { //igEndColumns + c.igEndColumns(); +} +pub inline fn pushColumnClipRect(column_index: c_int) void { //igPushColumnClipRect + c.igPushColumnClipRect(column_index); +} +pub inline fn pushColumnsBackground() void { //igPushColumnsBackground + c.igPushColumnsBackground(); +} +pub inline fn popColumnsBackground() void { //igPopColumnsBackground + c.igPopColumnsBackground(); +} +pub inline fn getColumnsID(str_id: [*c]const u8, count: c_int) ID { //igGetColumnsID + return c.igGetColumnsID(str_id, count); +} +pub inline fn getColumnOffsetFromNorm(col: [*c]const OldColumns, offset_norm: f32) f32 { //igGetColumnOffsetFromNorm + return c.igGetColumnOffsetFromNorm(col, offset_norm); +} +pub inline fn getColumnNormFromOffset(col: [*c]const OldColumns, offset: f32) f32 { //igGetColumnNormFromOffset + return c.igGetColumnNormFromOffset(col, offset); +} +pub inline fn tableOpenContextMenu(column_n: c_int) void { //igTableOpenContextMenu + c.igTableOpenContextMenu(column_n); +} +pub inline fn tableSetColumnWidth(column_n: c_int, width: f32) void { //igTableSetColumnWidth + c.igTableSetColumnWidth(column_n, width); +} +pub inline fn tableSetColumnSortDirection(column_n: c_int, sort_direction: SortDirection, append_to_sort_specs: bool) void { //igTableSetColumnSortDirection + c.igTableSetColumnSortDirection(column_n, @intFromEnum(sort_direction), append_to_sort_specs); +} +pub inline fn tableGetHoveredColumn() c_int { //igTableGetHoveredColumn + return c.igTableGetHoveredColumn(); +} +pub inline fn tableGetHeaderRowHeight() f32 { //igTableGetHeaderRowHeight + return c.igTableGetHeaderRowHeight(); +} +pub inline fn tablePushBackgroundChannel() void { //igTablePushBackgroundChannel + c.igTablePushBackgroundChannel(); +} +pub inline fn tablePopBackgroundChannel() void { //igTablePopBackgroundChannel + c.igTablePopBackgroundChannel(); +} +pub inline fn getCurrentTable() [*c]Table { //igGetCurrentTable + return c.igGetCurrentTable(); +} +pub inline fn tableFindByID(id: ID) [*c]Table { //igTableFindByID + return c.igTableFindByID(id); +} +pub inline fn beginTableEx(name: [*c]const u8, id: ID, columns_count: c_int, flags: TableFlags, outer_size: Vec2, inner_width: f32) bool { //igBeginTableEx + return c.igBeginTableEx(name, id, columns_count, @bitCast(flags), @bitCast(outer_size), inner_width); +} +pub inline fn tableBeginInitMemory(table: [*c]Table, columns_count: c_int) void { //igTableBeginInitMemory + c.igTableBeginInitMemory(table, columns_count); +} +pub inline fn tableBeginApplyRequests(table: [*c]Table) void { //igTableBeginApplyRequests + c.igTableBeginApplyRequests(table); +} +pub inline fn tableSetupDrawChannels(table: [*c]Table) void { //igTableSetupDrawChannels + c.igTableSetupDrawChannels(table); +} +pub inline fn tableUpdateLayout(table: [*c]Table) void { //igTableUpdateLayout + c.igTableUpdateLayout(table); +} +pub inline fn tableUpdateBorders(table: [*c]Table) void { //igTableUpdateBorders + c.igTableUpdateBorders(table); +} +pub inline fn tableUpdateColumnsWeightFromWidth(table: [*c]Table) void { //igTableUpdateColumnsWeightFromWidth + c.igTableUpdateColumnsWeightFromWidth(table); +} +pub inline fn tableDrawBorders(table: [*c]Table) void { //igTableDrawBorders + c.igTableDrawBorders(table); +} +pub inline fn tableDrawContextMenu(table: [*c]Table) void { //igTableDrawContextMenu + c.igTableDrawContextMenu(table); +} +pub inline fn tableMergeDrawChannels(table: [*c]Table) void { //igTableMergeDrawChannels + c.igTableMergeDrawChannels(table); +} +pub inline fn tableGetInstanceData(table: [*c]Table, instance_no: c_int) [*c]TableInstanceData { //igTableGetInstanceData + return c.igTableGetInstanceData(table, instance_no); +} +pub inline fn tableSortSpecsSanitize(table: [*c]Table) void { //igTableSortSpecsSanitize + c.igTableSortSpecsSanitize(table); +} +pub inline fn tableSortSpecsBuild(table: [*c]Table) void { //igTableSortSpecsBuild + c.igTableSortSpecsBuild(table); +} +pub inline fn tableGetColumnNextSortDirection(column: [*c]TableColumn) SortDirection { //igTableGetColumnNextSortDirection + return c.igTableGetColumnNextSortDirection(column); +} +pub inline fn tableFixColumnSortDirection(table: [*c]Table, column: [*c]TableColumn) void { //igTableFixColumnSortDirection + c.igTableFixColumnSortDirection(table, column); +} +pub inline fn tableGetColumnWidthAuto(table: [*c]Table, column: [*c]TableColumn) f32 { //igTableGetColumnWidthAuto + return c.igTableGetColumnWidthAuto(table, column); +} +pub inline fn tableBeginRow(table: [*c]Table) void { //igTableBeginRow + c.igTableBeginRow(table); +} +pub inline fn tableEndRow(table: [*c]Table) void { //igTableEndRow + c.igTableEndRow(table); +} +pub inline fn tableBeginCell(table: [*c]Table, column_n: c_int) void { //igTableBeginCell + c.igTableBeginCell(table, column_n); +} +pub inline fn tableEndCell(table: [*c]Table) void { //igTableEndCell + c.igTableEndCell(table); +} +pub inline fn tableGetCellBgRect(pout: [*c]Rect, table: [*c]const Table, column_n: c_int) void { //igTableGetCellBgRect + c.igTableGetCellBgRect(pout, table, column_n); +} +pub inline fn tableGetColumnName_TablePtr(table: [*c]const Table, column_n: c_int) [*c]const u8 { //igTableGetColumnName_TablePtr + return c.igTableGetColumnName_TablePtr(table, column_n); +} +pub inline fn tableGetColumnResizeID(table: [*c]const Table, column_n: c_int, instance_no: c_int) ID { //igTableGetColumnResizeID + return c.igTableGetColumnResizeID(table, column_n, instance_no); +} +pub inline fn tableGetMaxColumnWidth(table: [*c]const Table, column_n: c_int) f32 { //igTableGetMaxColumnWidth + return c.igTableGetMaxColumnWidth(table, column_n); +} +pub inline fn tableSetColumnWidthAutoSingle(table: [*c]Table, column_n: c_int) void { //igTableSetColumnWidthAutoSingle + c.igTableSetColumnWidthAutoSingle(table, column_n); +} +pub inline fn tableSetColumnWidthAutoAll(table: [*c]Table) void { //igTableSetColumnWidthAutoAll + c.igTableSetColumnWidthAutoAll(table); +} +pub inline fn tableRemove(table: [*c]Table) void { //igTableRemove + c.igTableRemove(table); +} +pub inline fn tableGcCompactTransientBuffers_TablePtr(table: [*c]Table) void { //igTableGcCompactTransientBuffers_TablePtr + c.igTableGcCompactTransientBuffers_TablePtr(table); +} +pub inline fn tableGcCompactTransientBuffers_TableTempDataPtr(table: [*c]TableTempData) void { //igTableGcCompactTransientBuffers_TableTempDataPtr + c.igTableGcCompactTransientBuffers_TableTempDataPtr(table); +} +pub inline fn tableGcCompactSettings() void { //igTableGcCompactSettings + c.igTableGcCompactSettings(); +} +pub inline fn tableLoadSettings(table: [*c]Table) void { //igTableLoadSettings + c.igTableLoadSettings(table); +} +pub inline fn tableSaveSettings(table: [*c]Table) void { //igTableSaveSettings + c.igTableSaveSettings(table); +} +pub inline fn tableResetSettings(table: [*c]Table) void { //igTableResetSettings + c.igTableResetSettings(table); +} +pub inline fn tableGetBoundSettings(table: [*c]Table) [*c]TableSettings { //igTableGetBoundSettings + return c.igTableGetBoundSettings(table); +} +pub inline fn tableSettingsAddSettingsHandler() void { //igTableSettingsAddSettingsHandler + c.igTableSettingsAddSettingsHandler(); +} +pub inline fn tableSettingsCreate(id: ID, columns_count: c_int) [*c]TableSettings { //igTableSettingsCreate + return c.igTableSettingsCreate(id, columns_count); +} +pub inline fn tableSettingsFindByID(id: ID) [*c]TableSettings { //igTableSettingsFindByID + return c.igTableSettingsFindByID(id); +} +pub inline fn beginTabBarEx(tab_bar: [*c]TabBar, bb: Rect, flags: TabBarFlags, dock_node: [*c]DockNode) bool { //igBeginTabBarEx + return c.igBeginTabBarEx(tab_bar, @bitCast(bb), @bitCast(flags), dock_node); +} +pub inline fn tabBarFindTabByID(tab_bar: [*c]TabBar, tab_id: ID) [*c]TabItem { //igTabBarFindTabByID + return c.igTabBarFindTabByID(tab_bar, tab_id); +} +pub inline fn tabBarFindMostRecentlySelectedTabForActiveWindow(tab_bar: [*c]TabBar) [*c]TabItem { //igTabBarFindMostRecentlySelectedTabForActiveWindow + return c.igTabBarFindMostRecentlySelectedTabForActiveWindow(tab_bar); +} +pub inline fn tabBarAddTab(tab_bar: [*c]TabBar, tab_flags: TabItemFlags, window: [*c]Window) void { //igTabBarAddTab + c.igTabBarAddTab(tab_bar, @bitCast(tab_flags), window); +} +pub inline fn tabBarRemoveTab(tab_bar: [*c]TabBar, tab_id: ID) void { //igTabBarRemoveTab + c.igTabBarRemoveTab(tab_bar, tab_id); +} +pub inline fn tabBarCloseTab(tab_bar: [*c]TabBar, tab: [*c]TabItem) void { //igTabBarCloseTab + c.igTabBarCloseTab(tab_bar, tab); +} +pub inline fn tabBarQueueReorder(tab_bar: [*c]TabBar, tab: [*c]const TabItem, offset: c_int) void { //igTabBarQueueReorder + c.igTabBarQueueReorder(tab_bar, tab, offset); +} +pub inline fn tabBarQueueReorderFromMousePos(tab_bar: [*c]TabBar, tab: [*c]const TabItem, mouse_pos: Vec2) void { //igTabBarQueueReorderFromMousePos + c.igTabBarQueueReorderFromMousePos(tab_bar, tab, @bitCast(mouse_pos)); +} +pub inline fn tabBarProcessReorder(tab_bar: [*c]TabBar) bool { //igTabBarProcessReorder + return c.igTabBarProcessReorder(tab_bar); +} +pub inline fn tabItemEx(tab_bar: [*c]TabBar, label: [*c]const u8, p_open: [*c]bool, flags: TabItemFlags, docked_window: [*c]Window) bool { //igTabItemEx + return c.igTabItemEx(tab_bar, label, p_open, @bitCast(flags), docked_window); +} +pub inline fn tabItemCalcSize(pout: [*c]Vec2, label: [*c]const u8, has_close_button: bool) void { //igTabItemCalcSize + c.igTabItemCalcSize(pout, label, has_close_button); +} +pub inline fn tabItemBackground(draw_list: [*c]DrawList, bb: Rect, flags: TabItemFlags, col: U32) void { //igTabItemBackground + c.igTabItemBackground(draw_list, @bitCast(bb), @bitCast(flags), col); +} +pub inline fn renderText(pos: Vec2, text: [*c]const u8, text_end: [*c]const u8, hide_text_after_hash: bool) void { //igRenderText + c.igRenderText(@bitCast(pos), text, text_end, hide_text_after_hash); +} +pub inline fn renderTextWrapped(pos: Vec2, text: [*c]const u8, text_end: [*c]const u8, wrap_width: f32) void { //igRenderTextWrapped + c.igRenderTextWrapped(@bitCast(pos), text, text_end, wrap_width); +} +pub inline fn renderTextEllipsis(draw_list: [*c]DrawList, pos_min: Vec2, pos_max: Vec2, clip_max_x: f32, ellipsis_max_x: f32, text: [*c]const u8, text_end: [*c]const u8, text_size_if_known: [*c]const Vec2) void { //igRenderTextEllipsis + c.igRenderTextEllipsis(draw_list, @bitCast(pos_min), @bitCast(pos_max), clip_max_x, ellipsis_max_x, text, text_end, text_size_if_known); +} +pub inline fn renderFrame(p_min: Vec2, p_max: Vec2, fill_col: U32, border: bool, rounding: f32) void { //igRenderFrame + c.igRenderFrame(@bitCast(p_min), @bitCast(p_max), fill_col, border, rounding); +} +pub inline fn renderFrameBorder(p_min: Vec2, p_max: Vec2, rounding: f32) void { //igRenderFrameBorder + c.igRenderFrameBorder(@bitCast(p_min), @bitCast(p_max), rounding); +} +pub inline fn renderColorRectWithAlphaCheckerboard(draw_list: [*c]DrawList, p_min: Vec2, p_max: Vec2, fill_col: U32, grid_step: f32, grid_off: Vec2, rounding: f32, flags: DrawFlags) void { //igRenderColorRectWithAlphaCheckerboard + c.igRenderColorRectWithAlphaCheckerboard(draw_list, @bitCast(p_min), @bitCast(p_max), fill_col, grid_step, @bitCast(grid_off), rounding, @bitCast(flags)); +} +pub inline fn renderNavHighlight(bb: Rect, id: ID, flags: NavHighlightFlags) void { //igRenderNavHighlight + c.igRenderNavHighlight(@bitCast(bb), id, @bitCast(flags)); +} +pub inline fn findRenderedTextEnd(text: [*c]const u8, text_end: [*c]const u8) [*c]const u8 { //igFindRenderedTextEnd + return c.igFindRenderedTextEnd(text, text_end); +} +pub inline fn renderMouseCursor(pos: Vec2, scale: f32, mouse_cursor: MouseCursor, col_fill: U32, col_border: U32, col_shadow: U32) void { //igRenderMouseCursor + c.igRenderMouseCursor(@bitCast(pos), scale, @intFromEnum(mouse_cursor), col_fill, col_border, col_shadow); +} +pub inline fn renderArrow(draw_list: [*c]DrawList, pos: Vec2, col: U32, dir: Dir, scale: f32) void { //igRenderArrow + c.igRenderArrow(draw_list, @bitCast(pos), col, @intFromEnum(dir), scale); +} +pub inline fn renderBullet(draw_list: [*c]DrawList, pos: Vec2, col: U32) void { //igRenderBullet + c.igRenderBullet(draw_list, @bitCast(pos), col); +} +pub inline fn renderCheckMark(draw_list: [*c]DrawList, pos: Vec2, col: U32, sz: f32) void { //igRenderCheckMark + c.igRenderCheckMark(draw_list, @bitCast(pos), col, sz); +} +pub inline fn renderArrowPointingAt(draw_list: [*c]DrawList, pos: Vec2, half_sz: Vec2, direction: Dir, col: U32) void { //igRenderArrowPointingAt + c.igRenderArrowPointingAt(draw_list, @bitCast(pos), @bitCast(half_sz), @intFromEnum(direction), col); +} +pub inline fn renderArrowDockMenu(draw_list: [*c]DrawList, p_min: Vec2, sz: f32, col: U32) void { //igRenderArrowDockMenu + c.igRenderArrowDockMenu(draw_list, @bitCast(p_min), sz, col); +} +pub inline fn renderRectFilledRangeH(draw_list: [*c]DrawList, rect: Rect, col: U32, x_start_norm: f32, x_end_norm: f32, rounding: f32) void { //igRenderRectFilledRangeH + c.igRenderRectFilledRangeH(draw_list, @bitCast(rect), col, x_start_norm, x_end_norm, rounding); +} +pub inline fn renderRectFilledWithHole(draw_list: [*c]DrawList, outer: Rect, inner: Rect, col: U32, rounding: f32) void { //igRenderRectFilledWithHole + c.igRenderRectFilledWithHole(draw_list, @bitCast(outer), @bitCast(inner), col, rounding); +} +pub inline fn calcRoundingFlagsForRectInRect(r_in: Rect, r_outer: Rect, threshold: f32) DrawFlags { //igCalcRoundingFlagsForRectInRect + return c.igCalcRoundingFlagsForRectInRect(@bitCast(r_in), @bitCast(r_outer), threshold); +} +pub inline fn textEx(text: [*c]const u8, text_end: [*c]const u8, flags: TextFlags) void { //igTextEx + c.igTextEx(text, text_end, @bitCast(flags)); +} +pub inline fn buttonEx(label: [*c]const u8, size_arg: Vec2, flags: ButtonFlags) bool { //igButtonEx + return c.igButtonEx(label, @bitCast(size_arg), flags); +} +pub inline fn closeButton(id: ID, pos: Vec2) bool { //igCloseButton + return c.igCloseButton(id, @bitCast(pos)); +} +pub inline fn collapseButton(id: ID, pos: Vec2, dock_node: [*c]DockNode) bool { //igCollapseButton + return c.igCollapseButton(id, @bitCast(pos), dock_node); +} +pub inline fn arrowButtonEx(str_id: [*c]const u8, dir: Dir, size_arg: Vec2, flags: ButtonFlags) bool { //igArrowButtonEx + return c.igArrowButtonEx(str_id, @intFromEnum(dir), @bitCast(size_arg), flags); +} +pub inline fn scrollbar(axis: Axis) void { //igScrollbar + c.igScrollbar(@intFromEnum(axis)); +} +pub inline fn scrollbarEx(bb: Rect, id: ID, axis: Axis, p_scroll_v: [*c]S64, avail_v: S64, contents_v: S64, flags: DrawFlags) bool { //igScrollbarEx + return c.igScrollbarEx(@bitCast(bb), id, @intFromEnum(axis), p_scroll_v, avail_v, contents_v, @bitCast(flags)); +} +pub inline fn imageButtonEx(id: ID, texture_id: TextureID, size: Vec2, uv0: Vec2, uv1: Vec2, padding: Vec2, bg_col: Vec4, tint_col: Vec4) bool { //igImageButtonEx + return c.igImageButtonEx(id, texture_id, @bitCast(size), @bitCast(uv0), @bitCast(uv1), @bitCast(padding), @bitCast(bg_col), @bitCast(tint_col)); +} +pub inline fn getWindowScrollbarRect(pout: [*c]Rect, window: [*c]Window, axis: Axis) void { //igGetWindowScrollbarRect + c.igGetWindowScrollbarRect(pout, window, @intFromEnum(axis)); +} +pub inline fn getWindowScrollbarID(window: [*c]Window, axis: Axis) ID { //igGetWindowScrollbarID + return c.igGetWindowScrollbarID(window, @intFromEnum(axis)); +} +pub inline fn getWindowResizeCornerID(window: [*c]Window, n: c_int) ID { //igGetWindowResizeCornerID + return c.igGetWindowResizeCornerID(window, n); +} +pub inline fn getWindowResizeBorderID(window: [*c]Window, dir: Dir) ID { //igGetWindowResizeBorderID + return c.igGetWindowResizeBorderID(window, @intFromEnum(dir)); +} +pub inline fn separatorEx(flags: SeparatorFlags) void { //igSeparatorEx + c.igSeparatorEx(@bitCast(flags)); +} +pub inline fn checkboxFlags_S64Ptr(label: [*c]const u8, flags: [*c]S64, flags_value: S64) bool { //igCheckboxFlags_S64Ptr + return c.igCheckboxFlags_S64Ptr(label, flags, flags_value); +} +pub inline fn checkboxFlags_U64Ptr(label: [*c]const u8, flags: [*c]U64, flags_value: U64) bool { //igCheckboxFlags_U64Ptr + return c.igCheckboxFlags_U64Ptr(label, flags, flags_value); +} +pub inline fn buttonBehavior(bb: Rect, id: ID, out_hovered: [*c]bool, out_held: [*c]bool, flags: ButtonFlags) bool { //igButtonBehavior + return c.igButtonBehavior(@bitCast(bb), id, out_hovered, out_held, flags); +} +pub inline fn dragBehavior(id: ID, data_type: DataType, p_v: ?*anyopaque, v_speed: f32, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags) bool { //igDragBehavior + return c.igDragBehavior(id, @intFromEnum(data_type), p_v, v_speed, p_min, p_max, format, @bitCast(flags)); +} +pub inline fn sliderBehavior(bb: Rect, id: ID, data_type: DataType, p_v: ?*anyopaque, p_min: [*c]const void, p_max: [*c]const void, format: [*c]const u8, flags: SliderFlags, out_grab_bb: [*c]Rect) bool { //igSliderBehavior + return c.igSliderBehavior(@bitCast(bb), id, @intFromEnum(data_type), p_v, p_min, p_max, format, @bitCast(flags), out_grab_bb); +} +pub inline fn splitterBehavior(bb: Rect, id: ID, axis: Axis, size1: [*c]f32, size2: [*c]f32, min_size1: f32, min_size2: f32, hover_extend: f32, hover_visibility_delay: f32, bg_col: U32) bool { //igSplitterBehavior + return c.igSplitterBehavior(@bitCast(bb), id, @intFromEnum(axis), size1, size2, min_size1, min_size2, hover_extend, hover_visibility_delay, bg_col); +} +pub inline fn treeNodeBehavior(id: ID, flags: TreeNodeFlags, label: [*c]const u8, label_end: [*c]const u8) bool { //igTreeNodeBehavior + return c.igTreeNodeBehavior(id, @bitCast(flags), label, label_end); +} +pub inline fn treeNodeBehaviorIsOpen(id: ID, flags: TreeNodeFlags) bool { //igTreeNodeBehaviorIsOpen + return c.igTreeNodeBehaviorIsOpen(id, @bitCast(flags)); +} +pub inline fn treePushOverrideID(id: ID) void { //igTreePushOverrideID + c.igTreePushOverrideID(id); +} +pub inline fn dataTypeGetInfo(data_type: DataType) [*c]const DataTypeInfo { //igDataTypeGetInfo + return c.igDataTypeGetInfo(@intFromEnum(data_type)); +} +pub inline fn dataTypeFormatString(buf: [*c]u8, buf_size: c_int, data_type: DataType, p_data: [*c]const void, format: [*c]const u8) c_int { //igDataTypeFormatString + return c.igDataTypeFormatString(buf, buf_size, @intFromEnum(data_type), p_data, format); +} +pub inline fn dataTypeApplyOp(data_type: DataType, op: c_int, output: ?*anyopaque, arg_1: [*c]const void, arg_2: [*c]const void) void { //igDataTypeApplyOp + c.igDataTypeApplyOp(@intFromEnum(data_type), op, output, arg_1, arg_2); +} +pub inline fn dataTypeApplyFromText(buf: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, format: [*c]const u8) bool { //igDataTypeApplyFromText + return c.igDataTypeApplyFromText(buf, @intFromEnum(data_type), p_data, format); +} +pub inline fn dataTypeCompare(data_type: DataType, arg_1: [*c]const void, arg_2: [*c]const void) c_int { //igDataTypeCompare + return c.igDataTypeCompare(@intFromEnum(data_type), arg_1, arg_2); +} +pub inline fn dataTypeClamp(data_type: DataType, p_data: ?*anyopaque, p_min: [*c]const void, p_max: [*c]const void) bool { //igDataTypeClamp + return c.igDataTypeClamp(@intFromEnum(data_type), p_data, p_min, p_max); +} +pub inline fn inputTextEx(label: [*c]const u8, hint: [*c]const u8, buf: [*c]u8, buf_size: c_int, size_arg: Vec2, flags: InputTextFlags, callback: InputTextCallback, user_data: ?*anyopaque) bool { //igInputTextEx + return c.igInputTextEx(label, hint, buf, buf_size, @bitCast(size_arg), @bitCast(flags), callback, user_data); +} +pub inline fn tempInputText(bb: Rect, id: ID, label: [*c]const u8, buf: [*c]u8, buf_size: c_int, flags: InputTextFlags) bool { //igTempInputText + return c.igTempInputText(@bitCast(bb), id, label, buf, buf_size, @bitCast(flags)); +} +pub inline fn tempInputScalar(bb: Rect, id: ID, label: [*c]const u8, data_type: DataType, p_data: ?*anyopaque, format: [*c]const u8, p_clamp_min: [*c]const void, p_clamp_max: [*c]const void) bool { //igTempInputScalar + return c.igTempInputScalar(@bitCast(bb), id, label, @intFromEnum(data_type), p_data, format, p_clamp_min, p_clamp_max); +} +pub inline fn tempInputIsActive(id: ID) bool { //igTempInputIsActive + return c.igTempInputIsActive(id); +} +pub inline fn getInputTextState(id: ID) [*c]InputTextState { //igGetInputTextState + return c.igGetInputTextState(id); +} +pub inline fn colorTooltip(text: [*c]const u8, col: [*c]const f32, flags: ColorEditFlags) void { //igColorTooltip + c.igColorTooltip(text, col, @bitCast(flags)); +} +pub inline fn colorEditOptionsPopup(col: [*c]const f32, flags: ColorEditFlags) void { //igColorEditOptionsPopup + c.igColorEditOptionsPopup(col, @bitCast(flags)); +} +pub inline fn colorPickerOptionsPopup(ref_col: [*c]const f32, flags: ColorEditFlags) void { //igColorPickerOptionsPopup + c.igColorPickerOptionsPopup(ref_col, @bitCast(flags)); +} +pub inline fn shadeVertsLinearColorGradientKeepAlpha(draw_list: [*c]DrawList, vert_start_idx: c_int, vert_end_idx: c_int, gradient_p0: Vec2, gradient_p1: Vec2, col0: U32, col1: U32) void { //igShadeVertsLinearColorGradientKeepAlpha + c.igShadeVertsLinearColorGradientKeepAlpha(draw_list, vert_start_idx, vert_end_idx, @bitCast(gradient_p0), @bitCast(gradient_p1), col0, col1); +} +pub inline fn shadeVertsLinearUV(draw_list: [*c]DrawList, vert_start_idx: c_int, vert_end_idx: c_int, a: Vec2, b: Vec2, uv_a: Vec2, uv_b: Vec2, clamp: bool) void { //igShadeVertsLinearUV + c.igShadeVertsLinearUV(draw_list, vert_start_idx, vert_end_idx, @bitCast(a), @bitCast(b), @bitCast(uv_a), @bitCast(uv_b), clamp); +} +pub inline fn gcCompactTransientMiscBuffers() void { //igGcCompactTransientMiscBuffers + c.igGcCompactTransientMiscBuffers(); +} +pub inline fn gcCompactTransientWindowBuffers(window: [*c]Window) void { //igGcCompactTransientWindowBuffers + c.igGcCompactTransientWindowBuffers(window); +} +pub inline fn gcAwakeTransientWindowBuffers(window: [*c]Window) void { //igGcAwakeTransientWindowBuffers + c.igGcAwakeTransientWindowBuffers(window); +} +pub inline fn errorCheckEndFrameRecover(log_callback: ErrorLogCallback, user_data: ?*anyopaque) void { //igErrorCheckEndFrameRecover + c.igErrorCheckEndFrameRecover(log_callback, user_data); +} +pub inline fn errorCheckEndWindowRecover(log_callback: ErrorLogCallback, user_data: ?*anyopaque) void { //igErrorCheckEndWindowRecover + c.igErrorCheckEndWindowRecover(log_callback, user_data); +} +pub inline fn debugDrawItemRect(col: U32) void { //igDebugDrawItemRect + c.igDebugDrawItemRect(col); +} +pub inline fn debugStartItemPicker() void { //igDebugStartItemPicker + c.igDebugStartItemPicker(); +} +pub inline fn showFontAtlas(atlas: [*c]FontAtlas) void { //igShowFontAtlas + c.igShowFontAtlas(atlas); +} +pub inline fn debugHookIdInfo(id: ID, data_type: DataType, data_id: [*c]const void, data_id_end: [*c]const void) void { //igDebugHookIdInfo + c.igDebugHookIdInfo(id, @intFromEnum(data_type), data_id, data_id_end); +} +pub inline fn debugNodeColumns(cols: [*c]OldColumns) void { //igDebugNodeColumns + c.igDebugNodeColumns(cols); +} +pub inline fn debugNodeDockNode(node: [*c]DockNode, label: [*c]const u8) void { //igDebugNodeDockNode + c.igDebugNodeDockNode(node, label); +} +pub inline fn debugNodeDrawList(window: [*c]Window, viewport: [*c]ViewportP, draw_list: [*c]const DrawList, label: [*c]const u8) void { //igDebugNodeDrawList + c.igDebugNodeDrawList(window, viewport, draw_list, label); +} +pub inline fn debugNodeDrawCmdShowMeshAndBoundingBox(out_draw_list: [*c]DrawList, draw_list: [*c]const DrawList, draw_cmd: [*c]const DrawCmd, show_mesh: bool, show_aabb: bool) void { //igDebugNodeDrawCmdShowMeshAndBoundingBox + c.igDebugNodeDrawCmdShowMeshAndBoundingBox(out_draw_list, draw_list, draw_cmd, show_mesh, show_aabb); +} +pub inline fn debugNodeFont(font: [*c]Font) void { //igDebugNodeFont + c.igDebugNodeFont(font); +} +pub inline fn debugNodeFontGlyph(font: [*c]Font, glyph: [*c]const FontGlyph) void { //igDebugNodeFontGlyph + c.igDebugNodeFontGlyph(font, glyph); +} +pub inline fn debugNodeStorage(storage: [*c]Storage, label: [*c]const u8) void { //igDebugNodeStorage + c.igDebugNodeStorage(storage, label); +} +pub inline fn debugNodeTabBar(tab_bar: [*c]TabBar, label: [*c]const u8) void { //igDebugNodeTabBar + c.igDebugNodeTabBar(tab_bar, label); +} +pub inline fn debugNodeTable(table: [*c]Table) void { //igDebugNodeTable + c.igDebugNodeTable(table); +} +pub inline fn debugNodeTableSettings(settings: [*c]TableSettings) void { //igDebugNodeTableSettings + c.igDebugNodeTableSettings(settings); +} +pub inline fn debugNodeInputTextState(state: [*c]InputTextState) void { //igDebugNodeInputTextState + c.igDebugNodeInputTextState(state); +} +pub inline fn debugNodeWindow(window: [*c]Window, label: [*c]const u8) void { //igDebugNodeWindow + c.igDebugNodeWindow(window, label); +} +pub inline fn debugNodeWindowSettings(settings: [*c]WindowSettings) void { //igDebugNodeWindowSettings + c.igDebugNodeWindowSettings(settings); +} +pub inline fn debugNodeWindowsList(windows: [*c]WindowPtrVector, label: [*c]const u8) void { //igDebugNodeWindowsList + c.igDebugNodeWindowsList(windows, label); +} +pub inline fn debugNodeWindowsListByBeginStackParent(windows: [*c]Window, windows_size: c_int, parent_in_begin_stack: [*c]Window) void { //igDebugNodeWindowsListByBeginStackParent + c.igDebugNodeWindowsListByBeginStackParent(windows, windows_size, parent_in_begin_stack); +} +pub inline fn debugNodeViewport(viewport: [*c]ViewportP) void { //igDebugNodeViewport + c.igDebugNodeViewport(viewport); +} +pub inline fn debugRenderViewportThumbnail(draw_list: [*c]DrawList, viewport: [*c]ViewportP, bb: Rect) void { //igDebugRenderViewportThumbnail + c.igDebugRenderViewportThumbnail(draw_list, viewport, @bitCast(bb)); +} +pub inline fn imFontAtlasGetBuilderForStbTruetype() [*c]const FontBuilderIO { //igImFontAtlasGetBuilderForStbTruetype + return c.igImFontAtlasGetBuilderForStbTruetype(); +} +pub inline fn imFontAtlasBuildInit(atlas: [*c]FontAtlas) void { //igImFontAtlasBuildInit + c.igImFontAtlasBuildInit(atlas); +} +pub inline fn imFontAtlasBuildSetupFont(atlas: [*c]FontAtlas, font: [*c]Font, font_config: [*c]FontConfig, ascent: f32, descent: f32) void { //igImFontAtlasBuildSetupFont + c.igImFontAtlasBuildSetupFont(atlas, font, font_config, ascent, descent); +} +pub inline fn imFontAtlasBuildPackCustomRects(atlas: [*c]FontAtlas, stbrp_context_opaque: ?*anyopaque) void { //igImFontAtlasBuildPackCustomRects + c.igImFontAtlasBuildPackCustomRects(atlas, stbrp_context_opaque); +} +pub inline fn imFontAtlasBuildFinish(atlas: [*c]FontAtlas) void { //igImFontAtlasBuildFinish + c.igImFontAtlasBuildFinish(atlas); +} +pub inline fn imFontAtlasBuildRender8bppRectFromString(atlas: [*c]FontAtlas, x: c_int, y: c_int, w: c_int, h: c_int, in_str: [*c]const u8, in_marker_char: u8, in_marker_pixel_value: u8) void { //igImFontAtlasBuildRender8bppRectFromString + c.igImFontAtlasBuildRender8bppRectFromString(atlas, x, y, w, h, in_str, in_marker_char, in_marker_pixel_value); +} +pub inline fn imFontAtlasBuildRender32bppRectFromString(atlas: [*c]FontAtlas, x: c_int, y: c_int, w: c_int, h: c_int, in_str: [*c]const u8, in_marker_char: u8, in_marker_pixel_value: c_uint) void { //igImFontAtlasBuildRender32bppRectFromString + c.igImFontAtlasBuildRender32bppRectFromString(atlas, x, y, w, h, in_str, in_marker_char, in_marker_pixel_value); +} + +// TODO structs with bitfields... +// for the time being this shall be just an opaque pointer +pub const DockRequest = opaque {}; +pub const Table = opaque {}; +pub const StackLevelInfo = opaque {}; +pub const TableColumnSortSpecs = opaque {}; +pub const DockNode = opaque {}; +pub const TableColumnSettings = opaque {}; +pub const TableColumn = opaque {}; +pub const Window = opaque {}; +pub const FontGlyph = opaque {}; +pub const DockNodeSettings = opaque {}; +pub const StoragePair = opaque {}; + +pub const ErrorLogCallback = *const fn (?*anyopaque, [*c]const u8) callconv(.C) void; +pub const DrawCallback = *const fn ([*c]const DrawList, [*c]const DrawCmd) callconv(.C) void; + +// TODO file handles? typedef FILE* ImFileHandle; +pub const FileHandle = std.fs.File; + +var textFmtBuffer: [1024]u8 = undefined; + +pub inline fn textSlice(buf: []const u8) void { + textUnformatted(@ptrCast(buf.ptr), buf.ptr + buf.len); +} + +pub inline fn textFmt(comptime fmt: []const u8, args: anytype) !void { + const buffer = try std.fmt.bufPrint(&textFmtBuffer, fmt, args); + textUnformatted(@ptrCast(buffer.ptr), buffer.ptr + buffer.len); +} + +// pub inline fn textV(fmt: [*c]const u8, args: list) void { //igTextV +// c.igTextV(fmt, args); +// } +// pub inline fn textColoredV(col: Vec4, fmt: [*c]const u8, args: list) void { //igTextColoredV +// c.igTextColoredV(@bitCast(col), fmt, args); +// } +// pub inline fn textDisabledV(fmt: [*c]const u8, args: list) void { //igTextDisabledV +// c.igTextDisabledV(fmt, args); +// } +// pub inline fn textWrappedV(fmt: [*c]const u8, args: list) void { //igTextWrappedV +// c.igTextWrappedV(fmt, args); +// } +// pub inline fn labelTextV(label: [*c]const u8, fmt: [*c]const u8, args: list) void { //igLabelTextV +// c.igLabelTextV(label, fmt, args); +// } +// pub inline fn bulletTextV(fmt: [*c]const u8, args: list) void { //igBulletTextV +// c.igBulletTextV(fmt, args); +// } +// +// pub inline fn treeNodeV_Str(str_id: [*c]const u8, fmt: [*c]const u8, args: list) bool { //igTreeNodeV_Str +// return c.igTreeNodeV_Str(str_id, fmt, args); +// } +// pub inline fn treeNodeV_Ptr(ptr_id: [*c]const void, fmt: [*c]const u8, args: list) bool { //igTreeNodeV_Ptr +// return c.igTreeNodeV_Ptr(ptr_id, fmt, args); +// } +// +// pub inline fn treeNodeExV_Str(str_id: [*c]const u8, flags: TreeNodeFlags, fmt: [*c]const u8, args: list) bool { //igTreeNodeExV_Str +// return c.igTreeNodeExV_Str(str_id, @bitCast(flags), fmt, args); +// } +// pub inline fn treeNodeExV_Ptr(ptr_id: [*c]const void, flags: TreeNodeFlags, fmt: [*c]const u8, args: list) bool { //igTreeNodeExV_Ptr +// return c.igTreeNodeExV_Ptr(ptr_id, @bitCast(flags), fmt, args); +// } +// +// pub inline fn setTooltipV(fmt: [*c]const u8, args: list) void { //igSetTooltipV +// c.igSetTooltipV(fmt, args); +// } +// +// pub inline fn logTextV(fmt: [*c]const u8, args: list) void { //igLogTextV +// c.igLogTextV(fmt, args); +// } +// +// pub inline fn imFormatStringV(buf: [*c]u8, buf_size: usize, fmt: [*c]const u8, args: list) c_int { //igImFormatStringV +// return c.igImFormatStringV(buf, buf_size, fmt, args); +// } +// pub inline fn imFormatStringToTempBufferV(out_buf: [*c]const u8, out_buf_end: [*c]const u8, fmt: [*c]const u8, args: list) void { //igImFormatStringToTempBufferV +// c.igImFormatStringToTempBufferV(out_buf, out_buf_end, fmt, args); +// } +// +// +// pub inline fn debugLogV(fmt: [*c]const u8, args: list) void { //igDebugLogV +// c.igDebugLogV(fmt, args); +// } + +pub const c = @cImport({ + @cDefine("CIMGUI_DEFINE_ENUMS_AND_STRUCTS", {}); + @cDefine("CIMGUI_USE_GLFW", "1"); // if this needs a reference to glfw3, cleanest thing to do is to copy the glfw3 header here. I suspect it won't need it though. + @cInclude("cimgui.h"); + @cInclude("cimgui_compat.h"); + @cInclude("cimgui_impl.h"); + @cInclude("cimplot.h"); +}); + +test "Imgui Header test" { + const flags = WindowFlags{}; + const flags2 = WindowFlags.no_nav; + std.debug.print("flags = {any}\n{any}\n\n ", .{ flags, flags2 }); + std.debug.print("size of Style = {d}", .{@sizeOf(Style)}); + std.debug.print("size of Io = {d}\n", .{@sizeOf(Io)}); + std.debug.print("size of InputEvent = {d}\n", .{@sizeOf(InputEvent)}); +} diff --git a/engine/vkImgui/src/vkImgui.zig b/engine/_archive/vkImgui/src/vkImgui.zig similarity index 97% rename from engine/vkImgui/src/vkImgui.zig rename to engine/_archive/vkImgui/src/vkImgui.zig index 1f6fc2d..c76b92f 100644 --- a/engine/vkImgui/src/vkImgui.zig +++ b/engine/_archive/vkImgui/src/vkImgui.zig @@ -1,229 +1,229 @@ -const std = @import("std"); -const vk = @import("vulkan"); -const graphics = @import("graphics"); -const RenderThread = graphics.RenderThread; -const platform = @import("platform"); -const vk_renderer = graphics.vk_renderer; -const core = @import("core"); - -const tracy = core.tracy; -const vk_constants = graphics.constants; - -pub const api = @import("cimgui.zig"); -pub const c = api.c; - -const NeonVkContext = vk_renderer.NeonVkContext; - -pub const Module: core.ModuleDescription = .{ - .name = "vkImgui", - .enabledByDefault = true, -}; - -// new imgui integration -// -// arather than call imgui newframe only during the draw step. -// -// imgui NewFrame will be called in engine pre-tick -// -// this will make it safe to call imgui functions from anywhere within tick(); - -fn vkCast(comptime T: type, handle: anytype) T { - return @as(T, @ptrFromInt(@as(u64, @intFromEnum(handle)))); -} - -// this data structure represents the imgui integration setup. -// it is invalid until you call setup() -// -// largely don't need to touch this structure from the user's side. -pub const NeonVkImGui = struct { - const Self = @This(); - pub const NeonObjectTable = core.EngineObjectVTable.from(Self); - pub const RendererInterfaceVTable = graphics.RendererInterface.from(Self); - - allocator: std.mem.Allocator, - ctx: *NeonVkContext = undefined, - descriptorPool: vk.DescriptorPool = undefined, - - pub fn init(allocator: std.mem.Allocator) !*Self { - const self = try allocator.create(Self); - - self.* = Self{ - .allocator = allocator, - }; - - return self; - } - - // NeonObject interface - pub fn preTick(_: *Self, _: f64) core.EngineDataEventError!void { - c.ImGui_ImplGlfw_NewFrame(); - c.cImGui_vk_NewFrame(); - c.igNewFrame(); - } - - // VkRenderer interface - pub fn preDraw(self: *@This(), frameId: usize) void { - _ = self; - _ = frameId; - } - - pub fn sendShared(self: *@This(), frameIndex: u32) void { - _ = self; - - const z = core.tracy.ZoneN(@src(), "imgui uploading shared data"); - defer z.End(); - - c.igRenderPlatformWindowsDefault(null, null); - c.igRender(); - c.cimgui_vk_UploadSharedData(@intCast(frameIndex), c.igGetDrawData()); - c.igUpdatePlatformWindows(); - } - - pub fn rtPostDraw(self: *@This(), rt: *RenderThread, cmd: vk.CommandBuffer, frameIndex: u32) void { - const z = core.tracy.ZoneN(@src(), "imgui render"); - defer z.End(); - - _ = rt; - _ = self; - - c.cImGui_vk_RenderDrawData( - c.cimgui_vk_GetSharedData(@intCast(frameIndex)), - vkCast(c.VkCommandBuffer, cmd), - vkCast(c.VkPipeline, vk.Pipeline.null_handle), - ); - c.cimgui_vk_ReleaseSharedData(@intCast(frameIndex)); - } - - pub fn postDraw(self: *@This(), cmd: vk.CommandBuffer, frameIndex: usize, deltaTime: f64) void { - _ = self; - _ = deltaTime; - - const z = core.tracy.ZoneN(@src(), "imgui render"); - - c.igRenderPlatformWindowsDefault(null, null); - c.igRender(); - - c.cimgui_vk_UploadSharedData(@intCast(frameIndex), c.igGetDrawData()); - - c.cImGui_vk_RenderDrawData( - c.cimgui_vk_GetSharedData(@intCast(frameIndex)), - vkCast(c.VkCommandBuffer, cmd), - vkCast(c.VkPipeline, vk.Pipeline.null_handle), - ); - c.cimgui_vk_ReleaseSharedData(@intCast(frameIndex)); - - c.igUpdatePlatformWindows(); - - z.End(); - } - // VkRenderer interface end - - pub fn setup(self: *Self, ctx: *NeonVkContext) !void { - self.ctx = ctx; - std.debug.print("vkImGui = {d}\n", .{@sizeOf(c.ImGuiStyle)}); - std.debug.print("size of InputEvent = {d}\n", .{@sizeOf(c.ImGuiInputEvent)}); - - // const descriptorPoolSizes = [_]vk.DescriptorPoolSize{ - // .{ .type = .sampler, .descriptor_count = 1000 }, - // .{ .type = .combined_image_sampler, .descriptor_count = 1000 }, - // .{ .type = .sampled_image, .descriptor_count = 1000 }, - // .{ .type = .storage_image, .descriptor_count = 1000 }, - // .{ .type = .uniform_texel_buffer, .descriptor_count = 1000 }, - // .{ .type = .storage_texel_buffer, .descriptor_count = 1000 }, - // .{ .type = .uniform_buffer, .descriptor_count = 1000 }, - // .{ .type = .storage_buffer, .descriptor_count = 1000 }, - // .{ .type = .uniform_buffer_dynamic, .descriptor_count = 1000 }, - // .{ .type = .storage_buffer_dynamic, .descriptor_count = 1000 }, - // .{ .type = .input_attachment, .descriptor_count = 1000 }, - // }; - - // var poolInfo = vk.DescriptorPoolCreateInfo{ - // .flags = .{}, - // .max_sets = 1000, - // .pool_size_count = @intCast(descriptorPoolSizes.len), - // .p_pool_sizes = &descriptorPoolSizes, - // }; - - self.descriptorPool = ctx.descriptorPool; // try ctx.vkd.createDescriptorPool(ctx.dev, &poolInfo, null); - _ = c.igCreateContext(null); - const io: *c.ImGuiIO = c.igGetIO(); - io.*.ConfigFlags |= c.ImGuiConfigFlags_NavEnableKeyboard; - io.*.ConfigFlags |= c.ImGuiConfigFlags_DockingEnable; - // io.*.ConfigFlags |= c.ImGuiConfigFlags_ViewportsEnable; - // const font = c.ImFontAtlas_AddFontFromFileTTF(io.*.Fonts, "content/VT323.ttf", 36, null, null); - // _ = font; - _ = c.ImGui_ImplGlfw_InitForVulkan(@ptrCast(platform.getInstance().window), true); - - const style = c.igGetStyle(); - c.igStyleColorsDark(style); - style.*.WindowRounding = 0.0; - style.*.Colors[c.ImGuiCol_WindowBg].w = 1.0; - - var imguiInit = c.ImGui_ImplVulkan_InitInfo{ - .Instance = vkCast(c.VkInstance, ctx.instance), - .PhysicalDevice = vkCast(c.VkPhysicalDevice, ctx.physicalDevice), - .Device = vkCast(c.VkDevice, ctx.dev), - .QueueFamily = ctx.graphicsQueue.family, - .Queue = vkCast(c.VkQueue, ctx.graphicsQueue.handle), - .PipelineCache = vkCast(c.VkPipelineCache, vk.PipelineCache.null_handle), - .DescriptorPool = vkCast(c.VkDescriptorPool, self.descriptorPool), - .Subpass = 0, - .MinImageCount = 2, - .ImageCount = vk_constants.NUM_FRAMES, - .MSAASamples = 0x1, - .Allocator = null, - .CheckVkResultFn = checkVkResult, - }; - // core.debug_struct("instance: ", ctx.instance); - // core.debug_struct("huh: ", imguiInit); - _ = c.cImGui_vk_Init(&imguiInit, vkCast(c.VkRenderPass, ctx.renderPass)); - - // try ctx.start_upload_context(&ctx.uploadContext); - try ctx.uploader.startUploadContext(); - _ = c.cImGui_vk_CreateFontsTexture(vkCast(c.VkCommandBuffer, ctx.uploader.commandBuffer)); - try ctx.uploader.finishUploadContext(); - _ = c.cImGui_vk_DestroyFontUploadObjects(); - - _ = c.SetupImguiColors(); - - c.cimgui_vk_PrepareSharedData(); - - try self.ctx.registerRendererPlugin(self); - } - - pub fn onRendererTeardown(self: *Self) void { - c.cImGui_vk_Shutdown(); - _ = self; - } - - pub fn deinit(self: *Self) void { - const ctx = self.ctx; - ctx.vkd.deviceWaitIdle(ctx.dev) catch unreachable; - // ctx.vkd.destroyDescriptorPool(ctx.dev, self.descriptorPool, null); - self.allocator.destroy(self); - } -}; - -export fn checkVkResult(result: c_int) void { - const r: vk.Result = @enumFromInt(result); - if (r == vk.Result.success) - return; - - core.graphics_log("This is a big problem, imgui call result: {any}", .{r}); - unreachable; -} - -pub fn start_module(comptime programSpec: anytype, args: anytype, allocator: std.mem.Allocator) !void { - _ = args; - _ = programSpec; - _ = allocator; - if (core.isUtility()) { - return; - } - const neonVkImgui = try core.createObject(NeonVkImGui, .{}); - try neonVkImgui.setup(graphics.getContext()); -} - -pub fn shutdown_module(allocator: std.mem.Allocator) void { - _ = allocator; -} +const std = @import("std"); +const vk = @import("vulkan"); +const graphics = @import("graphics"); +const RenderThread = graphics.RenderThread; +const platform = @import("platform"); +const vk_renderer = graphics.vk_renderer; +const core = @import("core"); + +const tracy = core.tracy; +const vk_constants = graphics.constants; + +pub const api = @import("cimgui.zig"); +pub const c = api.c; + +const NeonVkContext = vk_renderer.NeonVkContext; + +pub const Module: core.ModuleDescription = .{ + .name = "vkImgui", + .enabledByDefault = true, +}; + +// new imgui integration +// +// arather than call imgui newframe only during the draw step. +// +// imgui NewFrame will be called in engine pre-tick +// +// this will make it safe to call imgui functions from anywhere within tick(); + +fn vkCast(comptime T: type, handle: anytype) T { + return @as(T, @ptrFromInt(@as(u64, @intFromEnum(handle)))); +} + +// this data structure represents the imgui integration setup. +// it is invalid until you call setup() +// +// largely don't need to touch this structure from the user's side. +pub const NeonVkImGui = struct { + const Self = @This(); + pub const NeonObjectTable = core.EngineObjectVTable.from(Self); + pub const RendererInterfaceVTable = graphics.RendererInterface.from(Self); + + allocator: std.mem.Allocator, + ctx: *NeonVkContext = undefined, + descriptorPool: vk.DescriptorPool = undefined, + + pub fn init(allocator: std.mem.Allocator) !*Self { + const self = try allocator.create(Self); + + self.* = Self{ + .allocator = allocator, + }; + + return self; + } + + // NeonObject interface + pub fn preTick(_: *Self, _: f64) core.EngineDataEventError!void { + c.ImGui_ImplGlfw_NewFrame(); + c.cImGui_vk_NewFrame(); + c.igNewFrame(); + } + + // VkRenderer interface + pub fn preDraw(self: *@This(), frameId: usize) void { + _ = self; + _ = frameId; + } + + pub fn sendShared(self: *@This(), frameIndex: u32) void { + _ = self; + + const z = core.tracy.ZoneN(@src(), "imgui uploading shared data"); + defer z.End(); + + c.igRenderPlatformWindowsDefault(null, null); + c.igRender(); + c.cimgui_vk_UploadSharedData(@intCast(frameIndex), c.igGetDrawData()); + c.igUpdatePlatformWindows(); + } + + pub fn rtPostDraw(self: *@This(), rt: *RenderThread, cmd: vk.CommandBuffer, frameIndex: u32) void { + const z = core.tracy.ZoneN(@src(), "imgui render"); + defer z.End(); + + _ = rt; + _ = self; + + c.cImGui_vk_RenderDrawData( + c.cimgui_vk_GetSharedData(@intCast(frameIndex)), + vkCast(c.VkCommandBuffer, cmd), + vkCast(c.VkPipeline, vk.Pipeline.null_handle), + ); + c.cimgui_vk_ReleaseSharedData(@intCast(frameIndex)); + } + + pub fn postDraw(self: *@This(), cmd: vk.CommandBuffer, frameIndex: usize, deltaTime: f64) void { + _ = self; + _ = deltaTime; + + const z = core.tracy.ZoneN(@src(), "imgui render"); + + c.igRenderPlatformWindowsDefault(null, null); + c.igRender(); + + c.cimgui_vk_UploadSharedData(@intCast(frameIndex), c.igGetDrawData()); + + c.cImGui_vk_RenderDrawData( + c.cimgui_vk_GetSharedData(@intCast(frameIndex)), + vkCast(c.VkCommandBuffer, cmd), + vkCast(c.VkPipeline, vk.Pipeline.null_handle), + ); + c.cimgui_vk_ReleaseSharedData(@intCast(frameIndex)); + + c.igUpdatePlatformWindows(); + + z.End(); + } + // VkRenderer interface end + + pub fn setup(self: *Self, ctx: *NeonVkContext) !void { + self.ctx = ctx; + std.debug.print("vkImGui = {d}\n", .{@sizeOf(c.ImGuiStyle)}); + std.debug.print("size of InputEvent = {d}\n", .{@sizeOf(c.ImGuiInputEvent)}); + + // const descriptorPoolSizes = [_]vk.DescriptorPoolSize{ + // .{ .type = .sampler, .descriptor_count = 1000 }, + // .{ .type = .combined_image_sampler, .descriptor_count = 1000 }, + // .{ .type = .sampled_image, .descriptor_count = 1000 }, + // .{ .type = .storage_image, .descriptor_count = 1000 }, + // .{ .type = .uniform_texel_buffer, .descriptor_count = 1000 }, + // .{ .type = .storage_texel_buffer, .descriptor_count = 1000 }, + // .{ .type = .uniform_buffer, .descriptor_count = 1000 }, + // .{ .type = .storage_buffer, .descriptor_count = 1000 }, + // .{ .type = .uniform_buffer_dynamic, .descriptor_count = 1000 }, + // .{ .type = .storage_buffer_dynamic, .descriptor_count = 1000 }, + // .{ .type = .input_attachment, .descriptor_count = 1000 }, + // }; + + // var poolInfo = vk.DescriptorPoolCreateInfo{ + // .flags = .{}, + // .max_sets = 1000, + // .pool_size_count = @intCast(descriptorPoolSizes.len), + // .p_pool_sizes = &descriptorPoolSizes, + // }; + + self.descriptorPool = ctx.descriptorPool; // try ctx.vkd.createDescriptorPool(ctx.dev, &poolInfo, null); + _ = c.igCreateContext(null); + const io: *c.ImGuiIO = c.igGetIO(); + io.*.ConfigFlags |= c.ImGuiConfigFlags_NavEnableKeyboard; + io.*.ConfigFlags |= c.ImGuiConfigFlags_DockingEnable; + // io.*.ConfigFlags |= c.ImGuiConfigFlags_ViewportsEnable; + // const font = c.ImFontAtlas_AddFontFromFileTTF(io.*.Fonts, "content/VT323.ttf", 36, null, null); + // _ = font; + _ = c.ImGui_ImplGlfw_InitForVulkan(@ptrCast(platform.getInstance().window), true); + + const style = c.igGetStyle(); + c.igStyleColorsDark(style); + style.*.WindowRounding = 0.0; + style.*.Colors[c.ImGuiCol_WindowBg].w = 1.0; + + var imguiInit = c.ImGui_ImplVulkan_InitInfo{ + .Instance = vkCast(c.VkInstance, ctx.instance), + .PhysicalDevice = vkCast(c.VkPhysicalDevice, ctx.physicalDevice), + .Device = vkCast(c.VkDevice, ctx.dev), + .QueueFamily = ctx.graphicsQueue.family, + .Queue = vkCast(c.VkQueue, ctx.graphicsQueue.handle), + .PipelineCache = vkCast(c.VkPipelineCache, vk.PipelineCache.null_handle), + .DescriptorPool = vkCast(c.VkDescriptorPool, self.descriptorPool), + .Subpass = 0, + .MinImageCount = 2, + .ImageCount = vk_constants.NUM_FRAMES, + .MSAASamples = 0x1, + .Allocator = null, + .CheckVkResultFn = checkVkResult, + }; + // core.debug_struct("instance: ", ctx.instance); + // core.debug_struct("huh: ", imguiInit); + _ = c.cImGui_vk_Init(&imguiInit, vkCast(c.VkRenderPass, ctx.renderPass)); + + // try ctx.start_upload_context(&ctx.uploadContext); + try ctx.uploader.startUploadContext(); + _ = c.cImGui_vk_CreateFontsTexture(vkCast(c.VkCommandBuffer, ctx.uploader.commandBuffer)); + try ctx.uploader.finishUploadContext(); + _ = c.cImGui_vk_DestroyFontUploadObjects(); + + _ = c.SetupImguiColors(); + + c.cimgui_vk_PrepareSharedData(); + + try self.ctx.registerRendererPlugin(self); + } + + pub fn onRendererTeardown(self: *Self) void { + c.cImGui_vk_Shutdown(); + _ = self; + } + + pub fn deinit(self: *Self) void { + const ctx = self.ctx; + ctx.vkd.deviceWaitIdle(ctx.dev) catch unreachable; + // ctx.vkd.destroyDescriptorPool(ctx.dev, self.descriptorPool, null); + self.allocator.destroy(self); + } +}; + +export fn checkVkResult(result: c_int) void { + const r: vk.Result = @enumFromInt(result); + if (r == vk.Result.success) + return; + + core.graphics_log("This is a big problem, imgui call result: {any}", .{r}); + unreachable; +} + +pub fn start_module(comptime programSpec: anytype, args: anytype, allocator: std.mem.Allocator) !void { + _ = args; + _ = programSpec; + _ = allocator; + if (core.isUtility()) { + return; + } + const neonVkImgui = try core.createObject(NeonVkImGui, .{}); + try neonVkImgui.setup(graphics.getContext()); +} + +pub fn shutdown_module(allocator: std.mem.Allocator) void { + _ = allocator; +} diff --git a/engine/vkImgui/src/vkImguiApi.zig b/engine/_archive/vkImgui/src/vkImguiApi.zig similarity index 97% rename from engine/vkImgui/src/vkImguiApi.zig rename to engine/_archive/vkImgui/src/vkImguiApi.zig index ea22116..d667f4f 100644 --- a/engine/vkImgui/src/vkImguiApi.zig +++ b/engine/_archive/vkImgui/src/vkImguiApi.zig @@ -1,2 +1,2 @@ -const vkImgui = @import("vkImgui.zig"); -pub const c = vkImgui.c; +const vkImgui = @import("vkImgui.zig"); +pub const c = vkImgui.c; diff --git a/engine/vkImgui/tests/tests.zig b/engine/_archive/vkImgui/tests/tests.zig similarity index 100% rename from engine/vkImgui/tests/tests.zig rename to engine/_archive/vkImgui/tests/tests.zig diff --git a/engine/assets/build.zig.zon b/engine/assets/build.zig.zon index 94266eb..0c2b015 100644 --- a/engine/assets/build.zig.zon +++ b/engine/assets/build.zig.zon @@ -1,5 +1,5 @@ .{ - .name = "assets", + .name = .assets, .version = "0.0.0", .dependencies = .{ .core = .{ .path = "../core" }, @@ -8,4 +8,5 @@ .paths = .{ "", }, + .fingerprint = 0x79d17d8e92f00d8c, } diff --git a/engine/audio/build.zig.zon b/engine/audio/build.zig.zon index e7427be..217a14a 100644 --- a/engine/audio/build.zig.zon +++ b/engine/audio/build.zig.zon @@ -1,5 +1,5 @@ .{ - .name = "audio", + .name = .audio, .version = "0.0.0", .dependencies = .{ // @@ -12,4 +12,5 @@ .paths = .{ "", }, + .fingerprint = 0x187d3695f9b81523, } diff --git a/engine/backlog.zig b/engine/backlog.zig index 2d1f9dc..729167f 100644 --- a/engine/backlog.zig +++ b/engine/backlog.zig @@ -2,9 +2,9 @@ pub const core = @import("core"); pub const platform = @import("platform"); pub const assets = @import("assets"); pub const audio = @import("audio"); -pub const graphics = @import("graphics"); -pub const vkImgui = @import("vkImgui"); -pub const ui = @import("ui"); +// pub const graphics = @import("graphics"); +// pub const vkImgui = @import("vkImgui"); +// pub const ui = @import("ui"); pub const papyrus = @import("papyrus"); pub const physics = @import("physics"); @@ -60,10 +60,10 @@ pub fn shutdown_modules(allocator: std.mem.Allocator) void { } pub fn start_everything(comptime spec: anytype, allocator: std.mem.Allocator, maybeArgs: ?NwArgs) !void { - if (maybeArgs) |args| { - if (args.vulkanValidation) - graphics.setStartupSettings("vulkanValidation", true); - } + //if (maybeArgs) |args| { + // //if (args.vulkanValidation) + // // graphics.setStartupSettings("vulkanValidation", true); + //} try start_modules(spec, maybeArgs, allocator); } @@ -126,7 +126,7 @@ pub fn initializeAndRunStandardProgram(comptime GameContext: type, comptime spec core.engine_logs("Using vulkan validation"); } - graphics.setStartupSettings("vulkanValidation", args.vulkanValidation); + // graphics.setStartupSettings("vulkanValidation", args.vulkanValidation); if (@hasField(@TypeOf(spec), "windowName")) { platform.setWindowSettings(.{ .windowName = spec.windowName }); diff --git a/engine/core/build.zig b/engine/core/build.zig index 0e67c2a..387f257 100644 --- a/engine/core/build.zig +++ b/engine/core/build.zig @@ -7,7 +7,7 @@ const dependencyList = [_][]const u8{ "tracy", "zmath", "packer", - "zgltf", + "sdl3", "lua", }; diff --git a/engine/core/build.zig.zon b/engine/core/build.zig.zon index 43ee402..feb99de 100644 --- a/engine/core/build.zig.zon +++ b/engine/core/build.zig.zon @@ -9,7 +9,8 @@ .zmath = .{ .path = "../../lib/zmath" }, .packer = .{ .path = "../../lib/packer" }, .lua = .{ .path = "../../lib/lua" }, - .zgltf = .{ .path = "../../lib/zgltf" }, + .sdl3 = .{.path = "../../lib/sdl3"}, + // .zgltf = .{ .path = "../../lib/zgltf" }, }, .paths = .{ "", diff --git a/engine/core/src/MemoryTracker.zig b/engine/core/src/MemoryTracker.zig index 8f274c9..0f9d464 100644 --- a/engine/core/src/MemoryTracker.zig +++ b/engine/core/src/MemoryTracker.zig @@ -145,6 +145,7 @@ pub var vtable: std.mem.Allocator.VTable = .{ .alloc = alloc, .free = free, .resize = resize, + .remap = std.mem.Allocator.noRemap, }; pub fn init(backingAllocator: std.mem.Allocator, settings: SetupSettings) @This() { @@ -172,7 +173,7 @@ pub fn allocator(self: *@This()) std.mem.Allocator { }; } -pub fn alloc(ctx: *anyopaque, len: usize, ptr_align: u8, ret_addr: usize) ?[*]u8 { +pub fn alloc(ctx: *anyopaque, len: usize, ptr_align: std.mem.Alignment, ret_addr: usize) ?[*]u8 { var self: *@This() = @alignCast(@ptrCast(ctx)); const rv = self.backingAllocator.vtable.alloc(self.backingAllocator.ptr, len, ptr_align, ret_addr); @@ -198,7 +199,7 @@ pub fn alloc(ctx: *anyopaque, len: usize, ptr_align: u8, ret_addr: usize) ?[*]u8 return rv; } -pub fn resize(ctx: *anyopaque, buf: []u8, buf_align: u8, new_len: usize, ret_addr: usize) bool { +pub fn resize(ctx: *anyopaque, buf: []u8, buf_align: std.mem.Alignment, new_len: usize, ret_addr: usize) bool { var self: *@This() = @alignCast(@ptrCast(ctx)); { self.lock.lock(); @@ -220,7 +221,7 @@ pub fn resize(ctx: *anyopaque, buf: []u8, buf_align: u8, new_len: usize, ret_add ); } -pub fn free(ctx: *anyopaque, buf: []u8, buf_align: u8, ret_addr: usize) void { +pub fn free(ctx: *anyopaque, buf: []u8, buf_align: std.mem.Alignment, ret_addr: usize) void { var self: *@This() = @alignCast(@ptrCast(ctx)); { self.lock.lock(); diff --git a/engine/core/src/math.zig b/engine/core/src/math.zig index 1713f2f..e25f800 100644 --- a/engine/core/src/math.zig +++ b/engine/core/src/math.zig @@ -153,16 +153,16 @@ pub fn Vector2Type(comptime T: type, comptime typeName: []const u8) type { pub inline fn from(o: anytype) @This() { const OType: std.builtin.Type = @typeInfo(@TypeOf(o.x)); switch (@typeInfo(T)) { - .Int => { + .int => { switch (OType) { - .Int => { + .int => { // convert integer into integer return .{ .x = @intCast(o.x), .y = @intCast(o.y), }; }, - .Float => { + .float => { // convert float into float return .{ .x = @intFromFloat(o.x), @@ -174,16 +174,16 @@ pub fn Vector2Type(comptime T: type, comptime typeName: []const u8) type { }, } }, - .Float => { + .float => { switch (OType) { - .Int => { + .int => { // convert integer into float return .{ .x = @floatFromInt(o.x), .y = @floatFromInt(o.y), }; }, - .Float => { + .float => { // convert float return .{ .x = @floatCast(o.x), diff --git a/engine/core/src/script/ComponentRef.zig b/engine/core/src/script/ComponentRef.zig index ee14100..06818b3 100644 --- a/engine/core/src/script/ComponentRef.zig +++ b/engine/core/src/script/ComponentRef.zig @@ -135,14 +135,14 @@ pub fn ComponentReferenceType(comptime T: type) type { fn makeTypeTable() lua.LibSpec { const methods = blk: { comptime var m: lua.LibSpec = &.{}; - m = m ++ .{.{ .name = "__index", .func = lua.CWrap(luaIndex) }}; - m = m ++ .{.{ .name = "__tostring", .func = lua.CWrap(luaToString) }}; + m = m ++ .{lua.luaL_Reg{ .name = "__index", .func = lua.CWrap(luaIndex) }}; + m = m ++ .{lua.luaL_Reg{ .name = "__tostring", .func = lua.CWrap(luaToString) }}; inline for (T.ScriptExports) |name| { - m = m ++ .{.{ .name = @as([*c]const u8, @ptrCast(name)), .func = ComponentFuncWrapper(@field(T, name), T) }}; + m = m ++ .{lua.luaL_Reg{ .name = @as([*c]const u8, @ptrCast(name)), .func = ComponentFuncWrapper(@field(T, name), T) }}; } - break :blk m ++ .{.{ .name = null, .func = null }}; + break :blk m ++ .{lua.luaL_Reg{ .name = null, .func = null }}; }; return methods; diff --git a/engine/core/src/stacks.zig b/engine/core/src/stacks.zig index d7b5175..b4effd4 100644 --- a/engine/core/src/stacks.zig +++ b/engine/core/src/stacks.zig @@ -97,17 +97,17 @@ pub const StackCompactor = struct { const module = debug_info.getModuleForAddress(address) catch continue; const symbol_info = module.getSymbolAtAddress(debug_info.allocator, address) catch continue; - if (symbol_info.line_info) |line_info| { + if (symbol_info.source_location) |line_info| { ownedStack.debugStr[i] = try std.fmt.allocPrintZ( bumpAllocator, "{d}> @0x{x} symbol_name: {s} {s} > {s}: {d}", - .{ i, address, symbol_info.symbol_name, symbol_info.compile_unit_name, line_info.file_name, line_info.line }, + .{ i, address, symbol_info.name, symbol_info.compile_unit_name, line_info.file_name, line_info.line }, ); } else { ownedStack.debugStr[i] = try std.fmt.allocPrintZ( bumpAllocator, "{d}> @0x{x} symbol_name: {s} {s} > no file info", - .{ i, address, symbol_info.symbol_name, symbol_info.compile_unit_name }, + .{ i, address, symbol_info.name, symbol_info.compile_unit_name }, ); } } diff --git a/engine/gameplay/build.zig b/engine/gameplay/build.zig deleted file mode 100644 index e69de29..0000000 diff --git a/engine/gameplay/build.zig.zon b/engine/gameplay/build.zig.zon deleted file mode 100644 index e69de29..0000000 diff --git a/engine/gameplay/src/cameras/flyCamera.zig b/engine/gameplay/src/cameras/flyCamera.zig deleted file mode 100644 index 26f0630..0000000 --- a/engine/gameplay/src/cameras/flyCamera.zig +++ /dev/null @@ -1 +0,0 @@ -const core = @import("core.zig"); diff --git a/engine/gameplay/src/cameras/fpCamera.zig b/engine/gameplay/src/cameras/fpCamera.zig deleted file mode 100644 index 4b06201..0000000 --- a/engine/gameplay/src/cameras/fpCamera.zig +++ /dev/null @@ -1,9 +0,0 @@ -// first person camera... -// god... modularity with user inputs are fucking crazy man... -// -// I like the idea of an input stack. -// -// inputs go through a list of stacked listeners. -// -// listeners can choose to either consume or pass a given input event. -// but listeners always listen. diff --git a/engine/gameplay/src/gameplay.zig b/engine/gameplay/src/gameplay.zig deleted file mode 100644 index e69de29..0000000 diff --git a/engine/modulelist.zig b/engine/modulelist.zig index 9d5aaeb..cb0a8c1 100644 --- a/engine/modulelist.zig +++ b/engine/modulelist.zig @@ -2,9 +2,10 @@ pub const list = [_][]const u8{ "core", "platform", "assets", - "audio" + "audio", "physics", - "graphics", - "ui", - "vkImgui", + // to be implemented + // "graphics", + // "ui", + // "vkImgui", }; diff --git a/engine/papyrus/build.zig.zon b/engine/papyrus/build.zig.zon index cf30329..dfed53f 100644 --- a/engine/papyrus/build.zig.zon +++ b/engine/papyrus/build.zig.zon @@ -1,5 +1,5 @@ .{ - .name = "papyrus", + .name = .papyrus, .version = "0.0.0", .dependencies = .{ .core = .{ .path = "../core" }, @@ -7,4 +7,5 @@ .paths = .{ "", }, + .fingerprint = 0x9178cd78b66a2873, } diff --git a/engine/papyrus/src/primitives/button.zig b/engine/papyrus/src/primitives/button.zig index b165a7d..e7d7de3 100644 --- a/engine/papyrus/src/primitives/button.zig +++ b/engine/papyrus/src/primitives/button.zig @@ -1,6 +1,6 @@ textSize: f32 = 16, font: papyrus.Font, -style: ButtonStyle = .{}, +buttonStyle: ButtonStyle = .{}, disabled: bool = false, buttonState: ButtonState = .Normal, @@ -46,30 +46,30 @@ pub fn addToDrawList(dlb: DrawListBuilder) !void { const button = dlb.n.nodeType.Button; - var borderColor = button.style.normal.borderColor; - var backgroundColor = button.style.normal.backgroundColor; - var foregroundColor = button.style.normal.foregroundColor; - var borderWidth = button.style.normal.borderWidth; + var borderColor = button.buttonStyle.normal.borderColor; + var backgroundColor = button.buttonStyle.normal.backgroundColor; + var foregroundColor = button.buttonStyle.normal.foregroundColor; + var borderWidth = button.buttonStyle.normal.borderWidth; if (button.buttonState == .Hovered) { - borderColor = button.style.hovered.borderColor; - backgroundColor = button.style.hovered.backgroundColor; - foregroundColor = button.style.hovered.foregroundColor; - borderWidth = button.style.hovered.borderWidth; + borderColor = button.buttonStyle.hovered.borderColor; + backgroundColor = button.buttonStyle.hovered.backgroundColor; + foregroundColor = button.buttonStyle.hovered.foregroundColor; + borderWidth = button.buttonStyle.hovered.borderWidth; } if (button.buttonState == .Pressed) { - borderColor = button.style.pressed.borderColor; - backgroundColor = button.style.pressed.backgroundColor; - foregroundColor = button.style.pressed.foregroundColor; - borderWidth = button.style.pressed.borderWidth; + borderColor = button.buttonStyle.pressed.borderColor; + backgroundColor = button.buttonStyle.pressed.backgroundColor; + foregroundColor = button.buttonStyle.pressed.foregroundColor; + borderWidth = button.buttonStyle.pressed.borderWidth; } if (button.disabled) { - borderColor = button.style.disabled.borderColor; - backgroundColor = button.style.disabled.backgroundColor; - foregroundColor = button.style.disabled.foregroundColor; - borderWidth = button.style.disabled.borderWidth; + borderColor = button.buttonStyle.disabled.borderColor; + backgroundColor = button.buttonStyle.disabled.backgroundColor; + foregroundColor = button.buttonStyle.disabled.foregroundColor; + borderWidth = button.buttonStyle.disabled.borderWidth; } try drawlist.append( diff --git a/engine/papyrus/tests/testing.zig b/engine/papyrus/tests/testing.zig index 625d5a1..d056cd1 100644 --- a/engine/papyrus/tests/testing.zig +++ b/engine/papyrus/tests/testing.zig @@ -60,7 +60,7 @@ test "hierarchy test" { ctx.get(slot4).text = MakeText("slot4"); try ctx.writeTree(.{}, "before.viz"); - try grapvizDotToPng(std.testing.allocator, "before.viz", "before.png"); + // try grapvizDotToPng(std.testing.allocator, "before.viz", "before.png"); try ctx.removeFromParent(slot2); ctx.get(try ctx.addSlot(slot3)).text = MakeText("slot7"); @@ -72,7 +72,7 @@ test "hierarchy test" { ctx.get(try ctx.addSlot(x)).text = MakeText("slot10"); try ctx.writeTree(.{}, "after.viz"); - try grapvizDotToPng(std.testing.allocator, "after.viz", "after.png"); + // try grapvizDotToPng(std.testing.allocator, "after.viz", "after.png"); } try ctx.tick(0.0016); @@ -225,7 +225,7 @@ test "dynamic pool test" { } // Insert 1 randomly add and delete objects another million objects in groups - var prng = std.rand.DefaultPrng.init(0x1234); + var prng = std.Random.DefaultPrng.init(0x1234); var rand = prng.random(); var workBuffer: [5]papyrus.NodeHandle = .{ .{}, .{}, .{}, .{}, .{} }; diff --git a/engine/platform/build.zig b/engine/platform/build.zig index efa89e4..5fa02e2 100644 --- a/engine/platform/build.zig +++ b/engine/platform/build.zig @@ -9,9 +9,8 @@ const std = @import("std"); // } const dependencyList = [_][]const u8{ - "glfw3", - "vulkan", "core", + "sdl3", }; pub fn build(b: *std.Build) void { diff --git a/engine/platform/build.zig.zon b/engine/platform/build.zig.zon index f533b5c..a19ae44 100644 --- a/engine/platform/build.zig.zon +++ b/engine/platform/build.zig.zon @@ -1,12 +1,12 @@ .{ - .name = "platform", + .name = .platform, .version = "0.0.0", .dependencies = .{ .core = .{ .path = "../core" }, - .glfw3 = .{ .path = "../../lib/glfw3" }, - .vulkan = .{ .path = "../../lib/vulkan" }, + .sdl3 = .{ .path = "../../lib/sdl3" }, }, .paths = .{ "", }, + .fingerprint = 0x3952d0cb1f629de7, } diff --git a/engine/platform/glfw3.dll b/engine/platform/glfw3.dll deleted file mode 100644 index 9657dec..0000000 Binary files a/engine/platform/glfw3.dll and /dev/null differ diff --git a/engine/platform/input listener.md b/engine/platform/input listener.md index a4cd097..3e700e5 100644 --- a/engine/platform/input listener.md +++ b/engine/platform/input listener.md @@ -54,7 +54,7 @@ const MyGameSystem = struct { pub fn setupInputBunding(self: *@This()) !void { self.handleJumpBinding = input.bindAction(self, , @This().handleJumpInput); - input.getBinding(self.handleJumpBinding).setPriority(64); // higher priority gets first consumption + input.getBinding(self.handleJumpBinding).setPriority(64); // optional higher priority gets first consumption } pub fn handleJumpInput(input: InputAction) !bool diff --git a/engine/platform/src/InputState.zig b/engine/platform/src/InputState.zig deleted file mode 100644 index 94a96ca..0000000 --- a/engine/platform/src/InputState.zig +++ /dev/null @@ -1,5 +0,0 @@ -const std = @import("std"); -const core = @import("core"); - -mousePos: core.Vector2 = .{}, -keydown: [256]bool = std.mem.zeroes([256]bool), diff --git a/engine/platform/src/c.zig b/engine/platform/src/c.zig deleted file mode 100644 index 7cf7041..0000000 --- a/engine/platform/src/c.zig +++ /dev/null @@ -1,20 +0,0 @@ -pub const glfw3 = @import("glfw3"); -pub const vk = @import("vulkan"); - -pub extern fn glfwGetInstanceProcAddress( - instance: vk.Instance, - procname: [*:0]const u8, -) vk.PfnVoidFunction; - -pub extern fn glfwGetPhysicalDevicePresentationSupport( - instance: vk.Instance, - pdev: vk.PhysicalDevice, - queuefamily: u32, -) c_int; - -pub extern fn glfwCreateWindowSurface( - instance: vk.Instance, - window: *glfw3.GLFWwindow, - allocation_callbacks: ?*const vk.AllocationCallbacks, - surface: *vk.SurfaceKHR, -) vk.Result; diff --git a/engine/platform/src/glfw_defs.zig b/engine/platform/src/glfw_defs.zig deleted file mode 100644 index 1d265c2..0000000 --- a/engine/platform/src/glfw_defs.zig +++ /dev/null @@ -1,77 +0,0 @@ -pub const keys = enum(c_int) { - // zig fmt: off - unknown = -1, - Space = 32, - Apostrophe = 39, - Comma = 44, - Period = 45, - Slash = 47, - @"0" = 48, - @"1" = 49, - @"2" = 50, - @"3" = 51, - @"4" = 52, - @"5" = 53, - @"6" = 54, - @"7" = 55, - @"8" = 56, - @"9" = 57, - Semicolon = 59, - Equal = 61, - A = 65, - B = 66, - C = 67, - D = 68, - E = 69, - F = 70, - G = 71, - H = 72, - I = 73, - J = 74, - K = 75, - L = 76, - M = 77, - N = 78, - O = 79, - P = 80, - Q = 81, - R = 82, - S = 83, - T = 84, - U = 85, - V = 86, - W = 87, - X = 88, - Y = 89, - Z = 90, - LeftBrackSq = 91, - BackSlash = 92, - RightBrackSq = 93, - - // control keys - Escape = 256, - Enter = 257, - Tab = 258, - Backspace = 259, - Insert = 260, - Delete = 261, - Right = 262, - Left = 263, - Up = 264, - Down = 265, - Pageup = 266, - Pagedown = 267, - Home = 268, - End = 269, - // zig fmt: on - _, -}; - -pub const actions = enum(c_int) { - // zig fmt: off - Release = 0, - Press = 1, - Repeat = 2, - // zig fmt: on - _, -}; diff --git a/engine/platform/src/platform.zig b/engine/platform/src/platform.zig index 0e44539..4b80441 100644 --- a/engine/platform/src/platform.zig +++ b/engine/platform/src/platform.zig @@ -4,9 +4,7 @@ const core = @import("core"); // controls glfw and general windowing // graphics depends on this one -pub usingnamespace @import("windowing.zig"); pub const windowing = @import("windowing.zig"); -pub const glfw_defs = @import("glfw_defs.zig"); pub const Module: core.ModuleDescription = .{ .name = "platform", @@ -14,7 +12,6 @@ pub const Module: core.ModuleDescription = .{ }; var gPlatformInstance: *windowing.PlatformInstance = undefined; - var gStartupParams: windowing.PlatformParams = .{}; pub fn setWindowSettings(params: windowing.PlatformParams) void { @@ -30,6 +27,7 @@ pub fn start_module(comptime programSpec: anytype, args: anytype, allocator: std gPlatformInstance = try allocator.create(windowing.PlatformInstance); gPlatformInstance.* = try windowing.PlatformInstance.init(allocator, gStartupParams); + try gPlatformInstance.setup(); } @@ -48,5 +46,3 @@ pub fn shutdown_module(allocator: std.mem.Allocator) void { // I have a bug somewhere. need to find out where it is allocator.destroy(gPlatformInstance); } - -pub const vkLoadFunc = windowing.c.glfwGetInstanceProcAddress; diff --git a/engine/platform/src/windowing.zig b/engine/platform/src/windowing.zig index a47393c..b0bb500 100644 --- a/engine/platform/src/windowing.zig +++ b/engine/platform/src/windowing.zig @@ -1,12 +1,9 @@ const std = @import("std"); const core = @import("core"); const platform = @import("platform.zig"); -const gameInput = @import("gameInput.zig"); -pub const c = @import("c.zig"); -pub const glfw3 = c.glfw3; -const graphicsBackend = @import("graphicsBackend"); const RingQueue = core.RingQueue; +const sdl3 = @import("sdl3"); const tracy = core.tracy; const InputState = @import("InputState.zig"); @@ -52,8 +49,8 @@ pub const RawInputObjectRef = struct { pub const PlatformParams = struct { extent: core.Vector2c = .{ .x = 1600, .y = 900 }, windowName: []const u8 = "sample window", - noinit: bool = false, icon: []const u8 = "textures/icon.png", + hasVideo: bool = true, }; pub var gPlatformSettings: struct { @@ -62,79 +59,19 @@ pub var gPlatformSettings: struct { transparentFrameBuffer: bool = false, } = .{}; -pub const InstalledEvents = struct { - allocator: std.mem.Allocator, - onWindowFocused: std.ArrayListUnmanaged(glfw3.GLFWwindowfocusfun) = .{}, - onMouseButton: std.ArrayListUnmanaged(glfw3.GLFWmousebuttonfun) = .{}, - onCursorPos: std.ArrayListUnmanaged(glfw3.GLFWcursorposfun) = .{}, - onTextEntry: std.ArrayListUnmanaged(glfw3.GLFWcharfun) = .{}, - - pub fn init(allocator: std.mem.Allocator) @This() { - return .{ - .allocator = allocator, - }; - } - - pub fn deinit(self: *@This()) void { - self.onWindowFocused.deinit(self.allocator); - self.onMouseButton.deinit(self.allocator); - self.onCursorPos.deinit(self.allocator); - self.onTextEntry.deinit(self.allocator); - } -}; - // For windows and linux computers this is a glfw instance pub const PlatformInstance = struct { allocator: std.mem.Allocator, - windowName: []const u8, - iconPath: []const u8, - window: ?*glfw3.GLFWwindow = null, - windowExtent: core.Vector2c, exitSignal: bool = false, - eventQueue: core.ConcurrentQueueU(IOEvent), - handlers: InstalledEvents, - workBuffer: std.ArrayList(IOEvent), - listeners: std.ArrayList(RawInputObjectRef), - gameInput: *gameInput.GameInputSystem = undefined, - cursorEnabled: bool = true, newCursorEnabled: bool = true, + hasVideo: bool = false, - cursorPos: core.Vector2f = .{}, - - contentScale: core.Vector2f = .{}, - - // Low level controls of the current state of input, - inputState: InputState = .{}, - windowExtentLock: std.Thread.Mutex = .{}, + windowExtent: core.Vector2c, pub fn deinit(self: *@This()) void { - self.workBuffer.deinit(); - self.eventQueue.deinit(self.allocator); - self.handlers.deinit(); - self.gameInput.deinit(); - self.allocator.destroy(self.gameInput); - - for (self.listeners.items) |listener| { - _ = listener; - } - - self.listeners.deinit(); - } - - pub fn updateExtent(self: *@This(), newExtent: core.Vector2c) void { - self.windowExtentLock.lock(); - defer self.windowExtentLock.unlock(); - self.windowExtent = newExtent; - } - - pub fn extent(self: *@This()) core.Vector2c { - self.windowExtentLock.lock(); - defer self.windowExtentLock.unlock(); - const rv = self.windowExtent; - - return rv; + _ = self; } pub fn init( @@ -146,25 +83,13 @@ pub const PlatformInstance = struct { .allocator = allocator, .iconPath = params.icon, .windowExtent = params.extent, - .eventQueue = try core.ConcurrentQueueU(IOEvent).initCapacity(allocator, 8096), - .handlers = InstalledEvents.init(allocator), - .listeners = std.ArrayList(RawInputObjectRef).init(allocator), - .workBuffer = std.ArrayList(IOEvent).init(allocator), + .hasVideo = params.hasVideo, }; - core.engine_logs("Initializing with Vulkan 1.3"); - // } - // if (graphicsBackend.UseGLES2) { - // core.engine_logs("Initializing with OpenGLES"); - // } - return self; } pub fn setup(self: *@This()) !void { - try self.initGlfw(); - try self.initInput(); - core.setupEnginePlatform(self, enginePoll, processEvents); } @@ -174,144 +99,41 @@ pub const PlatformInstance = struct { self.pollEvents(); } - pub fn initInput(self: *@This()) !void { - self.gameInput = try self.allocator.create(gameInput.GameInputSystem); - try self.listeners.append(RawInputObjectRef.from(self.gameInput)); - } - pub fn installListener(self: *@This(), listener: anytype) !void { try self.listeners.append(RawInputObjectRef.from(listener)); } - pub fn initGlfw(self: *@This()) !void { - if (glfw3.glfwInit() != glfw3.GLFW_TRUE) { - core.engine_errs("Glfw Init Failed"); - return error.GlfwInitFailed; - } - - glfw3.glfwWindowHint(glfw3.GLFW_CLIENT_API, glfw3.GLFW_NO_API); - glfw3.glfwWindowHint(glfw3.GLFW_DECORATED, if (gPlatformSettings.decoratedWindow) glfw3.GLFW_TRUE else glfw3.GLFW_FALSE); - glfw3.glfwWindowHint(glfw3.GLFW_TRANSPARENT_FRAMEBUFFER, if (gPlatformSettings.transparentFrameBuffer) glfw3.GLFW_TRUE else glfw3.GLFW_FALSE); - - self.window = glfw3.glfwCreateWindow( - @as(c_int, @intCast(self.windowExtent.x)), - @as(c_int, @intCast(self.windowExtent.y)), - self.windowName.ptr, - null, - null, - ) orelse return error.WindowInitFailed; - - self.maybeSetPngIcon(); - - if (glfw3.glfwRawMouseMotionSupported() != 0) - glfw3.glfwSetInputMode(self.window, glfw3.GLFW_RAW_MOUSE_MOTION, glfw3.GLFW_TRUE); - - glfw3.glfwSetWindowAspectRatio(self.window, 16, 9); - - self.installHandlers(); - } - - pub fn maybeSetPngIcon(self: *@This()) void { - var pngContents = core.png.PngContents.initFromFS(core.fs(), self.allocator, self.iconPath) catch return; - defer pngContents.deinit(); - - const pixels: ?*u8 = &pngContents.pixels[0]; - var iconImage = glfw3.GLFWimage{ - .width = @as(c_int, @intCast(pngContents.size.x)), - .height = @as(c_int, @intCast(pngContents.size.y)), - .pixels = pixels, - }; - glfw3.glfwSetWindowIcon(self.window, 1, &iconImage); - } - pub fn pollEvents(self: *@This()) void { - glfw3.glfwPollEvents(); - - if (self.cursorEnabled != self.newCursorEnabled) { - self.cursorEnabled = self.newCursorEnabled; - glfw3.glfwSetInputMode(self.window, glfw3.GLFW_CURSOR, if (self.cursorEnabled) glfw3.GLFW_CURSOR_NORMAL else glfw3.GLFW_CURSOR_DISABLED); - } - if (self.shouldExit()) { core.gEngine.exit(); } } + fn convertEvent(event: sdl3.Event) ?IOEvent { + _ = event; + return null; + } + pub fn processEvents(ptr: *anyopaque, frameNumber: u64) core.EngineDataEventError!void { - const self: *@This() = @alignCast(@ptrCast(ptr)); + _ = ptr; _ = frameNumber; var t1 = tracy.ZoneN(@src(), "Pumping Events"); defer t1.End(); - self.pumpEvents() catch return error.UnknownStatePanic; + const inputStack = core.getInputStack(); + inputStack.updatePreviousInputs(); + for (sdl3.pollEvent()) |event| { + if (convertEvent(event)) |converted| { + inputStack.routeEvent(converted); + } + } } pub fn getCursorPosition(self: *@This()) core.Vector2f { return self.cursorPos; } - pub fn installHandlers(self: *@This()) void { - _ = glfw3.glfwSetCursorPosCallback(@as(?*glfw3.GLFWwindow, @ptrCast(self.window)), mousePositionCallback); - _ = glfw3.glfwSetMouseButtonCallback(@as(?*glfw3.GLFWwindow, @ptrCast(self.window)), mouseButtonCallback); - _ = glfw3.glfwSetKeyCallback(@as(?*glfw3.GLFWwindow, @ptrCast(self.window)), keyCallback); - _ = glfw3.glfwSetFramebufferSizeCallback(@as(?*glfw3.GLFWwindow, @ptrCast(self.window)), windowResizeCallback); - // _ = glfw3.glfwSetCharCallback(@as(?*glfw3.GLFWwindow, @ptrCast(self.window)), charCallback); - - glfw3.glfwGetWindowContentScale(@as(?*glfw3.GLFWwindow, @ptrCast(self.window)), &self.contentScale.x, &self.contentScale.y); - } - - pub fn pumpEvents(self: *@This()) !void { - const inputStack = core.getInputStack(); - inputStack.updatePreviousInputs(); - - if (self.eventQueue.count() > 0) { - while (self.eventQueue.pop()) |event| { - try self.workBuffer.append(event); - } - - for (self.workBuffer.items) |event| { - { - inputStack.routeEvent(event); - } - - for (self.listeners.items) |listener| { - try listener.vtable.OnIoEvent(listener.ptr, event); - } - - switch (event) { - .mousePosition => |mousePos| { - for (self.handlers.onCursorPos.items) |handler| { - _ = handler; - // handler.?(self.window, mousePos.x, mousePos.y); - } - - self.cursorPos.x = @floatCast(mousePos.x); - self.cursorPos.y = @floatCast(mousePos.y); - self.inputState.mousePos = core.Vector2{ .x = mousePos.x, .y = mousePos.y }; - }, - .mouseButton => {}, - .windowFocused => {}, - .scroll => {}, - .key => {}, - .windowResize => {}, - .codepoint => |codepoint| { - // core.ui_log("codepoint recieved: {c}", .{@as([4]u8, @bitCast(codepoint))[0]}); - for (self.handlers.onTextEntry.items) |handler| { - handler.?(self.window, codepoint); - } - }, - } - } - - self.workBuffer.clearRetainingCapacity(); - } - inputStack.sendAxisUpdates(); - } - pub fn shouldExit(self: @This()) bool { - if (glfw3.glfwWindowShouldClose(self.window) == glfw3.GLFW_TRUE) - return true; - if (self.exitSignal) return true; @@ -325,68 +147,6 @@ pub const PlatformInstance = struct { pub fn isCursorEnabled(self: @This()) bool { return self.cursorEnabled; } - - // Low level API - pub fn installCursorPosCallback(self: *@This(), pfn: glfw3.GLFWcursorposfun) !void { - try self.handlers.onCursorPos.append(self.handlers.allocator, pfn); - } - - pub fn installCodepointCallback(self: *@This(), pfn: glfw3.GLFWcharfun) !void { - try self.handlers.onCursorPos.append(self.handlers.allocator, pfn); - } }; pub const IOEvent = core.IOEvent; - -fn windowResizeCallback(_: ?*glfw3.GLFWwindow, newWidth: c_int, newHeight: c_int) callconv(.C) void { - pushEventSafe(.{ .windowResize = .{ - .newSize = .{ .x = @floatFromInt(newWidth), .y = @floatFromInt(newHeight) }, - } }); -} - -// push an io event onto the IOEventQueue -// -// Excessive events shall be dropped. -pub fn pushEventSafe(event: IOEvent) void { - platform.getInstance().eventQueue.push(event) catch { - core.engine_logs("too many events queued, dropping event..."); - }; -} - -pub fn mousePositionCallback(_: ?*glfw3.GLFWwindow, xpos: f64, ypos: f64) callconv(.C) void { - pushEventSafe(.{ .mousePosition = .{ .x = xpos, .y = ypos } }); -} - -pub fn mouseButtonCallback(_: ?*glfw3.GLFWwindow, button: c_int, action: c_int, mods: c_int) callconv(.C) void { - pushEventSafe(.{ .mouseButton = .{ .button = button, .action = action, .mods = mods } }); -} - -pub fn windowFocusedCallback(_: ?*glfw3.GLFWwindow, focused: c_int) callconv(.C) void { - pushEventSafe(.{ .windowFocused = .{ .focused = focused } }); -} - -pub fn scrollCallback(_: ?*glfw3.GLFWwindow, xoffset: c_int, yoffset: c_int) callconv(.C) void { - pushEventSafe(.{ .scroll = .{ .xoffset = xoffset, .yoffset = yoffset } }); -} - -pub fn keyCallback(_: ?*glfw3.GLFWwindow, key: c_int, scancode: c_int, action: c_int, mods: c_int) callconv(.C) void { - pushEventSafe(.{ .key = .{ .key = key, .scancode = scancode, .action = action, .mods = mods } }); -} - -pub fn charCallback(_: ?*glfw3.GLFWwindow, codepoint: c_uint) callconv(.C) void { - pushEventSafe(.{ .codepoint = codepoint }); -} - -pub fn getPlatformExtensions(allocator: std.mem.Allocator) !std.ArrayList([*:0]const u8) { - var rv = std.ArrayList([*:0]const u8).init(allocator); - - var extCount: u32 = 0; - const extensions = platform.glfw3.glfwGetRequiredInstanceExtensions(&extCount); - - for (0..extCount) |i| { - const x = @as([*]const [*:0]const u8, @ptrCast(extensions)); - try rv.append(x[i]); - } - - return rv; -} diff --git a/engine/rend/README.md b/engine/rend/README.md new file mode 100644 index 0000000..6686a9d --- /dev/null +++ b/engine/rend/README.md @@ -0,0 +1,3 @@ +# Rend - Backlog's renderer module + +This implements a renderer on top of sdl gpu diff --git a/lib/lua/src/lua.zig b/lib/lua/src/lua.zig index da01ec4..fe1db95 100644 --- a/lib/lua/src/lua.zig +++ b/lib/lua/src/lua.zig @@ -9,6 +9,7 @@ pub const LuaStateSettings = struct { pub const LuaCFunc = *const fn (?*c.lua_State) callconv(.C) i32; pub const LuaZigFunc = *const fn (LuaState) i32; pub const LibSpec = []const c.luaL_Reg; +pub const luaL_Reg = c.luaL_Reg; pub fn CWrap(comptime Func: anytype) LuaCFunc { const Wrap = struct { diff --git a/lib/ozz/build.zig b/lib/ozz/build.zig index 3f98288..2687906 100644 --- a/lib/ozz/build.zig +++ b/lib/ozz/build.zig @@ -38,7 +38,7 @@ pub const GltfToOzz = struct { fn initFromBuilder(b: *Build, ozz_build: *Build, opts: BuildOptions) GltfToOzz { const exe = ozz_build.addExecutable(.{ .name = "gltf2ozz", - .target = ozz_build.host, + .target = ozz_build.graph.host, .optimize = .ReleaseSafe, }); diff --git a/lib/spirv-reflect-zig/build.zig b/lib/spirv-reflect-zig/build.zig index 411bdc0..e3211a5 100644 --- a/lib/spirv-reflect-zig/build.zig +++ b/lib/spirv-reflect-zig/build.zig @@ -31,12 +31,12 @@ pub const SpirvGenerator2 = struct { const reflect = spirv_build.addExecutable(.{ .name = "spirv-reflect-zig", .root_source_file = spirv_build.path("src/main.zig"), - .target = spirv_build.host, + .target = spirv_build.graph.host, .optimize = opts.optimize, }); const dep = spirv_build.dependency("glslTypes", .{ - .target = spirv_build.host, + .target = spirv_build.graph.host, .optimize = opts.optimize, }); diff --git a/projects/build.zig b/projects/build.zig index f9901f1..4722c8b 100644 --- a/projects/build.zig +++ b/projects/build.zig @@ -10,9 +10,9 @@ pub fn build(b: *std.Build) void { .optimize = optimize, }); - blbuild.addProgram(.{ - .name = "demo", - .desc = "sdl3 project setup", - .root_source_file = b.path("empty/main.zig"), + _ = blbuild.addProgram(.{ + .name = "sampleGame", + .desc = "sdl3 project sample", + .root_source_file = b.path("sampleGame/main.zig"), }); } diff --git a/projects/build.zig.zon b/projects/build.zig.zon index f77a55f..3221a3e 100644 --- a/projects/build.zig.zon +++ b/projects/build.zig.zon @@ -1,5 +1,5 @@ .{ - .name = "MyProjects", + .name = .MyProjects, .version = "0.0.0", .dependencies = .{ // Neonwood's /lib folder contains @@ -18,4 +18,5 @@ .paths = .{ "", }, + .fingerprint = 0x14099f7390321175 } diff --git a/projects/empty/main.zig b/projects/sampleGame/main.zig similarity index 83% rename from projects/empty/main.zig rename to projects/sampleGame/main.zig index 21a4e0b..26c4098 100644 --- a/projects/empty/main.zig +++ b/projects/sampleGame/main.zig @@ -1,37 +1,39 @@ -allocator: std.mem.Allocator, - -pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); - -pub fn init(allocator: std.mem.Allocator) !*@This() { - const self = try allocator.create(@This()); - self.* = .{ - .allocator = allocator, - }; - return self; -} - -pub fn prepare_game(self: *@This()) !void { - _ = self; - try core.fs().addContentPath("empty"); - try script.loadTypes("scripts"); - try script.runScriptFile("scripts/prepare.lua"); -} - -pub fn tick(self: *@This(), _: f64) void { - _ = self; -} - -pub fn deinit(self: *@This()) void { - self.allocator.destroy(self); -} - -pub fn main() anyerror!void { - try backlog.initializeAndRunStandardProgram(@This(), .{ - .name = "Hello World", - }); -} - -const std = @import("std"); -const backlog = @import("Backlog"); -const core = backlog.core; -const script = core.script; +allocator: std.mem.Allocator, + +pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This()); + +pub fn init(allocator: std.mem.Allocator) !*@This() { + const self = try allocator.create(@This()); + self.* = .{ + .allocator = allocator, + }; + return self; +} + +pub fn prepare_game(self: *@This()) !void { + _ = self; + try core.fs().addContentPath("empty"); + try script.loadTypes("scripts"); + try script.runScriptFile("scripts/prepare.lua"); +} + +pub fn tick(self: *@This(), _: f64) void { + _ = self; +} + +pub fn deinit(self: *@This()) void { + self.allocator.destroy(self); +} + +pub fn main() anyerror!void { + std.debug.print("hello world\n", .{}); + + // try backlog.initializeAndRunStandardProgram(@This(), .{ + // .name = "Hello World", + // }); +} + +const std = @import("std"); +const backlog = @import("Backlog"); +const core = backlog.core; +const script = core.script; diff --git a/projects/empty/scripts/prepare.lua b/projects/sampleGame/scripts/prepare.lua similarity index 95% rename from projects/empty/scripts/prepare.lua rename to projects/sampleGame/scripts/prepare.lua index 54c8287..665c637 100644 --- a/projects/empty/scripts/prepare.lua +++ b/projects/sampleGame/scripts/prepare.lua @@ -1 +1 @@ -print("hello world!") +print("hello world!")