Skip to content

Commit 5cc1ac9

Browse files
committed
v0.3.0
1 parent 4ac8eee commit 5cc1ac9

19 files changed

+1054
-703
lines changed

src/main/java/module-info.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
requires kotlin.reflect;
1515

1616
exports vkk;
17+
exports vkk._10.api;
1718
exports vkk._10.structs;
19+
exports vkk._11.api;
1820
exports vkk._11.structs;
1921
exports vkk.entities;
2022
// exports vkk.identifiers; empty

src/main/kotlin/vkk/_10/api/CommandBuffer_vk10.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package vkk._10.api
33
import glm_.vec3.Vec3i
44
import identifiers.CapabilitiesDevice
55
import identifiers.CommandBuffer
6-
import identifiers.write
76
import kool.*
87
import org.lwjgl.system.JNI.*
98
import org.lwjgl.system.MemoryStack

src/main/kotlin/vkk/_10/api/Device_vk10.kt

Lines changed: 678 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package vkk._10.api
2+
3+
import identifiers.CapabilitiesInstance
4+
import kool.adr
5+
import kool.longAdr
6+
import kool.utf8Adr
7+
import org.lwjgl.system.JNI.*
8+
import org.lwjgl.system.MemoryStack
9+
import org.lwjgl.system.MemoryUtil.NULL
10+
import org.lwjgl.system.Pointer
11+
import org.lwjgl.vulkan.VK10
12+
import vkk.*
13+
import vkk._10.structs.DebugReportCallbackCreateInfo
14+
import vkk.entities.VkDebugReportCallback
15+
16+
interface Instance_vk10 : Pointer {
17+
18+
val capabilities: CapabilitiesInstance
19+
20+
// --- [ vkCreateDebugReportCallbackEXT ] ---
21+
22+
infix fun MemoryStack.createDebugReportCallbackEXT(createInfo: DebugReportCallbackCreateInfo): VkDebugReportCallback =
23+
framed { VkDebugReportCallback(this.longAdr { VK_CHECK_RESULT(callPPPPI(adr, createInfo write this, NULL, it, capabilities.vkCreateDebugReportCallbackEXT)) }) }
24+
25+
infix fun createDebugReportCallbackEXT(createInfo: DebugReportCallbackCreateInfo): VkDebugReportCallback =
26+
stak { it createDebugReportCallbackEXT createInfo }
27+
28+
// --- [ vkDebugReportMessageEXT ] ---
29+
30+
fun MemoryStack.debugReportMessageEXT(flags: VkDebugReportFlagsEXT, objectType: VkDebugReportObjectTypeEXT, `object`: Long = VK10.VK_NULL_HANDLE,
31+
location: Long, messageCode: Int, pLayerPrefix: String, pMessage: String) =
32+
framed {
33+
callPJPPPV(
34+
adr, flags, objectType.i, `object`, location, messageCode, this.utf8Adr(pLayerPrefix),
35+
this.utf8Adr(pMessage), capabilities.vkCreateDebugReportCallbackEXT
36+
)
37+
}
38+
39+
fun debugReportMessageEXT(flags: VkDebugReportFlagsEXT, objectType: VkDebugReportObjectTypeEXT, `object`: Long = VK10.VK_NULL_HANDLE,
40+
location: Long, messageCode: Int, pLayerPrefix: String, pMessage: String) =
41+
stak { it.debugReportMessageEXT(flags, objectType, `object`, location, messageCode, pLayerPrefix, pMessage) }
42+
43+
// --- [ vkDestroyDebugReportCallbackEXT ] ---
44+
infix fun destroy(debugReportCallback: VkDebugReportCallback) =
45+
callPJPV(adr, debugReportCallback.L, NULL, capabilities.vkDestroyDebugReportCallbackEXT)
46+
47+
// --- [ vkDestroyInstance ] ---
48+
fun destroy() =
49+
callPPV(adr, NULL, capabilities.vkDestroyInstance)
50+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package vkk._10.api
2+
3+
import identifiers.CapabilitiesDevice
4+
import kool.adr
5+
import org.lwjgl.system.JNI
6+
import org.lwjgl.system.JNI.*
7+
import org.lwjgl.system.MemoryStack
8+
import org.lwjgl.system.Pointer
9+
import vkk.VkResult
10+
import vkk._10.structs.BindSparseInfo
11+
import vkk._10.structs.PresentInfoKHR
12+
import vkk._10.structs.SubmitInfo
13+
import vkk._10.structs.write
14+
import vkk.entities.VkFence
15+
import vkk.framed
16+
import vkk.stak
17+
18+
interface Queue_vk10 : Pointer {
19+
20+
val capabilities: CapabilitiesDevice
21+
22+
// --- [ vkQueueBindSparse ] ---
23+
24+
fun MemoryStack.bindSparse(bindInfos: Array<BindSparseInfo>, fence: VkFence = VkFence.NULL): VkResult =
25+
framed { VkResult(callPPJI(adr, bindInfos.size, bindInfos write this, fence.L, capabilities.vkQueueBindSparse)) }
26+
27+
fun bindSparse(bindInfos: Array<BindSparseInfo>, fence: VkFence = VkFence.NULL): VkResult =
28+
stak { it.bindSparse(bindInfos, fence) }
29+
30+
// --- [ vkQueuePresentKHR ] ---
31+
32+
infix fun MemoryStack.presentKHR(presentInfo: PresentInfoKHR): VkResult =
33+
framed { presentInfo.native(this) { pPresentInfo -> VkResult(callPPI(adr, pPresentInfo, capabilities.vkQueuePresentKHR)).apply { check() } } }
34+
35+
infix fun presentKHR(presentInfo: PresentInfoKHR): VkResult =
36+
stak { it presentKHR presentInfo }
37+
38+
// --- [ vkQueueSubmit ] ---
39+
40+
fun MemoryStack.submit(submit: SubmitInfo, fence: VkFence = VkFence.NULL): VkResult =
41+
framed { VkResult(callPPJI(adr, 1, submit write this, fence.L, capabilities.vkQueueSubmit)).apply { check() } }
42+
43+
fun submit(submit: SubmitInfo, fence: VkFence = VkFence.NULL): VkResult =
44+
stak { it.submit(submit, fence) }
45+
46+
// --- [ vkQueueWaitIdle ] ---
47+
fun waitIdle(): VkResult =
48+
VkResult(callPI(adr, capabilities.vkQueueWaitIdle)).apply { check() }
49+
}

src/main/kotlin/vkk/_10/structs/SubmitInfo.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package vkk._10.structs
22

33
import identifiers.CommandBuffer
4-
import identifiers.write
54
import kool.Adr
65
import kool.Ptr
76
import kool.toAdr
@@ -12,6 +11,7 @@ import org.lwjgl.vulkan.VkSubmitInfo.*
1211
import vkk.VkStructureType
1312
import vkk.entities.VkSemaphore
1413
import vkk.entities.VkSemaphore_Array
14+
import vkk.write
1515

1616
/**
1717
* Structure specifying a queue submit operation.
@@ -136,15 +136,15 @@ class SubmitInfo(
136136
nsType(adr, type.i)
137137
npNext(adr, next)
138138
nwaitSemaphoreCount(adr, waitSemaphoreCount)
139-
waitSemaphores?.let { memPutAddress(adr + PWAITSEMAPHORES, it.write(stack)) }
139+
waitSemaphores?.let { memPutAddress(adr + PWAITSEMAPHORES, it write stack) }
140140
waitDstStageMask?.let { memPutAddress(adr + PWAITDSTSTAGEMASK, it.toAdr(stack).adr) }
141141
commandBuffers?.let {
142142
ncommandBufferCount(adr, it.size)
143-
memPutAddress(adr + PCOMMANDBUFFERS, it.write(stack))
143+
memPutAddress(adr + PCOMMANDBUFFERS, it write stack)
144144
}
145145
signalSemaphores?.let {
146146
nsignalSemaphoreCount(adr, it.size)
147-
memPutAddress(adr + PSIGNALSEMAPHORES, it.write(stack))
147+
memPutAddress(adr + PSIGNALSEMAPHORES, it write stack)
148148
}
149149
return adr
150150
}

src/main/kotlin/vkk/_10/api/CommandBuffer_vk11.kt renamed to src/main/kotlin/vkk/_11/api/CommandBuffer_vk11.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package vkk._10.api
1+
package vkk._11.api
22

33
import glm_.vec3.Vec3i
44
import identifiers.CapabilitiesDevice
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
package vkk._11.api
2+
3+
import identifiers.CapabilitiesDevice
4+
import kool.*
5+
import org.lwjgl.system.JNI.*
6+
import org.lwjgl.system.MemoryStack
7+
import org.lwjgl.system.MemoryUtil.NULL
8+
import org.lwjgl.system.Pointer
9+
import org.lwjgl.vulkan.VkSparseImageMemoryRequirements2
10+
import vkk.*
11+
import vkk._10.structs.DescriptorSetLayoutCreateInfo
12+
import vkk._11.structs.*
13+
import vkk.entities.VkCommandPool
14+
import vkk.entities.VkDescriptorSet
15+
import vkk.entities.VkDescriptorUpdateTemplate
16+
import vkk.entities.VkSamplerYcbcrConversion
17+
18+
interface Device_vk11 : Pointer {
19+
20+
val capabilities: CapabilitiesDevice
21+
22+
// --- [ vkBindBufferMemory2 ] ---
23+
24+
infix fun MemoryStack.bindBufferMemory2(bindInfos: Array<BindBufferMemoryInfo>): VkResult =
25+
framed { nBindBufferMemory2(bindInfos.size, bindInfos write this).apply { check() } }
26+
27+
infix fun bindBufferMemory2(bindInfos: Array<BindBufferMemoryInfo>): VkResult =
28+
stak { it bindBufferMemory2 bindInfos }
29+
30+
31+
infix fun MemoryStack.bindBufferMemory2(bindInfo: BindBufferMemoryInfo): VkResult =
32+
framed { nBindBufferMemory2(1, bindInfo write this).apply { check() } }
33+
34+
infix fun bindBufferMemory2(bindInfo: BindBufferMemoryInfo): VkResult =
35+
stak { it bindBufferMemory2 bindInfo }
36+
37+
// --- [ vkBindImageMemory2 ] ---
38+
39+
infix fun MemoryStack.bindImageMemory2(bindInfos: Array<BindImageMemoryInfo>): VkResult =
40+
framed { nBindImageMemory2(bindInfos.size, bindInfos write this).apply { check() } }
41+
42+
infix fun bindImageMemory2(bindInfos: Array<BindImageMemoryInfo>): VkResult =
43+
stak { it bindImageMemory2 bindInfos }
44+
45+
46+
infix fun MemoryStack.bindImageMemory2(bindInfo: BindImageMemoryInfo): VkResult =
47+
framed { nBindImageMemory2(1, bindInfo write this).apply { check() } }
48+
49+
infix fun bindImageMemory2(bindInfo: BindImageMemoryInfo): VkResult =
50+
stak { it bindImageMemory2 bindInfo }
51+
52+
// --- [ vkCreateDescriptorUpdateTemplate ] ---
53+
54+
infix fun MemoryStack.createDescriptorUpdateTemplate(createInfo: DescriptorUpdateTemplateCreateInfo): VkDescriptorUpdateTemplate =
55+
framed { VkDescriptorUpdateTemplate(this.longAdr { callPPPPI(adr, createInfo write this, NULL, it, capabilities.vkCreateDescriptorUpdateTemplate) }) }
56+
57+
infix fun createDescriptorUpdateTemplate(createInfo: DescriptorUpdateTemplateCreateInfo): VkDescriptorUpdateTemplate =
58+
stak { it createDescriptorUpdateTemplate createInfo }
59+
60+
// --- [ vkCreateSamplerYcbcrConversion ] ---
61+
62+
infix fun MemoryStack.createSamplerYcbcrConversion(createInfo: SamplerYcbcrConversionCreateInfo): VkSamplerYcbcrConversion =
63+
framed { VkSamplerYcbcrConversion(this.longAdr { callPPPPI(adr, createInfo write this, NULL, it, capabilities.vkCreateSamplerYcbcrConversion) }) }
64+
65+
infix fun createSamplerYcbcrConversion(createInfo: SamplerYcbcrConversionCreateInfo): VkSamplerYcbcrConversion =
66+
stak { it createSamplerYcbcrConversion createInfo }
67+
68+
// --- [ vkDestroyDescriptorUpdateTemplate ] ---
69+
infix fun destroy(descriptorUpdateTemplate: VkDescriptorUpdateTemplate) =
70+
callPJPV(adr, descriptorUpdateTemplate.L, NULL, capabilities.vkDestroyDescriptorUpdateTemplate)
71+
72+
// --- [ vkDestroySamplerYcbcrConversion ] ---
73+
infix fun destroy(ycbcrConversion: VkSamplerYcbcrConversion) =
74+
callPJPV(adr, ycbcrConversion.L, NULL, capabilities.vkDestroySamplerYcbcrConversion)
75+
76+
// --- [ vkGetDescriptorSetLayoutSupport ] ---
77+
78+
infix fun MemoryStack.getDescriptorSetLayoutSupport(createInfo: DescriptorSetLayoutCreateInfo): DescriptorSetLayoutSupport =
79+
framed { DescriptorSetLayoutSupport.read(this) { callPPPV(adr, createInfo write this, it, capabilities.vkGetDescriptorSetLayoutSupport) } }
80+
81+
infix fun getDescriptorSetLayoutSupport(createInfo: DescriptorSetLayoutCreateInfo): DescriptorSetLayoutSupport =
82+
stak { it getDescriptorSetLayoutSupport createInfo }
83+
84+
// --- [ vkGetDeviceGroupPeerMemoryFeatures ] ---
85+
86+
fun MemoryStack.getGroupPeerMemoryFeatures(heapIndex: Int, localDeviceIndex: Int, remoteDeviceIndex: Int): VkPeerMemoryFeatureFlags =
87+
framed { this.intAdr { callPPV(adr, heapIndex, localDeviceIndex, remoteDeviceIndex, it, capabilities.vkGetDeviceGroupPeerMemoryFeatures) } }
88+
89+
fun getGroupPeerMemoryFeatures(heapIndex: Int, localDeviceIndex: Int, remoteDeviceIndex: Int): VkPeerMemoryFeatureFlags =
90+
stak { it.getGroupPeerMemoryFeatures(heapIndex, localDeviceIndex, remoteDeviceIndex) }
91+
92+
// --- [ vkGetImageMemoryRequirements2 ] ---
93+
94+
infix fun MemoryStack.getImageMemoryRequirements2(info: ImageMemoryRequirementsInfo2): MemoryRequirements2 =
95+
framed { MemoryRequirements2.read(this) { callPPPV(adr, info write this, it, capabilities.vkGetImageMemoryRequirements2) } }
96+
97+
infix fun getImageMemoryRequirements2(info: ImageMemoryRequirementsInfo2): MemoryRequirements2 =
98+
stak { it getImageMemoryRequirements2 info }
99+
100+
// --- [ vkGetBufferMemoryRequirements2 ] ---
101+
102+
infix fun MemoryStack.getBufferMemoryRequirements2(info: BufferMemoryRequirementsInfo2): MemoryRequirements2 =
103+
framed { MemoryRequirements2.read(this) { callPPPV(adr, info write this, it, capabilities.vkGetBufferMemoryRequirements2) } }
104+
105+
infix fun getBufferMemoryRequirements2(info: BufferMemoryRequirementsInfo2): MemoryRequirements2 =
106+
stak { it getBufferMemoryRequirements2 info }
107+
108+
// --- [ vkGetImageSparseMemoryRequirements2 ] ---
109+
110+
infix fun MemoryStack.getImageSparseMemoryRequirements2(info: ImageSparseMemoryRequirementsInfo2): Array<SparseImageMemoryRequirements2> =
111+
framed {
112+
val pSparseMemoryRequirementCount = this.mInt()
113+
val pInfo = info write this
114+
nGetImageSparseMemoryRequirements2(pInfo, pSparseMemoryRequirementCount)
115+
val sparseMemoryRequirementCount = pSparseMemoryRequirementCount[0]
116+
val sparseMemoryRequirements = this.ncalloc(VkSparseImageMemoryRequirements2.ALIGNOF, sparseMemoryRequirementCount, VkSparseImageMemoryRequirements2.SIZEOF)
117+
nGetImageSparseMemoryRequirements2(pInfo, pSparseMemoryRequirementCount, sparseMemoryRequirements)
118+
Array(sparseMemoryRequirementCount) {
119+
SparseImageMemoryRequirements2(BytePtr(sparseMemoryRequirements + it * VkSparseImageMemoryRequirements2.SIZEOF))
120+
}
121+
}
122+
123+
infix fun getImageSparseMemoryRequirements2(info: ImageSparseMemoryRequirementsInfo2): Array<SparseImageMemoryRequirements2> =
124+
stak { it getImageSparseMemoryRequirements2 info }
125+
126+
// --- [ vkTrimCommandPool ] ---
127+
fun trimCommandPool(commandPool: VkCommandPool, flags: VkCommandPoolTrimFlags = 0) =
128+
callPJV(adr, commandPool.L, flags, capabilities.vkTrimCommandPool)
129+
130+
// --- [ vkUpdateDescriptorSetWithTemplate ] ---
131+
fun updateDescriptorSetWithTemplate(descriptorSet: VkDescriptorSet, descriptorUpdateTemplate: VkDescriptorUpdateTemplate, pData: Ptr) =
132+
callPJJPV(adr, descriptorSet.L, descriptorUpdateTemplate.L, pData, capabilities.vkUpdateDescriptorSetWithTemplate)
133+
}
134+
135+
private inline fun Device_vk11.nBindBufferMemory2(bindInfoCount: Int, pBindInfos: Ptr): VkResult =
136+
VkResult(callPPI(adr, bindInfoCount, pBindInfos, capabilities.vkBindBufferMemory2))
137+
138+
private inline fun Device_vk11.nBindImageMemory2(bindInfoCount: Int, pBindInfos: Ptr): VkResult =
139+
VkResult(callPPI(adr, bindInfoCount, pBindInfos, capabilities.vkBindImageMemory2))
140+
141+
private inline fun Device_vk11.nGetImageSparseMemoryRequirements2(pInfo: Ptr, pSparseMemoryRequirementCount: IntPtr, pSparseMemoryRequirements: Ptr = NULL) =
142+
callPPPPV(adr, pInfo, pSparseMemoryRequirementCount.adr, pSparseMemoryRequirements, capabilities.vkGetImageSparseMemoryRequirements2)

src/main/kotlin/vkk/_10/api/PhysicalDevice_vk11.kt renamed to src/main/kotlin/vkk/_11/api/PhysicalDevice_vk11.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package vkk._10.api
1+
package vkk._11.api
22

33
import identifiers.CapabilitiesInstance
44
import kool.*

src/main/kotlin/vkk/_11/structs/DescriptorSetLayoutSupport.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class DescriptorSetLayoutSupport(
5757
)
5858

5959
companion object {
60-
inline fun <R> read(block: (Ptr) -> R): DescriptorSetLayoutSupport = stak { read(it, block) }
60+
// inline fun <R> read(block: (Ptr) -> R): DescriptorSetLayoutSupport = stak { read(it, block) }
6161
inline fun <R> read(stack: MemoryStack, block: (Ptr) -> R): DescriptorSetLayoutSupport {
6262
val ptr = stack.ncalloc(ALIGNOF, 1, SIZEOF)
6363
block(ptr)

0 commit comments

Comments
 (0)