Skip to content

Commit

Permalink
fix(VK/XR): external function pointer types
Browse files Browse the repository at this point in the history
  • Loading branch information
Spasi committed Aug 26, 2023
1 parent 67b64ad commit 213cd58
Show file tree
Hide file tree
Showing 11 changed files with 36 additions and 397 deletions.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
* struct XrGraphicsBindingEGLMNDX {
* XrStructureType {@link #type};
* void const * {@link #next};
* {@link XrEglGetProcAddressMNDXI PFN_xrEglGetProcAddressMNDX} {@link #getProcAddress};
* PFN_xrEglGetProcAddressMNDX {@link #getProcAddress};
* EGLDisplay {@link #display};
* EGLConfig {@link #config};
* EGLContext {@link #context};
Expand Down Expand Up @@ -123,7 +123,7 @@ public XrGraphicsBindingEGLMNDX(ByteBuffer container) {
public long next() { return nnext(address()); }
/** a valid function pointer to {@code eglGetProcAddress}. */
@NativeType("PFN_xrEglGetProcAddressMNDX")
public XrEglGetProcAddressMNDX getProcAddress() { return ngetProcAddress(address()); }
public long getProcAddress() { return ngetProcAddress(address()); }
/** a valid EGL {@code EGLDisplay}. */
@NativeType("EGLDisplay")
public long display() { return ndisplay(address()); }
Expand All @@ -141,7 +141,7 @@ public XrGraphicsBindingEGLMNDX(ByteBuffer container) {
/** Sets the specified value to the {@link #next} field. */
public XrGraphicsBindingEGLMNDX next(@NativeType("void const *") long value) { nnext(address(), value); return this; }
/** Sets the specified value to the {@link #getProcAddress} field. */
public XrGraphicsBindingEGLMNDX getProcAddress(@NativeType("PFN_xrEglGetProcAddressMNDX") XrEglGetProcAddressMNDXI value) { ngetProcAddress(address(), value); return this; }
public XrGraphicsBindingEGLMNDX getProcAddress(@NativeType("PFN_xrEglGetProcAddressMNDX") long value) { ngetProcAddress(address(), value); return this; }
/** Sets the specified value to the {@link #display} field. */
public XrGraphicsBindingEGLMNDX display(@NativeType("EGLDisplay") long value) { ndisplay(address(), value); return this; }
/** Sets the specified value to the {@link #config} field. */
Expand All @@ -153,7 +153,7 @@ public XrGraphicsBindingEGLMNDX(ByteBuffer container) {
public XrGraphicsBindingEGLMNDX set(
int type,
long next,
XrEglGetProcAddressMNDXI getProcAddress,
long getProcAddress,
long display,
long config,
long context
Expand Down Expand Up @@ -298,7 +298,7 @@ public static XrGraphicsBindingEGLMNDX.Buffer calloc(int capacity, MemoryStack s
/** Unsafe version of {@link #next}. */
public static long nnext(long struct) { return memGetAddress(struct + XrGraphicsBindingEGLMNDX.NEXT); }
/** Unsafe version of {@link #getProcAddress}. */
public static XrEglGetProcAddressMNDX ngetProcAddress(long struct) { return XrEglGetProcAddressMNDX.create(memGetAddress(struct + XrGraphicsBindingEGLMNDX.GETPROCADDRESS)); }
public static long ngetProcAddress(long struct) { return memGetAddress(struct + XrGraphicsBindingEGLMNDX.GETPROCADDRESS); }
/** Unsafe version of {@link #display}. */
public static long ndisplay(long struct) { return memGetAddress(struct + XrGraphicsBindingEGLMNDX.DISPLAY); }
/** Unsafe version of {@link #config}. */
Expand All @@ -310,8 +310,8 @@ public static XrGraphicsBindingEGLMNDX.Buffer calloc(int capacity, MemoryStack s
public static void ntype(long struct, int value) { UNSAFE.putInt(null, struct + XrGraphicsBindingEGLMNDX.TYPE, value); }
/** Unsafe version of {@link #next(long) next}. */
public static void nnext(long struct, long value) { memPutAddress(struct + XrGraphicsBindingEGLMNDX.NEXT, value); }
/** Unsafe version of {@link #getProcAddress(XrEglGetProcAddressMNDXI) getProcAddress}. */
public static void ngetProcAddress(long struct, XrEglGetProcAddressMNDXI value) { memPutAddress(struct + XrGraphicsBindingEGLMNDX.GETPROCADDRESS, value.address()); }
/** Unsafe version of {@link #getProcAddress(long) getProcAddress}. */
public static void ngetProcAddress(long struct, long value) { memPutAddress(struct + XrGraphicsBindingEGLMNDX.GETPROCADDRESS, check(value)); }
/** Unsafe version of {@link #display(long) display}. */
public static void ndisplay(long struct, long value) { memPutAddress(struct + XrGraphicsBindingEGLMNDX.DISPLAY, check(value)); }
/** Unsafe version of {@link #config(long) config}. */
Expand Down Expand Up @@ -377,7 +377,7 @@ protected XrGraphicsBindingEGLMNDX getElementFactory() {
public long next() { return XrGraphicsBindingEGLMNDX.nnext(address()); }
/** @return the value of the {@link XrGraphicsBindingEGLMNDX#getProcAddress} field. */
@NativeType("PFN_xrEglGetProcAddressMNDX")
public XrEglGetProcAddressMNDX getProcAddress() { return XrGraphicsBindingEGLMNDX.ngetProcAddress(address()); }
public long getProcAddress() { return XrGraphicsBindingEGLMNDX.ngetProcAddress(address()); }
/** @return the value of the {@link XrGraphicsBindingEGLMNDX#display} field. */
@NativeType("EGLDisplay")
public long display() { return XrGraphicsBindingEGLMNDX.ndisplay(address()); }
Expand All @@ -395,7 +395,7 @@ protected XrGraphicsBindingEGLMNDX getElementFactory() {
/** Sets the specified value to the {@link XrGraphicsBindingEGLMNDX#next} field. */
public XrGraphicsBindingEGLMNDX.Buffer next(@NativeType("void const *") long value) { XrGraphicsBindingEGLMNDX.nnext(address(), value); return this; }
/** Sets the specified value to the {@link XrGraphicsBindingEGLMNDX#getProcAddress} field. */
public XrGraphicsBindingEGLMNDX.Buffer getProcAddress(@NativeType("PFN_xrEglGetProcAddressMNDX") XrEglGetProcAddressMNDXI value) { XrGraphicsBindingEGLMNDX.ngetProcAddress(address(), value); return this; }
public XrGraphicsBindingEGLMNDX.Buffer getProcAddress(@NativeType("PFN_xrEglGetProcAddressMNDX") long value) { XrGraphicsBindingEGLMNDX.ngetProcAddress(address(), value); return this; }
/** Sets the specified value to the {@link XrGraphicsBindingEGLMNDX#display} field. */
public XrGraphicsBindingEGLMNDX.Buffer display(@NativeType("EGLDisplay") long value) { XrGraphicsBindingEGLMNDX.ndisplay(address(), value); return this; }
/** Sets the specified value to the {@link XrGraphicsBindingEGLMNDX#config} field. */
Expand Down
26 changes: 0 additions & 26 deletions modules/lwjgl/openxr/src/templates/kotlin/openxr/ExtensionTypes.kt
Original file line number Diff line number Diff line change
Expand Up @@ -174,32 +174,6 @@ val PFN_xrDebugUtilsMessengerCallbackEXT = Module.OPENXR.callback {
}
}

val PFN_xrEglGetProcAddressMNDX = Module.OPENXR.callback {
void.p(
"XrEglGetProcAddressMNDX",
"typedef of eglGetProcAddress.",

charUTF8.const.p("name", "specifies the name of the function to return."),

nativeType = "PFN_xrEglGetProcAddressMNDX"
) {
documentation =
"""
typedef of eglGetProcAddress.

<h5>C Specification</h5>
<pre><code>
￿typedef void *(*PFN_xrEglGetProcAddressMNDX)(const char *name);</code></pre>

<h5>Description</h5>
eglGetProcAddress returns the address of the client API or EGL function named by procname. For details please see <a href="https://registry.khronos.org/EGL/sdk/docs/man/html/eglGetProcAddress.xhtml">https://registry.khronos.org/EGL/sdk/docs/man/html/eglGetProcAddress.xhtml</a>

<h5>See Also</h5>
##XrGraphicsBindingEGLMNDX
"""
}
}

// Struct types
val XrCompositionLayerCubeKHR = struct(Module.OPENXR, "XrCompositionLayerCubeKHR", parentStruct = XrCompositionLayerBaseHeader) {
documentation =
Expand Down
5 changes: 2 additions & 3 deletions modules/lwjgl/openxr/src/templates/kotlin/openxr/XRBase.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@ val XrSystemId = XR_DEFINE_ATOM("XrSystemId")
val XrTime = typedef(uint64_t, "XrTime")
val XrVersion = typedef(uint64_t, "XrVersion")

val PFN_xrVoidFunction = typedef(opaque_p, "PFN_xrVoidFunction")

val PFNEGLGETPROCADDRESSPROC = "PFNEGLGETPROCADDRESSPROC".handle
val PFN_xrVoidFunction = "PFN_xrVoidFunction".handle
val PFN_xrEglGetProcAddressMNDX = "PFN_xrEglGetProcAddressMNDX".handle

// TODO:
val wchar_t = CharType("wchar_t", CharMapping.UTF16)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.lwjgl.*;
import org.lwjgl.system.*;

import static org.lwjgl.system.Checks.*;
import static org.lwjgl.system.MemoryUtil.*;
import static org.lwjgl.system.MemoryStack.*;

Expand All @@ -36,7 +37,7 @@
* VkStructureType {@link #sType};
* void * {@link #pNext};
* VkDirectDriverLoadingFlagsLUNARG {@link #flags};
* {@link VkGetInstanceProcAddrLUNARGI PFN_vkGetInstanceProcAddrLUNARG} {@link #pfnGetInstanceProcAddr};
* PFN_vkGetInstanceProcAddrLUNARG {@link #pfnGetInstanceProcAddr};
* }</code></pre>
*/
public class VkDirectDriverLoadingInfoLUNARG extends Struct<VkDirectDriverLoadingInfoLUNARG> implements NativeResource {
Expand Down Expand Up @@ -103,9 +104,8 @@ public VkDirectDriverLoadingInfoLUNARG(ByteBuffer container) {
@NativeType("VkDirectDriverLoadingFlagsLUNARG")
public int flags() { return nflags(address()); }
/** a {@link VkGetInstanceProcAddrLUNARG} pointer to the driver {@link VK10#vkGetInstanceProcAddr GetInstanceProcAddr} function. */
@Nullable
@NativeType("PFN_vkGetInstanceProcAddrLUNARG")
public VkGetInstanceProcAddrLUNARG pfnGetInstanceProcAddr() { return npfnGetInstanceProcAddr(address()); }
public long pfnGetInstanceProcAddr() { return npfnGetInstanceProcAddr(address()); }

/** Sets the specified value to the {@link #sType} field. */
public VkDirectDriverLoadingInfoLUNARG sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
Expand All @@ -116,14 +116,14 @@ public VkDirectDriverLoadingInfoLUNARG(ByteBuffer container) {
/** Sets the specified value to the {@link #flags} field. */
public VkDirectDriverLoadingInfoLUNARG flags(@NativeType("VkDirectDriverLoadingFlagsLUNARG") int value) { nflags(address(), value); return this; }
/** Sets the specified value to the {@link #pfnGetInstanceProcAddr} field. */
public VkDirectDriverLoadingInfoLUNARG pfnGetInstanceProcAddr(@Nullable @NativeType("PFN_vkGetInstanceProcAddrLUNARG") VkGetInstanceProcAddrLUNARGI value) { npfnGetInstanceProcAddr(address(), value); return this; }
public VkDirectDriverLoadingInfoLUNARG pfnGetInstanceProcAddr(@NativeType("PFN_vkGetInstanceProcAddrLUNARG") long value) { npfnGetInstanceProcAddr(address(), value); return this; }

/** Initializes this struct with the specified values. */
public VkDirectDriverLoadingInfoLUNARG set(
int sType,
long pNext,
int flags,
VkGetInstanceProcAddrLUNARGI pfnGetInstanceProcAddr
long pfnGetInstanceProcAddr
) {
sType(sType);
pNext(pNext);
Expand Down Expand Up @@ -265,16 +265,25 @@ public static VkDirectDriverLoadingInfoLUNARG.Buffer calloc(int capacity, Memory
/** Unsafe version of {@link #flags}. */
public static int nflags(long struct) { return UNSAFE.getInt(null, struct + VkDirectDriverLoadingInfoLUNARG.FLAGS); }
/** Unsafe version of {@link #pfnGetInstanceProcAddr}. */
@Nullable public static VkGetInstanceProcAddrLUNARG npfnGetInstanceProcAddr(long struct) { return VkGetInstanceProcAddrLUNARG.createSafe(memGetAddress(struct + VkDirectDriverLoadingInfoLUNARG.PFNGETINSTANCEPROCADDR)); }
public static long npfnGetInstanceProcAddr(long struct) { return memGetAddress(struct + VkDirectDriverLoadingInfoLUNARG.PFNGETINSTANCEPROCADDR); }

/** Unsafe version of {@link #sType(int) sType}. */
public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkDirectDriverLoadingInfoLUNARG.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
public static void npNext(long struct, long value) { memPutAddress(struct + VkDirectDriverLoadingInfoLUNARG.PNEXT, value); }
/** Unsafe version of {@link #flags(int) flags}. */
public static void nflags(long struct, int value) { UNSAFE.putInt(null, struct + VkDirectDriverLoadingInfoLUNARG.FLAGS, value); }
/** Unsafe version of {@link #pfnGetInstanceProcAddr(VkGetInstanceProcAddrLUNARGI) pfnGetInstanceProcAddr}. */
public static void npfnGetInstanceProcAddr(long struct, @Nullable VkGetInstanceProcAddrLUNARGI value) { memPutAddress(struct + VkDirectDriverLoadingInfoLUNARG.PFNGETINSTANCEPROCADDR, memAddressSafe(value)); }
/** Unsafe version of {@link #pfnGetInstanceProcAddr(long) pfnGetInstanceProcAddr}. */
public static void npfnGetInstanceProcAddr(long struct, long value) { memPutAddress(struct + VkDirectDriverLoadingInfoLUNARG.PFNGETINSTANCEPROCADDR, check(value)); }

/**
* Validates pointer members that should not be {@code NULL}.
*
* @param struct the struct to validate
*/
public static void validate(long struct) {
check(memGetAddress(struct + VkDirectDriverLoadingInfoLUNARG.PFNGETINSTANCEPROCADDR));
}

// -----------------------------------

Expand Down Expand Up @@ -324,9 +333,8 @@ protected VkDirectDriverLoadingInfoLUNARG getElementFactory() {
@NativeType("VkDirectDriverLoadingFlagsLUNARG")
public int flags() { return VkDirectDriverLoadingInfoLUNARG.nflags(address()); }
/** @return the value of the {@link VkDirectDriverLoadingInfoLUNARG#pfnGetInstanceProcAddr} field. */
@Nullable
@NativeType("PFN_vkGetInstanceProcAddrLUNARG")
public VkGetInstanceProcAddrLUNARG pfnGetInstanceProcAddr() { return VkDirectDriverLoadingInfoLUNARG.npfnGetInstanceProcAddr(address()); }
public long pfnGetInstanceProcAddr() { return VkDirectDriverLoadingInfoLUNARG.npfnGetInstanceProcAddr(address()); }

/** Sets the specified value to the {@link VkDirectDriverLoadingInfoLUNARG#sType} field. */
public VkDirectDriverLoadingInfoLUNARG.Buffer sType(@NativeType("VkStructureType") int value) { VkDirectDriverLoadingInfoLUNARG.nsType(address(), value); return this; }
Expand All @@ -337,7 +345,7 @@ protected VkDirectDriverLoadingInfoLUNARG getElementFactory() {
/** Sets the specified value to the {@link VkDirectDriverLoadingInfoLUNARG#flags} field. */
public VkDirectDriverLoadingInfoLUNARG.Buffer flags(@NativeType("VkDirectDriverLoadingFlagsLUNARG") int value) { VkDirectDriverLoadingInfoLUNARG.nflags(address(), value); return this; }
/** Sets the specified value to the {@link VkDirectDriverLoadingInfoLUNARG#pfnGetInstanceProcAddr} field. */
public VkDirectDriverLoadingInfoLUNARG.Buffer pfnGetInstanceProcAddr(@Nullable @NativeType("PFN_vkGetInstanceProcAddrLUNARG") VkGetInstanceProcAddrLUNARGI value) { VkDirectDriverLoadingInfoLUNARG.npfnGetInstanceProcAddr(address(), value); return this; }
public VkDirectDriverLoadingInfoLUNARG.Buffer pfnGetInstanceProcAddr(@NativeType("PFN_vkGetInstanceProcAddrLUNARG") long value) { VkDirectDriverLoadingInfoLUNARG.npfnGetInstanceProcAddr(address(), value); return this; }

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,10 @@ public static VkDirectDriverLoadingListLUNARG.Buffer calloc(int capacity, Memory
* @param struct the struct to validate
*/
public static void validate(long struct) {
check(memGetAddress(struct + VkDirectDriverLoadingListLUNARG.PDRIVERS));
int driverCount = ndriverCount(struct);
long pDrivers = memGetAddress(struct + VkDirectDriverLoadingListLUNARG.PDRIVERS);
check(pDrivers);
validate(pDrivers, driverCount, VkDirectDriverLoadingInfoLUNARG.SIZEOF, VkDirectDriverLoadingInfoLUNARG::validate);
}

// -----------------------------------
Expand Down
Loading

0 comments on commit 213cd58

Please sign in to comment.