15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    NV_multigpu_context
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GLX_NV_multigpu_context
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Ben Quest (bquest 'at' nvidia.com)
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciContributors
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Ben Quest, NVIDIA
165bd8deadSopenharmony_ci    Joshua Schnarr, NVIDIA
175bd8deadSopenharmony_ci    Ralf Biermann, NVIDIA
185bd8deadSopenharmony_ci    Ingo Esser, NVIDIA
195bd8deadSopenharmony_ci    Robert Menzel, NVIDIA
205bd8deadSopenharmony_ci    James Jones, NVIDIA
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciNotice
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    Copyright (c) 2019 NVIDIA
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ciStatus
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ci    Complete.
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ciVersion
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ci    Last Modified Date:         2019-05-17
335bd8deadSopenharmony_ci    Author Revision:            1
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ciNumber
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci    OpenGL Extension #545
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ciDependencies
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    GLX_NV_multigpu_context is written against the GLX 1.4 and
425bd8deadSopenharmony_ci    GLX_ARB_create_context specifications. Both are required.
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ci    This extension interacts with NV_gpu_multicast.
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ciOverview
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ci    This extension allows the creation of an OpenGL context in a multi-GPU
495bd8deadSopenharmony_ci    environment with a specified multi-GPU strategy (known as SLI mode) which
505bd8deadSopenharmony_ci    takes precedence over process-wide multi-GPU mode settings.
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    The multi-GPU mode denotes vendor specific techniques to allow distributed
535bd8deadSopenharmony_ci    rendering on multiple GPUs, further called AFR (alternate frame rendering)
545bd8deadSopenharmony_ci    and Multicast (as defined in NV_gpu_multicast).
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ci    OpenGL supports multiple contexts. The semantics of switching contexts
575bd8deadSopenharmony_ci    is generally left to window system binding APIs such as WGL, GLX and EGL.
585bd8deadSopenharmony_ci    The extension GLX_NV_multigpu_context allows to specify a preferred
595bd8deadSopenharmony_ci    multi-GPU rendering mode per context, thus context switching can also
605bd8deadSopenharmony_ci    switch the current multi-GPU rendering mode.
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci    In addition to the modes described above, this extension allows creating
635bd8deadSopenharmony_ci    contexts in single mode to force all rendering to be done on a single GPU,
645bd8deadSopenharmony_ci    and multi-display multicast mode to allow multicast rendering on a
655bd8deadSopenharmony_ci    multi-display configuration where displays attached to multiple GPUs are
665bd8deadSopenharmony_ci    linked together in a desktop configuration spanning multiple GPUs.
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ci    The implementation is platform dependent and the actual multi-GPU rendering
695bd8deadSopenharmony_ci    mode of the created context may vary on different hardware and operation
705bd8deadSopenharmony_ci    system platforms.
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ciNew Procedures and Functions
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ci    None
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ciNew Tokens (GLX)
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci    Accepted as an attribute name in the <*attrib_list> argument to
795bd8deadSopenharmony_ci    glXCreateContextAttribsARB:
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci        GLX_CONTEXT_MULTIGPU_ATTRIB_NV                         0x20AA
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ci    Accepted as an attribute value for GLX_CONTEXT_MULTIGPU_ATTRIB_NV in
845bd8deadSopenharmony_ci    the <*attrib_list> argument to glXCreateContextAttribsARB:
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ci        GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV                  0x20AB
875bd8deadSopenharmony_ci        GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV                     0x20AC
885bd8deadSopenharmony_ci        GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV               0x20AD
895bd8deadSopenharmony_ci        GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ciAdditions to the GLX 1.4 Specification
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci    This extension modifies language specified in the GLX_ARB_create_context
945bd8deadSopenharmony_ci    extension.
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci    Add a new paragraph to the description of glXCreateContextAttribsARB:
975bd8deadSopenharmony_ci
985bd8deadSopenharmony_ci    "The attribute name GLX_CONTEXT_MULTIGPU_ATTRIB_NV indicates the
995bd8deadSopenharmony_ci    preferred multi-GPU rendering mode for the OpenGL context.
1005bd8deadSopenharmony_ci    This specified mode precedes other selected configuration settings."
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci    Add a new context creation error to glXCreateContextAttribsARB:
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci    "If attribute GLX_CONTEXT_MULTIGPU_ATTRIB_NV does not describe a valid and
1055bd8deadSopenharmony_ci    supported SLI rendering mode, BadValue is generated."
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci    Append a new paragraph to the end of section 3.5 "Rendering Contexts":
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci    "When multiple contexts created with a multigpu context attribute are being
1105bd8deadSopenharmony_ci    used, glXMakeCurrent and glXMakeContextCurrent will return FALSE if the
1115bd8deadSopenharmony_ci    GLXDrawable is already current with a context using a different multigpu
1125bd8deadSopenharmony_ci    attribute."
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ciGLX Errors
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci    BadValue is generated if GLX_CONTEXT_MULTIGPU_ATTRIB_NV does not describe a
1175bd8deadSopenharmony_ci    valid and supported SLI rendering mode.
1185bd8deadSopenharmony_ci
1195bd8deadSopenharmony_ci    GLXBadContextState is generated if glXMakeCurrent is called with a context
1205bd8deadSopenharmony_ci    created with a different multigpu attribute than the context previously
1215bd8deadSopenharmony_ci    current to the drawable.
1225bd8deadSopenharmony_ci
1235bd8deadSopenharmony_ciGLX Protocol
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci    None
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ciNew State
1285bd8deadSopenharmony_ci
1295bd8deadSopenharmony_ci    None
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ciIssues
1325bd8deadSopenharmony_ci
1335bd8deadSopenharmony_ci    All non-window-system dependent issues described in the
1345bd8deadSopenharmony_ci    WGL_NV_multigpu_context extension specification apply equally to
1355bd8deadSopenharmony_ci    GLX_NV_multigpu_context.
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ciRevision History
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci Rev.   Date      Author    Changes
1405bd8deadSopenharmony_ci ---- ----------  --------  ---------------------------------------------
1415bd8deadSopenharmony_ci   1  2019-05-17  bquest    Fork from WGL_NV_multigpu_context
1425bd8deadSopenharmony_ci
143