Skip to content

Commit 8429d70

Browse files
authored
Merge pull request #108 from Over-Run/feature
2 parents 37eb149 + 7632963 commit 8429d70

287 files changed

Lines changed: 85060 additions & 859 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

generators/opengl/src/main/kotlin/overrungl/opengl/OpenGLGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import overrungl.gen.file.unsigned_char_boolean
2525
import javax.xml.parsers.DocumentBuilderFactory
2626
import kotlin.io.path.Path
2727

28-
// gl.xml updated: 2025/06/29
28+
// gl.xml updated: 2025-07-23
2929

3030
const val openglPackage = "overrungl.opengl"
3131
fun extPackage(vendor: String): String {

generators/opengl/src/main/resources/gl.xml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4086,25 +4086,25 @@ typedef unsigned int GLhandleARB;
40864086
<enum value="0x88DD" name="GL_MATRIX29_ARB"/>
40874087
<enum value="0x88DE" name="GL_MATRIX30_ARB"/>
40884088
<enum value="0x88DF" name="GL_MATRIX31_ARB"/>
4089-
<enum value="0x88E0" name="GL_STREAM_DRAW" group="VertexBufferObjectUsage,BufferUsageARB"/>
4089+
<enum value="0x88E0" name="GL_STREAM_DRAW" group="BufferUsageARB"/>
40904090
<enum value="0x88E0" name="GL_STREAM_DRAW_ARB"/>
4091-
<enum value="0x88E1" name="GL_STREAM_READ" group="VertexBufferObjectUsage,BufferUsageARB"/>
4091+
<enum value="0x88E1" name="GL_STREAM_READ" group="BufferUsageARB"/>
40924092
<enum value="0x88E1" name="GL_STREAM_READ_ARB"/>
4093-
<enum value="0x88E2" name="GL_STREAM_COPY" group="VertexBufferObjectUsage,BufferUsageARB"/>
4093+
<enum value="0x88E2" name="GL_STREAM_COPY" group="BufferUsageARB"/>
40944094
<enum value="0x88E2" name="GL_STREAM_COPY_ARB"/>
40954095
<unused start="0x88E3" vendor="NV" comment="To extend ARB_vbo"/>
4096-
<enum value="0x88E4" name="GL_STATIC_DRAW" group="VertexBufferObjectUsage,BufferUsageARB"/>
4096+
<enum value="0x88E4" name="GL_STATIC_DRAW" group="BufferUsageARB"/>
40974097
<enum value="0x88E4" name="GL_STATIC_DRAW_ARB"/>
4098-
<enum value="0x88E5" name="GL_STATIC_READ" group="VertexBufferObjectUsage,BufferUsageARB"/>
4098+
<enum value="0x88E5" name="GL_STATIC_READ" group="BufferUsageARB"/>
40994099
<enum value="0x88E5" name="GL_STATIC_READ_ARB"/>
4100-
<enum value="0x88E6" name="GL_STATIC_COPY" group="VertexBufferObjectUsage,BufferUsageARB"/>
4100+
<enum value="0x88E6" name="GL_STATIC_COPY" group="BufferUsageARB"/>
41014101
<enum value="0x88E6" name="GL_STATIC_COPY_ARB"/>
41024102
<unused start="0x88E7" vendor="NV" comment="To extend ARB_vbo"/>
4103-
<enum value="0x88E8" name="GL_DYNAMIC_DRAW" group="VertexBufferObjectUsage,BufferUsageARB"/>
4103+
<enum value="0x88E8" name="GL_DYNAMIC_DRAW" group="BufferUsageARB"/>
41044104
<enum value="0x88E8" name="GL_DYNAMIC_DRAW_ARB"/>
4105-
<enum value="0x88E9" name="GL_DYNAMIC_READ" group="VertexBufferObjectUsage,BufferUsageARB"/>
4105+
<enum value="0x88E9" name="GL_DYNAMIC_READ" group="BufferUsageARB"/>
41064106
<enum value="0x88E9" name="GL_DYNAMIC_READ_ARB"/>
4107-
<enum value="0x88EA" name="GL_DYNAMIC_COPY" group="VertexBufferObjectUsage,BufferUsageARB"/>
4107+
<enum value="0x88EA" name="GL_DYNAMIC_COPY" group="BufferUsageARB"/>
41084108
<enum value="0x88EA" name="GL_DYNAMIC_COPY_ARB"/>
41094109
<enum value="0x88EB" name="GL_PIXEL_PACK_BUFFER" group="CopyBufferSubDataTarget,BufferTargetARB,BufferStorageTarget"/>
41104110
<enum value="0x88EB" name="GL_PIXEL_PACK_BUFFER_ARB"/>
@@ -19179,14 +19179,14 @@ typedef unsigned int GLhandleARB;
1917919179
<param class="buffer"><ptype>GLuint</ptype> <name>buffer</name></param>
1918019180
<param kind="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
1918119181
<param len="size">const void *<name>data</name></param>
19182-
<param group="VertexBufferObjectUsage"><ptype>GLenum</ptype> <name>usage</name></param>
19182+
<param group="BufferUsageARB"><ptype>GLenum</ptype> <name>usage</name></param>
1918319183
</command>
1918419184
<command>
1918519185
<proto>void <name>glNamedBufferDataEXT</name></proto>
1918619186
<param class="buffer"><ptype>GLuint</ptype> <name>buffer</name></param>
1918719187
<param><ptype>GLsizeiptr</ptype> <name>size</name></param>
1918819188
<param len="COMPSIZE(size)">const void *<name>data</name></param>
19189-
<param group="VertexBufferObjectUsage"><ptype>GLenum</ptype> <name>usage</name></param>
19189+
<param group="BufferUsageARB"><ptype>GLenum</ptype> <name>usage</name></param>
1919019190
</command>
1919119191
<command>
1919219192
<proto>void <name>glNamedBufferPageCommitmentARB</name></proto>

generators/src/main/kotlin/overrungl/gen/file/Lexer.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ internal class Lexer(private val source: String) {
105105
while (!isAtEnd() && peek() != '\n'.code) {
106106
advance()
107107
}
108-
line++
109108
addToken(PREPROCESSOR)
110109
}
111110

generators/vulkan/src/main/kotlin/overrungl/vulkan/VulkanGenerator.kt

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ import javax.xml.parsers.DocumentBuilderFactory
2828
import kotlin.io.path.Path
2929
import kotlin.io.path.createParentDirectories
3030

31-
// vk.xml: 2025-06-29
32-
// video.xml: 2025-06-29
31+
// vk.xml: 2025-07-23
32+
// video.xml: 2025-07-23
3333

3434
const val vulkanPackage = "overrungl.vulkan"
3535

@@ -288,6 +288,10 @@ fun main() {
288288
val defineVkVersion = mutableMapOf<String, String>()
289289
val addedStructPackages = mutableSetOf<String>()
290290
val typeNodeList = (root.getElementsByTagName("types").item(0) as Element).getElementsByTagName("type")
291+
val appendedStructContent = mutableMapOf<String, String>() // struct content without braces
292+
val aliasedStruct = mutableMapOf<String, String>()
293+
val aliasedStructPackageName = mutableMapOf<String, String>()
294+
val aliasedStructCategory = mutableMapOf<String, String>()
291295
for (i in 0 until typeNodeList.length) {
292296
val typeNode = typeNodeList.item(i) as Element
293297
when (val category = typeNode.getAttribute("category")) {
@@ -351,40 +355,46 @@ fun main() {
351355
}
352356

353357
"struct", "union" -> {
358+
val structContent = StringBuilder()
354359
val name = typeNode.getAttribute("name")
360+
val vendor = vendors.find { name.endsWith(it) }
361+
val packageName: String
362+
if (vendor != null) {
363+
val lowercase = vendor.lowercase()
364+
packageName = "$vulkanPackage.$lowercase.$category"
365+
} else {
366+
packageName = "$vulkanPackage.$category"
367+
}
368+
addedStructPackages.add(packageName)
355369
if (typeNode.hasAttribute("alias")) {
356370
val alias = typeNode.getAttribute("alias")
357-
structBuilder.appendLine("using $name = $alias;")
371+
aliasedStruct[name] = alias
372+
aliasedStructPackageName[name] = packageName
373+
aliasedStructCategory[name] = category
358374
} else {
359-
val vendor = vendors.find { name.endsWith(it) }
360-
val packageName: String
361-
if (vendor != null) {
362-
val lowercase = vendor.lowercase()
363-
packageName = "$vulkanPackage.$lowercase.$category"
364-
} else {
365-
packageName = "$vulkanPackage.$category"
366-
}
367-
addedStructPackages.add(packageName)
368-
structBuilder.appendLine("""using $name = $category $name { package "$packageName";""")
369375
val memberNodeList = typeNode.getElementsByTagName("member")
370376
for (i1 in 0 until memberNodeList.length) {
371377
val memberNode = memberNodeList.item(i1) as Element
372378
if (memberNode.hasAttribute("api") && memberNode.getAttribute("api") == "vulkansc") {
373379
continue
374380
}
375381
val childNodeList = memberNode.childNodes
376-
structBuilder.append(" ")
382+
structContent.append(" ")
377383
for (i2 in 0 until childNodeList.length) {
378384
when (val node = childNodeList.item(i2)) {
379-
is Text -> structBuilder.append(node.wholeText)
385+
is Text -> structContent.append(node.wholeText)
380386
is Element -> if (node.tagName != "comment") {
381-
structBuilder.append(node.textContent)
387+
structContent.append(node.textContent)
382388
}
383389
}
384390
}
385-
structBuilder.appendLine(";")
391+
structContent.appendLine(";")
386392
}
393+
394+
structBuilder.appendLine("""using $name = $category $name { package "$packageName";""")
395+
structBuilder.append(structContent)
387396
structBuilder.appendLine("};")
397+
appendedStructContent[name] = structContent.toString()
388398
}
389399
}
390400

@@ -433,6 +443,13 @@ fun main() {
433443
}
434444
}
435445

446+
// aliased struct
447+
aliasedStruct.forEach { (name, alias) ->
448+
structBuilder.appendLine("""using $name = ${aliasedStructCategory[name]} $name { package "${aliasedStructPackageName[name]}";""")
449+
structBuilder.append(appendedStructContent[alias] ?: throw IllegalStateException("$name -> $alias"))
450+
structBuilder.appendLine("};")
451+
}
452+
436453
// enums
437454
val enumsBuilder = StringBuilder()
438455
root.getElementsByTagName("enums").also { enumsNodeList ->

0 commit comments

Comments
 (0)