- xr_input.c/h: an OpenXR action set (aim pose, trigger/select click, a menu-toggle button) plus ray/quad hit-testing, and a visible laser-pointer line drawn from the controller toward the hit point. - xr_menu.c/h + MenuOverlay.java: a second composition-layer quad, toggled by a controller button, showing an off-screen, never-attached Android View tree (one "Keyboard" button so far) driven by synthetic touch events computed from the laser ray's hit UV. - Migrate gl4es from a prebuilt binary baked into the Docker build-image to a vendored source snapshot (android/gl4es-src/) compiled from source at APK build time via CMake add_subdirectory(), patched through a new android/gl4es-patches/ (mirrors the existing engine-patches/ pattern). This was needed to track down and fix a bug hit while building the menu: gl4es's fixed-pipeline emulation (fpe.c) was unconditionally substituting its own shader onto the menu's draw call (fpe_ReleventState() always sets alphafunc to a nonzero sentinel, so its fpe_IsEmpty() check could never see the state as empty), making the menu quad show the game's own rendering instead of its own content. Fixed by routing the menu's blit through a real glBlitFramebuffer() call instead of a shader-based draw, which gl4es's fpe.c has nothing to intercept - documented in README.md's new "Debugging notes" section. - Renumber android/engine-patches/ to close the gap left by removing an unrelated diagnostic-only patch, and strip investigation-journal comments and dead diagnostic code (temporary tracing, env-var probes) left over from finding the bug above. - Restructure README.md into numbered sections, document every engine/gl4es patch, add Android Studio dev/testing-cycle instructions, and generalize Quest-specific wording to any OpenXR headset. Update NOTICE.txt to match (gl4es is now vendored/patched source, not a prebuilt binary; add the OpenXR-SDK loader).
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
3DL_stereo_control:
|
||||
wglSetStereoEmitterState3DL: [BOOL, HDC hDC, UINT uState]
|
||||
AMD_gpu_association:
|
||||
wglBlitContextFramebufferAMD: [VOID, HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint
|
||||
srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield
|
||||
mask, GLenum filter]
|
||||
wglCreateAssociatedContextAMD: [HGLRC, UINT id]
|
||||
wglCreateAssociatedContextAttribsAMD: [HGLRC, UINT id, HGLRC hShareContext, const
|
||||
int *attribList]
|
||||
wglDeleteAssociatedContextAMD: [BOOL, HGLRC hglrc]
|
||||
wglGetContextGPUIDAMD: [UINT, HGLRC hglrc]
|
||||
wglGetCurrentAssociatedContextAMD: [HGLRC]
|
||||
wglGetGPUIDsAMD: [UINT, UINT maxCount, UINT *ids]
|
||||
wglGetGPUInfoAMD: [INT, UINT id, int property, GLenum dataType, UINT size, void
|
||||
*data]
|
||||
wglMakeAssociatedContextCurrentAMD: [BOOL, HGLRC hglrc]
|
||||
ARB_buffer_region:
|
||||
wglCreateBufferRegionARB: [HANDLE, HDC hDC, int iLayerPlane, UINT uType]
|
||||
wglDeleteBufferRegionARB: [VOID, HANDLE hRegion]
|
||||
wglRestoreBufferRegionARB: [BOOL, HANDLE hRegion, int x, int y, int width, int height,
|
||||
int xSrc, int ySrc]
|
||||
wglSaveBufferRegionARB: [BOOL, HANDLE hRegion, int x, int y, int width, int height]
|
||||
ARB_create_context:
|
||||
wglCreateContextAttribsARB: [HGLRC, HDC hDC, HGLRC hShareContext, const int *attribList]
|
||||
ARB_extensions_string:
|
||||
wglGetExtensionsStringARB: [const char *, HDC hdc]
|
||||
ARB_make_current_read:
|
||||
wglGetCurrentReadDCARB: [HDC]
|
||||
wglMakeContextCurrentARB: [BOOL, HDC hDrawDC, HDC hReadDC, HGLRC hglrc]
|
||||
ARB_pbuffer:
|
||||
wglCreatePbufferARB: [HPBUFFERARB, HDC hDC, int iPixelFormat, int iWidth, int iHeight,
|
||||
const int *piAttribList]
|
||||
wglDestroyPbufferARB: [BOOL, HPBUFFERARB hPbuffer]
|
||||
wglGetPbufferDCARB: [HDC, HPBUFFERARB hPbuffer]
|
||||
wglQueryPbufferARB: [BOOL, HPBUFFERARB hPbuffer, int iAttribute, int *piValue]
|
||||
wglReleasePbufferDCARB: [int, HPBUFFERARB hPbuffer, HDC hDC]
|
||||
ARB_pixel_format:
|
||||
wglChoosePixelFormatARB: [BOOL, HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList,
|
||||
UINT nMaxFormats, int *piFormats, UINT *nNumFormats]
|
||||
wglGetPixelFormatAttribfvARB: [BOOL, HDC hdc, int iPixelFormat, int iLayerPlane,
|
||||
UINT nAttributes, const int *piAttributes, FLOAT *pfValues]
|
||||
wglGetPixelFormatAttribivARB: [BOOL, HDC hdc, int iPixelFormat, int iLayerPlane,
|
||||
UINT nAttributes, const int *piAttributes, int *piValues]
|
||||
ARB_render_texture:
|
||||
wglBindTexImageARB: [BOOL, HPBUFFERARB hPbuffer, int iBuffer]
|
||||
wglReleaseTexImageARB: [BOOL, HPBUFFERARB hPbuffer, int iBuffer]
|
||||
wglSetPbufferAttribARB: [BOOL, HPBUFFERARB hPbuffer, const int *piAttribList]
|
||||
EXT_display_color_table:
|
||||
wglBindDisplayColorTableEXT: [GLboolean, GLushort id]
|
||||
wglCreateDisplayColorTableEXT: [GLboolean, GLushort id]
|
||||
wglDestroyDisplayColorTableEXT: [VOID, GLushort id]
|
||||
wglLoadDisplayColorTableEXT: [GLboolean, const GLushort *table, GLuint length]
|
||||
EXT_extensions_string:
|
||||
wglGetExtensionsStringEXT: [const char *]
|
||||
EXT_make_current_read:
|
||||
wglGetCurrentReadDCEXT: [HDC]
|
||||
wglMakeContextCurrentEXT: [BOOL, HDC hDrawDC, HDC hReadDC, HGLRC hglrc]
|
||||
EXT_pbuffer:
|
||||
wglCreatePbufferEXT: [HPBUFFEREXT, HDC hDC, int iPixelFormat, int iWidth, int iHeight,
|
||||
const int *piAttribList]
|
||||
wglDestroyPbufferEXT: [BOOL, HPBUFFEREXT hPbuffer]
|
||||
wglGetPbufferDCEXT: [HDC, HPBUFFEREXT hPbuffer]
|
||||
wglQueryPbufferEXT: [BOOL, HPBUFFEREXT hPbuffer, int iAttribute, int *piValue]
|
||||
wglReleasePbufferDCEXT: [int, HPBUFFEREXT hPbuffer, HDC hDC]
|
||||
EXT_pixel_format:
|
||||
wglChoosePixelFormatEXT: [BOOL, HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList,
|
||||
UINT nMaxFormats, int *piFormats, UINT *nNumFormats]
|
||||
wglGetPixelFormatAttribfvEXT: [BOOL, HDC hdc, int iPixelFormat, int iLayerPlane,
|
||||
UINT nAttributes, int *piAttributes, FLOAT *pfValues]
|
||||
wglGetPixelFormatAttribivEXT: [BOOL, HDC hdc, int iPixelFormat, int iLayerPlane,
|
||||
UINT nAttributes, int *piAttributes, int *piValues]
|
||||
EXT_swap_control:
|
||||
wglGetSwapIntervalEXT: [int]
|
||||
wglSwapIntervalEXT: [BOOL, int interval]
|
||||
I3D_digital_video_control:
|
||||
wglGetDigitalVideoParametersI3D: [BOOL, HDC hDC, int iAttribute, int *piValue]
|
||||
wglSetDigitalVideoParametersI3D: [BOOL, HDC hDC, int iAttribute, const int *piValue]
|
||||
I3D_gamma:
|
||||
wglGetGammaTableI3D: [BOOL, HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen,
|
||||
USHORT *puBlue]
|
||||
wglGetGammaTableParametersI3D: [BOOL, HDC hDC, int iAttribute, int *piValue]
|
||||
wglSetGammaTableI3D: [BOOL, HDC hDC, int iEntries, const USHORT *puRed, const USHORT
|
||||
*puGreen, const USHORT *puBlue]
|
||||
wglSetGammaTableParametersI3D: [BOOL, HDC hDC, int iAttribute, const int *piValue]
|
||||
I3D_genlock:
|
||||
wglDisableGenlockI3D: [BOOL, HDC hDC]
|
||||
wglEnableGenlockI3D: [BOOL, HDC hDC]
|
||||
wglGenlockSampleRateI3D: [BOOL, HDC hDC, UINT uRate]
|
||||
wglGenlockSourceDelayI3D: [BOOL, HDC hDC, UINT uDelay]
|
||||
wglGenlockSourceEdgeI3D: [BOOL, HDC hDC, UINT uEdge]
|
||||
wglGenlockSourceI3D: [BOOL, HDC hDC, UINT uSource]
|
||||
wglGetGenlockSampleRateI3D: [BOOL, HDC hDC, UINT *uRate]
|
||||
wglGetGenlockSourceDelayI3D: [BOOL, HDC hDC, UINT *uDelay]
|
||||
wglGetGenlockSourceEdgeI3D: [BOOL, HDC hDC, UINT *uEdge]
|
||||
wglGetGenlockSourceI3D: [BOOL, HDC hDC, UINT *uSource]
|
||||
wglIsEnabledGenlockI3D: [BOOL, HDC hDC, BOOL *pFlag]
|
||||
wglQueryGenlockMaxSourceDelayI3D: [BOOL, HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay]
|
||||
I3D_image_buffer:
|
||||
wglAssociateImageBufferEventsI3D: [BOOL, HDC hDC, const HANDLE *pEvent, const LPVOID
|
||||
*pAddress, const DWORD *pSize, UINT count]
|
||||
wglCreateImageBufferI3D: [LPVOID, HDC hDC, DWORD dwSize, UINT uFlags]
|
||||
wglDestroyImageBufferI3D: [BOOL, HDC hDC, LPVOID pAddress]
|
||||
wglReleaseImageBufferEventsI3D: [BOOL, HDC hDC, const LPVOID *pAddress, UINT count]
|
||||
I3D_swap_frame_lock:
|
||||
wglDisableFrameLockI3D: [BOOL]
|
||||
wglEnableFrameLockI3D: [BOOL]
|
||||
wglIsEnabledFrameLockI3D: [BOOL, BOOL *pFlag]
|
||||
wglQueryFrameLockMasterI3D: [BOOL, BOOL *pFlag]
|
||||
I3D_swap_frame_usage:
|
||||
wglBeginFrameTrackingI3D: [BOOL]
|
||||
wglEndFrameTrackingI3D: [BOOL]
|
||||
wglGetFrameUsageI3D: [BOOL, float *pUsage]
|
||||
wglQueryFrameTrackingI3D: [BOOL, DWORD *pFrameCount, DWORD *pMissedFrames, float
|
||||
*pLastMissedUsage]
|
||||
NV_DX_interop:
|
||||
wglDXCloseDeviceNV: [BOOL, HANDLE hDevice]
|
||||
wglDXLockObjectsNV: [BOOL, HANDLE hDevice, GLint count, HANDLE *hObjects]
|
||||
wglDXObjectAccessNV: [BOOL, HANDLE hObject, GLenum access]
|
||||
wglDXOpenDeviceNV: [HANDLE, void *dxDevice]
|
||||
wglDXRegisterObjectNV: [HANDLE, HANDLE hDevice, void *dxObject, GLuint name, GLenum
|
||||
type, GLenum access]
|
||||
wglDXSetResourceShareHandleNV: [BOOL, void *dxObject, HANDLE shareHandle]
|
||||
wglDXUnlockObjectsNV: [BOOL, HANDLE hDevice, GLint count, HANDLE *hObjects]
|
||||
wglDXUnregisterObjectNV: [BOOL, HANDLE hDevice, HANDLE hObject]
|
||||
NV_copy_image:
|
||||
wglCopyImageSubDataNV: [BOOL, HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint
|
||||
srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName,
|
||||
GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei
|
||||
width, GLsizei height, GLsizei depth]
|
||||
NV_gpu_affinity:
|
||||
wglCreateAffinityDCNV: [HDC, const HGPUNV *phGpuList]
|
||||
wglDeleteDCNV: [BOOL, HDC hdc]
|
||||
wglEnumGpuDevicesNV: [BOOL, HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice]
|
||||
wglEnumGpusFromAffinityDCNV: [BOOL, HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu]
|
||||
wglEnumGpusNV: [BOOL, UINT iGpuIndex, HGPUNV *phGpu]
|
||||
NV_present_video:
|
||||
wglBindVideoDeviceNV: [BOOL, HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV
|
||||
hVideoDevice, const int *piAttribList]
|
||||
wglEnumerateVideoDevicesNV: [int, HDC hDC, HVIDEOOUTPUTDEVICENV *phDeviceList]
|
||||
wglQueryCurrentContextNV: [BOOL, int iAttribute, int *piValue]
|
||||
NV_swap_group:
|
||||
wglBindSwapBarrierNV: [BOOL, GLuint group, GLuint barrier]
|
||||
wglJoinSwapGroupNV: [BOOL, HDC hDC, GLuint group]
|
||||
wglQueryFrameCountNV: [BOOL, HDC hDC, GLuint *count]
|
||||
wglQueryMaxSwapGroupsNV: [BOOL, HDC hDC, GLuint *maxGroups, GLuint *maxBarriers]
|
||||
wglQuerySwapGroupNV: [BOOL, HDC hDC, GLuint *group, GLuint *barrier]
|
||||
wglResetFrameCountNV: [BOOL, HDC hDC]
|
||||
NV_vertex_array_range:
|
||||
wglAllocateMemoryNV: [void *, GLsizei size, GLfloat readfreq, GLfloat writefreq,
|
||||
GLfloat priority]
|
||||
wglFreeMemoryNV: [void *, void *pointer]
|
||||
NV_video_capture:
|
||||
wglBindVideoCaptureDeviceNV: [BOOL, UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice]
|
||||
wglEnumerateVideoCaptureDevicesNV: [UINT, HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList]
|
||||
wglLockVideoCaptureDeviceNV: [BOOL, HDC hDc, HVIDEOINPUTDEVICENV hDevice]
|
||||
wglQueryVideoCaptureDeviceNV: [BOOL, HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute,
|
||||
int *piValue]
|
||||
wglReleaseVideoCaptureDeviceNV: [BOOL, HDC hDc, HVIDEOINPUTDEVICENV hDevice]
|
||||
NV_video_output:
|
||||
wglBindVideoImageNV: [BOOL, HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer]
|
||||
wglGetVideoDeviceNV: [BOOL, HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice]
|
||||
wglGetVideoInfoNV: [BOOL, HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer,
|
||||
unsigned long *pulCounterOutputVideo]
|
||||
wglReleaseVideoDeviceNV: [BOOL, HPVIDEODEV hVideoDevice]
|
||||
wglReleaseVideoImageNV: [BOOL, HPBUFFERARB hPbuffer, int iVideoBuffer]
|
||||
wglSendPbufferToVideoNV: [BOOL, HPBUFFERARB hPbuffer, int iBufferType, unsigned
|
||||
long *pulCounterPbuffer, BOOL bBlock]
|
||||
OML_sync_control:
|
||||
wglGetMscRateOML: [BOOL, HDC hdc, INT32 *numerator, INT32 *denominator]
|
||||
wglGetSyncValuesOML: [BOOL, HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc]
|
||||
wglSwapBuffersMscOML: [INT64, HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder]
|
||||
wglSwapLayerBuffersMscOML: [INT64, HDC hdc, int fuPlanes, INT64 target_msc, INT64
|
||||
divisor, INT64 remainder]
|
||||
wglWaitForMscOML: [BOOL, HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder,
|
||||
INT64 *ust, INT64 *msc, INT64 *sbc]
|
||||
wglWaitForSbcOML: [BOOL, HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64
|
||||
*sbc]
|
||||
Reference in New Issue
Block a user