blob: 983031101b87736f2dffd4122e6f7d79f099f34d [file] [log] [blame]
Name
NV_multigpu_context
Name Strings
GLX_NV_multigpu_context
Contact
Ben Quest (bquest 'at' nvidia.com)
Contributors
Ben Quest, NVIDIA
Joshua Schnarr, NVIDIA
Ralf Biermann, NVIDIA
Ingo Esser, NVIDIA
Robert Menzel, NVIDIA
James Jones, NVIDIA
Notice
Copyright (c) 2019 NVIDIA
Status
Complete.
Version
Last Modified Date: 2019-05-17
Author Revision: 1
Number
OpenGL Extension #545
Dependencies
GLX_NV_multigpu_context is written against the GLX 1.4 and
GLX_ARB_create_context specifications. Both are required.
This extension interacts with NV_gpu_multicast.
Overview
This extension allows the creation of an OpenGL context in a multi-GPU
environment with a specified multi-GPU strategy (known as SLI mode) which
takes precedence over process-wide multi-GPU mode settings.
The multi-GPU mode denotes vendor specific techniques to allow distributed
rendering on multiple GPUs, further called AFR (alternate frame rendering)
and Multicast (as defined in NV_gpu_multicast).
OpenGL supports multiple contexts. The semantics of switching contexts
is generally left to window system binding APIs such as WGL, GLX and EGL.
The extension GLX_NV_multigpu_context allows to specify a preferred
multi-GPU rendering mode per context, thus context switching can also
switch the current multi-GPU rendering mode.
In addition to the modes described above, this extension allows creating
contexts in single mode to force all rendering to be done on a single GPU,
and multi-display multicast mode to allow multicast rendering on a
multi-display configuration where displays attached to multiple GPUs are
linked together in a desktop configuration spanning multiple GPUs.
The implementation is platform dependent and the actual multi-GPU rendering
mode of the created context may vary on different hardware and operation
system platforms.
New Procedures and Functions
None
New Tokens (GLX)
Accepted as an attribute name in the <*attrib_list> argument to
glXCreateContextAttribsARB:
GLX_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
Accepted as an attribute value for GLX_CONTEXT_MULTIGPU_ATTRIB_NV in
the <*attrib_list> argument to glXCreateContextAttribsARB:
GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
Additions to the GLX 1.4 Specification
This extension modifies language specified in the GLX_ARB_create_context
extension.
Add a new paragraph to the description of glXCreateContextAttribsARB:
"The attribute name GLX_CONTEXT_MULTIGPU_ATTRIB_NV indicates the
preferred multi-GPU rendering mode for the OpenGL context.
This specified mode precedes other selected configuration settings."
Add a new context creation error to glXCreateContextAttribsARB:
"If attribute GLX_CONTEXT_MULTIGPU_ATTRIB_NV does not describe a valid and
supported SLI rendering mode, BadValue is generated."
Append a new paragraph to the end of section 3.5 "Rendering Contexts":
"When multiple contexts created with a multigpu context attribute are being
used, glXMakeCurrent and glXMakeContextCurrent will return FALSE if the
GLXDrawable is already current with a context using a different multigpu
attribute."
GLX Errors
BadValue is generated if GLX_CONTEXT_MULTIGPU_ATTRIB_NV does not describe a
valid and supported SLI rendering mode.
GLXBadContextState is generated if glXMakeCurrent is called with a context
created with a different multigpu attribute than the context previously
current to the drawable.
GLX Protocol
None
New State
None
Issues
All non-window-system dependent issues described in the
WGL_NV_multigpu_context extension specification apply equally to
GLX_NV_multigpu_context.
Revision History
Rev. Date Author Changes
---- ---------- -------- ---------------------------------------------
1 2019-05-17 bquest Fork from WGL_NV_multigpu_context