Changed: Support for WGL_NV_gpu_affinity extension
This commit is contained in:
parent
ffbf1e8804
commit
5babd5ab59
2 changed files with 60 additions and 1 deletions
|
@ -519,6 +519,14 @@ PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC nwglMakeAssociatedContextCurrentAMD;
|
|||
PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC nwglGetCurrentAssociatedContextAMD;
|
||||
PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC nwglBlitContextFramebufferAMD;
|
||||
|
||||
// WGL_NV_gpu_affinity
|
||||
//====================
|
||||
PFNWGLENUMGPUSNVPROC nwglEnumGpusNV;
|
||||
PFNWGLENUMGPUDEVICESNVPROC nwglEnumGpuDevicesNV;
|
||||
PFNWGLCREATEAFFINITYDCNVPROC nwglCreateAffinityDCNV;
|
||||
PFNWGLENUMGPUSFROMAFFINITYDCNVPROC nwglEnumGpusFromAffinityDCNV;
|
||||
PFNWGLDELETEDCNVPROC nwglDeleteDCNV;
|
||||
|
||||
#elif defined(NL_OS_MAC)
|
||||
#elif defined(NL_OS_UNIX)
|
||||
|
||||
|
@ -1846,7 +1854,23 @@ static bool setupWGLAMDGPUAssociation(const char *glext)
|
|||
return true;
|
||||
}
|
||||
|
||||
// *********************************
|
||||
// ***************************************************************************
|
||||
static bool setupWGLNVGPUAssociation(const char *glext)
|
||||
{
|
||||
H_AUTO_OGL(setupWGLNVGPUAssociation);
|
||||
CHECK_EXT("WGL_NV_gpu_affinity");
|
||||
|
||||
#if !defined(USE_OPENGLES) && defined(NL_OS_WINDOWS)
|
||||
CHECK_ADDRESS(PFNWGLENUMGPUSNVPROC, wglEnumGpusNV);
|
||||
CHECK_ADDRESS(PFNWGLENUMGPUDEVICESNVPROC, wglEnumGpuDevicesNV);
|
||||
CHECK_ADDRESS(PFNWGLCREATEAFFINITYDCNVPROC, wglCreateAffinityDCNV);
|
||||
CHECK_ADDRESS(PFNWGLENUMGPUSFROMAFFINITYDCNVPROC, wglEnumGpusFromAffinityDCNV);
|
||||
CHECK_ADDRESS(PFNWGLDELETEDCNVPROC, wglDeleteDCNV);
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool setupGLXEXTSwapControl(const char *glext)
|
||||
{
|
||||
H_AUTO_OGL(setupGLXEXTSwapControl);
|
||||
|
@ -1972,6 +1996,31 @@ bool registerWGlExtensions(CGlExtensions &ext, HDC hDC)
|
|||
delete [] uGPUIDs;
|
||||
}
|
||||
|
||||
ext.WGLNVGPUAffinity = setupWGLNVGPUAssociation(glext);
|
||||
|
||||
if (ext.WGLNVGPUAffinity)
|
||||
{
|
||||
uint i = 0;
|
||||
|
||||
HGPUNV hGPU;
|
||||
|
||||
while(nwglEnumGpusNV(i, &hGPU))
|
||||
{
|
||||
uint j = 0;
|
||||
|
||||
PGPU_DEVICE lpGpuDevice = NULL;
|
||||
|
||||
while(nwglEnumGpuDevicesNV(hGPU, j, lpGpuDevice))
|
||||
{
|
||||
nlinfo("Device: %s - %s - flags: %u", lpGpuDevice->DeviceName, lpGpuDevice->DeviceString, lpGpuDevice->Flags);
|
||||
|
||||
++j;
|
||||
}
|
||||
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#elif defined(NL_OS_MAC)
|
||||
|
|
|
@ -123,6 +123,9 @@ struct CGlExtensions
|
|||
// WGL_AMD_gpu_association
|
||||
bool WGLAMDGPUAssociation;
|
||||
|
||||
// WGL_NV_gpu_affinity
|
||||
bool WGLNVGPUAffinity;
|
||||
|
||||
public:
|
||||
|
||||
/// \name Disable Hardware feature. False by default. setuped by IDriver
|
||||
|
@ -793,6 +796,13 @@ extern PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC nwglMakeAssociatedContextCurren
|
|||
extern PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC nwglGetCurrentAssociatedContextAMD;
|
||||
extern PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC nwglBlitContextFramebufferAMD;
|
||||
|
||||
// WGL_NV_gpu_affinity
|
||||
//====================
|
||||
extern PFNWGLENUMGPUSNVPROC nwglEnumGpusNV;
|
||||
extern PFNWGLENUMGPUDEVICESNVPROC nwglEnumGpuDevicesNV;
|
||||
extern PFNWGLCREATEAFFINITYDCNVPROC nwglCreateAffinityDCNV;
|
||||
extern PFNWGLENUMGPUSFROMAFFINITYDCNVPROC nwglEnumGpusFromAffinityDCNV;
|
||||
extern PFNWGLDELETEDCNVPROC nwglDeleteDCNV;
|
||||
|
||||
#elif defined(NL_OS_MAC)
|
||||
#elif defined(NL_OS_UNIX)
|
||||
|
|
Loading…
Reference in a new issue