Download lib/python3.9/site-packages/OpenGL/WGL/NV/gpu_affinity.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 3.69 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/OpenGL/WGL/NV/gpu_affinity.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/site-packages/OpenGL/WGL/NV/gpu_affinity.py
-
curl -L -o gpu_affinity.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/OpenGL/WGL/NV/gpu_affinity.py
3.69 kB
| '''OpenGL extension NV.gpu_affinity | |
| This module customises the behaviour of the | |
| OpenGL.raw.WGL.NV.gpu_affinity to provide a more | |
| Python-friendly API | |
| Overview (from the spec) | |
| On systems with more than one GPU it is desirable to be able to | |
| select which GPU(s) in the system become the target for OpenGL | |
| rendering commands. This extension introduces the concept of a GPU | |
| affinity mask. OpenGL rendering commands are directed to the | |
| GPU(s) specified by the affinity mask. GPU affinity is immutable. | |
| Once set, it cannot be changed. | |
| This extension also introduces the concept called affinity-DC. An | |
| affinity-DC is a device context with a GPU affinity mask embedded | |
| in it. This restricts the device context to only allow OpenGL | |
| commands to be sent to the GPU(s) in the affinity mask. | |
| Handles for the GPUs present in a system are enumerated with the | |
| command wglEnumGpusNV. An affinity-DC is created by calling | |
| wglCreateAffinityDCNV. This function takes a list of GPU handles, | |
| which make up the affinity mask. An affinity-DC can also | |
| indirectly be created by obtaining a DC from a pBuffer handle, by | |
| calling wglGetPbufferDC, which in turn was created from an | |
| affinity-DC by calling wglCreatePbuffer. | |
| A context created from an affinity DC will inherit the GPU | |
| affinity mask from the DC. Once inherited, it cannot be changed. | |
| Such a context is called an affinity-context. This restricts the | |
| affinity-context to only allow OpenGL commands to be sent to those | |
| GPU(s) in its affinity mask. Once created, this context can be | |
| used in two ways: | |
| 1. Make the affinity-context current to an affinity-DC. This | |
| will only succeed if the context's affinity mask is the same | |
| as the affinity mask in the DC. There is no window | |
| associated with an affinity DC, therefore this is a way to | |
| achieve off-screen rendering to an OpenGL context. This can | |
| either be rendering to a pBuffer, or an application created | |
| framebuffer object. In the former case, the affinity-mask of | |
| the pBuffer DC, which is obtained from a pBuffer handle, | |
| will be the same affinity-mask as the DC used to created the | |
| pBuffer handle. In the latter case, the default framebuffer | |
| object will be incomplete because there is no window-system | |
| created framebuffer. Therefore, the application will have to | |
| create and bind a framebuffer object as the target for | |
| rendering. | |
| 2. Make the affinity-context current to a DC obtained from a | |
| window. Rendering only happens to the sub rectangles(s) of | |
| the window that overlap the parts of the desktop that are | |
| displayed by the GPU(s) in the affinity mask of the context. | |
| Sharing OpenGL objects between affinity-contexts, by calling | |
| wglShareLists, will only succeed if the contexts have identical | |
| affinity masks. | |
| It is not possible to make a regular context (one without an | |
| affinity mask) current to an affinity-DC. This would mean a way | |
| for a context to inherit affinity information, which makes the | |
| context affinity mutable, which is counter to the premise of this | |
| extension. | |
| The official definition of this extension is available here: | |
| http://www.opengl.org/registry/specs/NV/gpu_affinity.txt | |
| ''' | |
| from OpenGL import platform, constant, arrays | |
| from OpenGL import extensions, wrapper | |
| import ctypes | |
| from OpenGL.raw.WGL import _types, _glgets | |
| from OpenGL.raw.WGL.NV.gpu_affinity import * | |
| from OpenGL.raw.WGL.NV.gpu_affinity import _EXTENSION_NAME | |
| def glInitGpuAffinityNV(): | |
| '''Return boolean indicating whether this extension is available''' | |
| from OpenGL import extensions | |
| return extensions.hasGLExtension( _EXTENSION_NAME ) | |
| ### END AUTOGENERATED SECTION |