Top Description Fields Constructors Methods
org.lwjgl.opengl

public Class NVGPUMulticast

extends Object
Class Inheritance
Imports
java.nio.*, org.lwjgl.system.*

Native bindings to the NV_gpu_multicast extension.

This extension enables novel multi-GPU rendering techniques by providing application control over a group of linked GPUs with identical hardware configuration.

Multi-GPU rendering techniques fall into two categories: implicit and explicit. Existing explicit approaches like WGL_NV_gpu_affinity have two main drawbacks: CPU overhead and application complexity. An application must manage one context per GPU and multi-pump the API stream. Implicit multi-GPU rendering techniques avoid these issues by broadcasting rendering from one context to multiple GPUs. Common implicit approaches include alternate-frame rendering (AFR), split-frame rendering (SFR) and multi-GPU anti-aliasing. They each have drawbacks. AFR scales nicely but interacts poorly with inter-frame dependencies. SFR can improve latency but has challenges with offscreen rendering and scaling of vertex processing. With multi-GPU anti-aliasing, each GPU renders the same content with alternate sample positions and the driver blends the result to improve quality. This also has issues with offscreen rendering and can conflict with other anti-aliasing techniques.

These issues with implicit multi-GPU rendering all have the same root cause: the driver lacks adequate knowledge to accelerate every application. To resolve this, NV_gpu_multicast provides fine-grained, explicit application control over multiple GPUs with a single context.

Key points:

Requires ARB_copy_image and EXT_direct_state_access.

Field Summary

Modifier and TypeField and Description
public static final int
GL_MULTICAST_GPUS_NV

Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev.

public static final int
GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV

Accepted by the pname parameter of GetMultisamplefv.

public static final int
GL_PER_GPU_STORAGE_BIT_NV

Accepted in the flags parameter of BufferStorage and NamedBufferStorageEXT.

public static final int
GL_PER_GPU_STORAGE_NV

Accepted as a value for pname for the TexParameter{if}, TexParameter{if}v, TextureParameter{if}, TextureParameter{if}v, MultiTexParameter{if}EXT and MultiTexParameter{if}vEXT commands and for the value parameter of GetTexParameter{if}v, GetTextureParameter{if}vEXT and GetMultiTexParameter{if}vEXT.

public static final int
GL_RENDER_GPU_MASK_NV

Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev.

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public static native void
public static native void
glMulticastBlitFramebufferNV(int srcGpu, int dstGpu, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter)

public static void
glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, ByteBuffer data)

public static void
glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, ShortBuffer data)

public static void
glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, IntBuffer data)

public static void
glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, FloatBuffer data)

public static void
glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, DoubleBuffer data)

public static void
glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, short[] data)

Array version of: MulticastBufferSubDataNV

public static void
glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, int[] data)

Array version of: MulticastBufferSubDataNV

public static void
glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, float[] data)

Array version of: MulticastBufferSubDataNV

public static void
glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, double[] data)

Array version of: MulticastBufferSubDataNV

public static native void
glMulticastCopyBufferSubDataNV(int readGpu, int writeGpuMask, int readBuffer, int writeBuffer, long readOffset, long writeOffset, long size)

public static native void
glMulticastCopyImageSubDataNV(int srcGpu, int dstGpuMask, int srcName, int srcTarget, int srcLevel, int srcX, int srxY, int srcZ, int dstName, int dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int srcWidth, int srcHeight, int srcDepth)

public static void
glMulticastFramebufferSampleLocationsfvNV(int gpu, int framebuffer, int start, FloatBuffer v)

public static void
glMulticastFramebufferSampleLocationsfvNV(int gpu, int framebuffer, int start, float[] v)

Array version of: MulticastFramebufferSampleLocationsfvNV

public static long
glMulticastGetQueryObjecti64NV(int gpu, int id, int pname)

public static void
glMulticastGetQueryObjecti64vNV(int gpu, int id, int pname, LongBuffer params)

public static void
glMulticastGetQueryObjecti64vNV(int gpu, int id, int pname, long[] params)

Array version of: MulticastGetQueryObjecti64vNV

public static int
glMulticastGetQueryObjectiNV(int gpu, int id, int pname)

public static void
glMulticastGetQueryObjectivNV(int gpu, int id, int pname, IntBuffer params)

public static void
glMulticastGetQueryObjectivNV(int gpu, int id, int pname, int[] params)

Array version of: MulticastGetQueryObjectivNV

public static long
glMulticastGetQueryObjectui64NV(int gpu, int id, int pname)

public static void
glMulticastGetQueryObjectui64vNV(int gpu, int id, int pname, LongBuffer params)

public static void
glMulticastGetQueryObjectui64vNV(int gpu, int id, int pname, long[] params)

Array version of: MulticastGetQueryObjectui64vNV

public static int
glMulticastGetQueryObjectuiNV(int gpu, int id, int pname)

public static void
glMulticastGetQueryObjectuivNV(int gpu, int id, int pname, IntBuffer params)

public static void
glMulticastGetQueryObjectuivNV(int gpu, int id, int pname, int[] params)

Array version of: MulticastGetQueryObjectuivNV

public static native void
glMulticastWaitSyncNV(int signalGpu, int waitGpuMask)

public static native void
glRenderGpuMaskNV(int mask)

Restricts render commands to a specific set of GPUs.

public static native void
nglMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, long size, long data)

public static native void
nglMulticastFramebufferSampleLocationsfvNV(int gpu, int framebuffer, int start, int count, long v)

public static native void
nglMulticastGetQueryObjecti64vNV(int gpu, int id, int pname, long params)

public static native void
nglMulticastGetQueryObjectivNV(int gpu, int id, int pname, long params)

public static native void
nglMulticastGetQueryObjectui64vNV(int gpu, int id, int pname, long params)

public static native void
nglMulticastGetQueryObjectuivNV(int gpu, int id, int pname, long params)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

GL_MULTICAST_GPUS_NVback to summary
public static final int GL_MULTICAST_GPUS_NV

Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev.

GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NVback to summary
public static final int GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV

Accepted by the pname parameter of GetMultisamplefv.

GL_PER_GPU_STORAGE_BIT_NVback to summary
public static final int GL_PER_GPU_STORAGE_BIT_NV

Accepted in the flags parameter of BufferStorage and NamedBufferStorageEXT.

GL_PER_GPU_STORAGE_NVback to summary
public static final int GL_PER_GPU_STORAGE_NV

Accepted as a value for pname for the TexParameter{if}, TexParameter{if}v, TextureParameter{if}, TextureParameter{if}v, MultiTexParameter{if}EXT and MultiTexParameter{if}vEXT commands and for the value parameter of GetTexParameter{if}v, GetTextureParameter{if}vEXT and GetMultiTexParameter{if}vEXT.

GL_RENDER_GPU_MASK_NVback to summary
public static final int GL_RENDER_GPU_MASK_NV

Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev.

Constructor Detail

NVGPUMulticastback to summary
protected NVGPUMulticast()

Method Detail

glMulticastBarrierNVback to summary
public static native void glMulticastBarrierNV()
glMulticastBlitFramebufferNVback to summary
public static native void glMulticastBlitFramebufferNV(int srcGpu, int dstGpu, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter)
glMulticastBufferSubDataNVback to summary
public static void glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, ByteBuffer data)
glMulticastBufferSubDataNVback to summary
public static void glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, ShortBuffer data)
glMulticastBufferSubDataNVback to summary
public static void glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, IntBuffer data)
glMulticastBufferSubDataNVback to summary
public static void glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, FloatBuffer data)
glMulticastBufferSubDataNVback to summary
public static void glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, DoubleBuffer data)
glMulticastBufferSubDataNVback to summary
public static void glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, short[] data)

Array version of: MulticastBufferSubDataNV

glMulticastBufferSubDataNVback to summary
public static void glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, int[] data)

Array version of: MulticastBufferSubDataNV

glMulticastBufferSubDataNVback to summary
public static void glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, float[] data)

Array version of: MulticastBufferSubDataNV

glMulticastBufferSubDataNVback to summary
public static void glMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, double[] data)

Array version of: MulticastBufferSubDataNV

glMulticastCopyBufferSubDataNVback to summary
public static native void glMulticastCopyBufferSubDataNV(int readGpu, int writeGpuMask, int readBuffer, int writeBuffer, long readOffset, long writeOffset, long size)
glMulticastCopyImageSubDataNVback to summary
public static native void glMulticastCopyImageSubDataNV(int srcGpu, int dstGpuMask, int srcName, int srcTarget, int srcLevel, int srcX, int srxY, int srcZ, int dstName, int dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int srcWidth, int srcHeight, int srcDepth)
glMulticastFramebufferSampleLocationsfvNVback to summary
public static void glMulticastFramebufferSampleLocationsfvNV(int gpu, int framebuffer, int start, FloatBuffer v)
glMulticastFramebufferSampleLocationsfvNVback to summary
public static void glMulticastFramebufferSampleLocationsfvNV(int gpu, int framebuffer, int start, float[] v)

Array version of: MulticastFramebufferSampleLocationsfvNV

glMulticastGetQueryObjecti64NVback to summary
public static long glMulticastGetQueryObjecti64NV(int gpu, int id, int pname)
Annotations
@NativeType:void
glMulticastGetQueryObjecti64vNVback to summary
public static void glMulticastGetQueryObjecti64vNV(int gpu, int id, int pname, LongBuffer params)
glMulticastGetQueryObjecti64vNVback to summary
public static void glMulticastGetQueryObjecti64vNV(int gpu, int id, int pname, long[] params)

Array version of: MulticastGetQueryObjecti64vNV

glMulticastGetQueryObjectiNVback to summary
public static int glMulticastGetQueryObjectiNV(int gpu, int id, int pname)
Annotations
@NativeType:void
glMulticastGetQueryObjectivNVback to summary
public static void glMulticastGetQueryObjectivNV(int gpu, int id, int pname, IntBuffer params)
glMulticastGetQueryObjectivNVback to summary
public static void glMulticastGetQueryObjectivNV(int gpu, int id, int pname, int[] params)

Array version of: MulticastGetQueryObjectivNV

glMulticastGetQueryObjectui64NVback to summary
public static long glMulticastGetQueryObjectui64NV(int gpu, int id, int pname)
Annotations
@NativeType:void
glMulticastGetQueryObjectui64vNVback to summary
public static void glMulticastGetQueryObjectui64vNV(int gpu, int id, int pname, LongBuffer params)
glMulticastGetQueryObjectui64vNVback to summary
public static void glMulticastGetQueryObjectui64vNV(int gpu, int id, int pname, long[] params)

Array version of: MulticastGetQueryObjectui64vNV

glMulticastGetQueryObjectuiNVback to summary
public static int glMulticastGetQueryObjectuiNV(int gpu, int id, int pname)
Annotations
@NativeType:void
glMulticastGetQueryObjectuivNVback to summary
public static void glMulticastGetQueryObjectuivNV(int gpu, int id, int pname, IntBuffer params)
glMulticastGetQueryObjectuivNVback to summary
public static void glMulticastGetQueryObjectuivNV(int gpu, int id, int pname, int[] params)

Array version of: MulticastGetQueryObjectuivNV

glMulticastWaitSyncNVback to summary
public static native void glMulticastWaitSyncNV(int signalGpu, int waitGpuMask)
glRenderGpuMaskNVback to summary
public static native void glRenderGpuMaskNV(int mask)

Restricts render commands to a specific set of GPUs.

nglMulticastBufferSubDataNVback to summary
public static native void nglMulticastBufferSubDataNV(int gpuMask, int buffer, long offset, long size, long data)
nglMulticastFramebufferSampleLocationsfvNVback to summary
public static native void nglMulticastFramebufferSampleLocationsfvNV(int gpu, int framebuffer, int start, int count, long v)
nglMulticastGetQueryObjecti64vNVback to summary
public static native void nglMulticastGetQueryObjecti64vNV(int gpu, int id, int pname, long params)
nglMulticastGetQueryObjectivNVback to summary
public static native void nglMulticastGetQueryObjectivNV(int gpu, int id, int pname, long params)
nglMulticastGetQueryObjectui64vNVback to summary
public static native void nglMulticastGetQueryObjectui64vNV(int gpu, int id, int pname, long params)
nglMulticastGetQueryObjectuivNVback to summary
public static native void nglMulticastGetQueryObjectuivNV(int gpu, int id, int pname, long params)