{"id":29360249,"url":"https://github.com/bbredesen/vk-gen","last_synced_at":"2025-08-12T18:13:31.919Z","repository":{"id":125454060,"uuid":"362925721","full_name":"bbredesen/vk-gen","owner":"bbredesen","description":"Code generation to create a Go binding for the Vulkan graphics API.","archived":false,"fork":false,"pushed_at":"2023-11-22T18:11:15.000Z","size":3701,"stargazers_count":11,"open_issues_count":7,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-09T07:12:21.265Z","etag":null,"topics":["binding","binding-generator","code-gen","go","golang","vulkan"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bbredesen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-29T19:29:02.000Z","updated_at":"2025-04-03T18:38:28.000Z","dependencies_parsed_at":"2024-06-20T10:23:58.544Z","dependency_job_id":"3be4decc-a8fe-4ba8-8e5f-6a85d4df798e","html_url":"https://github.com/bbredesen/vk-gen","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/bbredesen/vk-gen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbredesen%2Fvk-gen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbredesen%2Fvk-gen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbredesen%2Fvk-gen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbredesen%2Fvk-gen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bbredesen","download_url":"https://codeload.github.com/bbredesen/vk-gen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbredesen%2Fvk-gen/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270110057,"owners_count":24528969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binding","binding-generator","code-gen","go","golang","vulkan"],"created_at":"2025-07-09T07:12:20.339Z","updated_at":"2025-08-12T18:13:31.881Z","avatar_url":"https://github.com/bbredesen.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vk-gen\n\nvk-gen is a tool used to create Go bindings for the Vulkan graphics API. It uses the Vulkan XML specification to\ngenerate all type definitions and native function calls for the API. It generates the code for\n[go-vk](https://github.com/bbredesen/go-vk), but it can just as well be used to create a modified binding set in your\nown projects (for example, excluding certain vendor extensions, including beta extensions, or to generate code from a\nspecific version of the Vulkan headers). \n\n## Basic Usage\n\n**You do not need to install this tool to use go-vk in a project.** Install if you need to generate for a specific\nversion of the API or want to produce a binding using only a subset of Vulkan.\n\nInstall: `go install github.com/bbredesen/vk-gen@latest`\n\nDownload the latest registry file: `curl https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/registry/vk.xml \u003e vk.xml`\n\n(Or, replace \"main\" in the URL above with the tagged version you want to generate against: e.g., \n`https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/v1.2.203/registry/vk.xml` for the last version 1.2 specification.)\n\nRun the tool: `vk-gen`\n\nUse `-inFile` to specify a registry filename or path (defaults to `./vk.xml`)\n\nUse `-outDir` to specify the destination folder for writing go-vk files (defaults to `./vk/`)\n\nThe `static_include` folder in this repository contains static template files that are copied directly into the output\nfolder. These files are directly copied to the output, but are not evaluated or compiled into this tool. If using the Go\nlanguage server, you can set `-static_include` in your `directoryFilters` setting. See\n(https://github.com/golang/tools/blob/master/gopls/doc/settings.md) for details.\n\n## exceptions.json\n\nThere are a number of datatypes and values in vk.xml which need special handling, frequently because the spec uses\nC data type formats or types that don't translate 1-to-1 to Go's type system. While we could probably work\naround many of them by parsing the C code in the XML file, it is much simpler to set these exceptions in a separate file\nwith a standard format.\n\nNOTE: There are a number of \"legacy\" entries in this file left over from development, but which are now unused. A future\nissue/PR will clean this up, but they don't hurt anything at the moment.\n\n### union\n\n* `go:internalSize` - Go has no notion of union types. This field allows you to specify a size for the public\n  to internal translation result. By default, vk-gen will use the size of the first member in the union, but that is\n  not necessarily the largest member. This value must be a string and is copied to an array declaration. It can be\n  anything that resolves to a constant in Go, though most typically it will be an integer value (represented as a\n  string). The value should be the aligned (?) data size in bytes of the largest member of the union. \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbredesen%2Fvk-gen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbbredesen%2Fvk-gen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbredesen%2Fvk-gen/lists"}