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)
0 commit comments